00:00:00Ini adalah Valor, alat sumber terbuka untuk mengelola variabel lingkungan yang memudahkan Anda
00:00:04agar tidak perlu lagi menyimpan rahasia teks biasa di disk dan bekerja dengan mengurai variabel lingkungan
00:00:10secara lokal atau melalui pengelola kata sandi seperti 1Password, Bitwarden, AWS, dan banyak lagi dengan menggunakan
00:00:16skema type-safe dan kemudian menyuntikkan rahasia Anda ke dalam aplikasi saat runtime, membuat file .env
00:00:21Anda aman untuk AI dan bahkan untuk diunggah secara publik ke GitHub. Tapi bagaimana cara kerjanya
00:00:27dan ada apa dengan sintaksis aneh ini? Klik subscribe dan mari kita bahas.
00:00:31Berapa kali Anda memulai peran dev baru, mendapatkan akses ke kode, menjalankannya secara lokal,
00:00:39dan ternyata tidak berhasil hanya karena Anda kekurangan file .env yang harus didapat dari pengembang lain
00:00:45atau semacam penyimpanan terenkripsi, dan Anda harus melalui proses ini berulang kali
00:00:50setiap kali file .env tersebut diperbarui. Inilah masalah yang ingin diselesaikan oleh Valor dan juga untuk memperbaiki
00:00:56masalah agen AI yang disuntikkan prompt yang mengambil rahasia yang tidak seharusnya mereka akses. Mari kita
00:01:02lihat cara kerjanya. Jadi, ini adalah proyek kecil yang sedang saya kerjakan yang menghasilkan artikel dari
00:01:06video Twitter menggunakan Whisper OpenAI untuk mentranskripsi video dan menggunakan Claude untuk menulis artikel.
00:01:12Tapi kita akan mulai dengan sesuatu yang sederhana dan menggunakan Valor untuk mengubah nomor port. Jadi, dengan Valor
00:01:17yang sudah terinstal, kita seharusnya memiliki file skema .env yang saat ini kosong. Ini akan menjadi sumber
00:01:23kebenaran untuk semua variabel lingkungan kita dan seharusnya bisa dikirim ke GitHub di
00:01:28repositori publik. Kita akan mulai dengan menambahkan variabel lingkungan appenv sederhana dan kita akan mengaturnya ke nilai
00:01:33testing, dan sekarang saya bisa membuat tab baru untuk menjalankan varlock load yang akan memvalidasi skema kita. Sekarang
00:01:39kita bisa melihat di sini ia telah membaca variabel lingkungan kita dan mengaturnya ke sensitive. Ini
00:01:43karena semua variabel lingkungan di varlock diatur ke sensitif secara default, tetapi kita bisa mengubahnya.
00:01:48Di file ini, saya akan menambahkan dekorator pertama kita yaitu dekorator root
00:01:52karena ini akan memengaruhi semua variabel lingkungan di file tersebut dan kita akan menyetel default
00:01:56sensitive ke false. Perhatikan sintaksis di sini memiliki tanda pagar di depannya dan biasanya variabel root
00:02:02dipisahkan dengan pembagi. Sekarang seluruh file ini menggunakan bahasa spesifik domain yang disebut mspec yang
00:02:08merupakan spek terbuka yang ditulis oleh tim varlock. Jadi sekarang jika saya memvalidasi skema saya lagi, kita bisa melihat
00:02:14nilai dari variabel lingkungan tersebut karena tidak lagi disetel ke sensitif. Tapi kita bisa melakukan beberapa
00:02:19hal keren lainnya di dalam file skema kita seperti memberikan tipe pada variabel lingkungan kita. Jadi saya akan
00:02:24memberinya tipe string yang berarti semuanya akan tetap berfungsi, tetapi jika saya mengubahnya menjadi
00:02:29number, maka kita bisa melihat kita mendapat kesalahan karena ia mengharapkan string. Saya juga bisa memberinya
00:02:33dekorator required dan kemudian menghapus teks ini, yang berarti jika kita memeriksa file kita, kita mendapat kesalahan
00:02:39karena ia mengharapkan sebuah nilai. Ini disebut dekorator item dan Anda dapat menemukan daftar lengkap
00:02:44dekorator tersebut di dokumentasi varlock serta daftar lengkap tipe yang tersedia. Mari kita tambahkan
00:02:50variabel lingkungan lain dan kali ini kita akan menamakannya port dengan nilai 3002. Saya bisa memberinya
00:02:55tipe port dan apa yang juga akan saya lakukan di sini adalah mengatur ini ke sensitif dan mengubah ini kembali ke
00:03:01string. Sekarang ia telah mengambil kedua variabel lingkungan kita dan menyembunyikan ini karena sensitif.
00:03:05Tapi sekarang bagaimana cara memasukkan nilai-nilai ini ke dalam aplikasi kita? Nah, yang harus kita lakukan hanyalah menjalankan
00:03:10varlock run diikuti oleh skrip yang kita perlukan untuk menjalankan aplikasi kita. Jadi jika saya melihat isi file package JSON,
00:03:15kita bisa melihat kita perlu menjalankan perintah vite untuk menjalankan frontend. Jadi sekarang jika saya menjalankan varlock run diikuti
00:03:21oleh perintah vite, ia akan memuat konfigurasi, mengurainya, dan kemudian menyuntikkannya ke dalam variabel
00:03:27lingkungan kita, yang persis seperti yang dilakukannya karena sekarang portnya adalah 3002 yang berfungsi di kode kita
00:03:33karena ia pertama-tama memeriksa variabel lingkungan port yang saat ini sedang disuntikkan oleh varlock.
00:03:38Skrip ini tidak harus berupa file javascript karena varlock berfungsi untuk proyek apa pun, jadi
00:03:43Python, Go, Rust, apa pun itu, semuanya akan tetap berfungsi seperti yang diharapkan dan jika Anda tidak ingin
00:03:48menginstalnya dengan npm, maka ada juga varlock cli yang berfungsi sama. Ini semua bagus untuk
00:03:54variabel lingkungan lokal, tapi sekarang mari kita lalui proses pengambilannya dari 1Password
00:03:59alih-alih menggunakan variabel lokal shell saya untuk hal-hal seperti kunci API OpenAI dan Anthropic ini.
00:04:05Sekarang, saya tidak menggunakan 1Password secara pribadi, saya mendaftar uji coba hanya untuk membuat video ini, tetapi seperti yang
00:04:11Anda lihat, saya telah membuat vault baru yang sangat penting, saya akan jelaskan alasannya nanti, dan di dalam
00:04:16vault ini kita memiliki dua item, satu adalah kunci API OpenAI dan satu lagi adalah kunci API Anthropic yang tidak keberatan
00:04:24saya perlihatkan karena semuanya buatan, jadi jika saya ungkapkan, ini bukan kunci API asli. Sekarang, agar
00:04:30bisa memasukkan nilai-nilai tersebut ke dalam skema varlock kita, pertama-tama kita perlu menginstal plugin 1Password
00:04:36dan perhatikan bahwa plugin di varlock dapat menambahkan dekorator root dan item mereka sendiri, jadi Anda mungkin melihat beberapa yang baru
00:04:42di sini yang tidak ada di dalam dokumentasi, misalnya dekorator init 1Password ini, jadi setelah
00:04:49menginstal varlock 1Password, kita dapat memuat dekorator root plugin yang berisi plugin yang baru saja kita
00:04:55instal dan kita dapat menjalankan dekorator init 1Password, jadi yang saya butuhkan saat ini hanyalah tokennya
00:05:01yang bisa saya muat dari sini. Sekarang, untuk mendapatkan token ini, Anda memang harus menghubungkannya ke vault baru,
00:05:06bukan yang pribadi, dan Anda dapat menemukannya di developer service account kemudian ikuti langkah-langkahnya
00:05:11untuk membuat token. Sekarang karena saya akan menghapus token dan akun 1Password saya setelah video ini,
00:05:15saya tidak keberatan memperlihatkannya dan saya akan memberikan tipe one password service token yang diatur
00:05:21ke sensitif dan merupakan tipe yang berasal dari plugin ini. Anda mungkin juga memperhatikan bahwa file ini tidak
00:05:26memiliki penyorotan sintaksis dan itu karena tim varlock telah membuat plugin VS Code
00:05:32yang mendukungnya, tetapi saat ini belum ada untuk neovim yang artinya saya mungkin akan membuatnya di
00:05:37masa depan atau menyuruh Claude untuk melakukannya. Sekarang saya akan membuat variabel lingkungan baru yang disebut openai
00:05:43api key id dan kemudian untuk mendapatkannya dari 1Password saya harus menjalankan fungsi 1Password
00:05:49diikuti oleh protokol ini dan kemudian saya perlu menambahkan nama vault saya yaitu test, nama
00:05:55itemnya yaitu openai, dan kemudian nama fieldnya yang jika kita periksa lagi kita bisa melihat di sini bahwa itu adalah
00:06:02credential. Saya juga bisa mengaturnya ke sensitif dan sekarang jika kita menjalankan varlock load, perlu beberapa detik
00:06:08sebelum mendapatkan kunci API OpenAI saya dari 1Password dan kita bisa memastikan ini berfungsi bahkan dengan mengubah
00:06:14nilainya di sini menjadi sesuatu seperti 1234 dan jika kita menjalankan varlock load lagi, ia mendapatkan nilai
00:06:20yang benar dan begitulah, file skema env kita seharusnya siap untuk di-commit tapi saya tahu apa yang Anda
00:06:25pikirkan, bagaimana dengan token 1Password ini, apakah itu aman? Sejujurnya jika Anda sedang mengembangkan
00:06:31secara lokal dan Anda memiliki 1Password, Anda mungkin sudah menginstal aplikasi desktop atau menggunakan CLI,
00:06:38dalam hal ini Anda dapat menggunakan konfigurasi ini untuk membuka kunci 1Password dengan sidik jari Anda alih-alih menggunakan
00:06:43token 1Password, tetapi varlock juga mendukung plugin lain seperti untuk AWS, GCP, dan bahkan Bitwarden
00:06:52serta banyak integrasi lainnya termasuk untuk Vite, Next.js, dan Cloudflare Workers. Ada
00:06:57juga begitu banyak fitur lain yang tidak sempat saya bahas seperti menghasilkan tipe TypeScript dari
00:07:03skema Anda, mengimpor variabel lingkungan dari file lain, dan bahkan menyensor output sensitif
00:07:08dari log dan respons HTTP keluar yang merupakan sentuhan yang sangat bagus, bahkan ada server MCP untuk
00:07:15membantu agen pengodean Anda menyiapkan skema env untuk Anda secara otomatis dan ada juga GitHub Action
00:07:21untuk memuat dan memvalidasi variabel lingkungan Anda dalam proses CI/CD Anda, tetapi secanggih apa pun varlock,
00:07:27ada beberapa masalah dengannya, misalnya Anda tidak dapat menggunakannya secara luring, jadi jika Anda sedang mengode di bandara, Anda
00:07:32harus menggunakan variabel lingkungan yang di-hardcode tetapi sejujurnya siapa yang benar-benar mengode tanpa
00:07:37internet? Juga berbicara tentang internet, ada sedikit penundaan saat mengambil kata sandi dari
00:07:41penyedia yang berbeda sehingga akan memakan waktu sedikit lebih lama untuk memulai skrip Anda. Ada juga
00:07:46kurangnya penyedia seperti Dashlane dan lainnya, dan saya sempat mengalami bug aneh di mana jika saya menggunakan nama
00:07:53yang sama di file skema saya dengan nama variabel lingkungan untuk shell lokal saya, ia menggunakan variabel
00:07:59lingkungan lokal tersebut alih-alih yang dari 1Password, tetapi varlock sedang dikembangkan secara aktif
00:08:05dan saya yakin banyak dari hal ini akan diatasi di masa depan. Meskipun demikian, produk ini
00:08:10sebagaimana adanya saat ini masih sangat berguna bagi saya dan saya pikir saya akan menggunakannya untuk semua
00:08:16proyek sampingan saya ke depannya dan mungkin bahkan mengganti file shell lokal saya dengan file skema varlock
00:08:21jika ada cara untuk melakukannya, saya sangat berharap ada karena saya tidak ingin ada agen yang mengambil
00:08:26informasi saya.