$ aoox

DocsAplikasi

Variabel

Set variabel menyimpan variabel bersama per environment. Bagikan set ke project, tautkan environment-nya ke aplikasi dan stack secara berurutan, lalu rujuk nilainya dengan ${{vars.KEY}}.

Letak
Variabel di sidebar (tingkat instance)
Penggabungan
Environment tertaut berurutan < Infisical < env sendiri
Referensi
${{vars.KEY}}

Konsep

IstilahArti
Set variabelKelompok variabel bernama, misalnya Backend. Set milik instance, bukan milik satu project, jadi beberapa project bisa memakainya.
SlugNama pendek huruf kecil seperti backend, diturunkan dari nama bila dikosongkan. Slug tidak bisa diubah kemudian: scope API token dan CLI (--set backend) merujuknya.
EnvironmentSatu teks KEY=VALUE di dalam set. Set baru mendapat development, staging, dan production; paling banyak 20 per set (huruf kecil, angka, dan -, maksimal 32 karakter). Nilainya dienkripsi saat disimpan.
TerlindungiEnvironment yang nilainya hanya boleh dibuka atau diubah owner dan admin instance. production terlindungi sejak awal.
TautanAplikasi atau stack compose memakai satu atau beberapa environment set, dengan urutan yang kamu pilih. Tanpa tautan berarti tanpa variabel set: hanya env miliknya sendiri.

Buka Variabel di sidebar untuk melihat set yang bisa kamu pakai. Tiap environment punya tab berisi nama variabel dan nilai yang disamarkan. Tombol mata di sebuah baris menampilkan nilainya, tombol salin menyalinnya tanpa menampilkannya, Tampilkan semua menampilkan semua nilai (yang ditandai rahasia tetap tersamar sampai tombol matanya ditekan), dan Ubah membuka editor. Nilai yang tampil disembunyikan lagi setelah 60 detik dan dibuang dari halaman, begitu juga saat kamu pindah tab atau meninggalkan halaman. Pengambilan nilai tercatat di audit log: satu catatan mencakup seluruh environment selama 60 detik itu, pengambilan berikutnya menjadi catatan baru.

Berbagi

Set dibagikan ke semua project (yang ada dan yang akan datang) atau ke project tertentu. Hanya aplikasi dan stack di project itu yang bisa menautkannya, dan hanya anggota project itu yang melihatnya. Set yang tidak dibagikan ke siapa pun hanya terlihat oleh owner dan admin instance.

  • Membuat, mengganti nama, membagikan, dan menghapus set, serta menambah atau menghapus environment, adalah tugas owner dan admin instance.
  • Sebuah project tidak bisa kehilangan akses selama masih ada yang menautkan set itu di dalamnya: perubahan ditolak dengan menyebut nama aplikasi dan stack tersebut. Lepas tautannya dulu. Menghapus set atau environment juga ditolak dengan cara yang sama selama masih ditautkan.

Siapa boleh apa

Peranmu pada sebuah set mengikuti peranmu di project tempat set itu dibagikan (yang tertinggi yang dihitung). Owner dan admin instance menjadi admin instance di setiap set.

Peran pada setNama dan keyNilai environment biasaNilai environment terlindungiMengelola set
Owner / admin instanceYaBuka, ubahBuka, ubahYa
Admin project, developerYaBuka, ubahTidakTidak
ViewerYaTidakTidakTidak
  • Mengubah termasuk me-restore versi dan mempromosikan; melihat daftar riwayat dan membandingkan nama terbuka untuk semua peran.
  • Environment terlindungi lebih ketat daripada di 0.1.0-alpha.9: admin project tidak lagi bisa membuka atau mengubahnya.

Menautkan ke aplikasi dan stack

Di tab Environment sebuah aplikasi atau stack, kartu Set variabel menampilkan environment yang ditautkan sesuai urutan penggabungan. Tambahkan dengan tombol tautkan, geser ke atas atau ke bawah, atau lepas tautannya. Form pembuatan (aplikasi, stack, template) juga menerima satu environment set secara opsional.

  • Paling banyak 10 tautan; satu environment hanya bisa ditautkan sekali per aplikasi atau stack.
  • Set harus dibagikan ke project itu (atau ke semua project).
  • Mengubah tautan butuh peran developer atau lebih. Menambah atau melepas tautan ke environment terlindungi butuh peran admin project; mengubah urutan tautan yang tetap selalu boleh.
  • Perubahan berlaku pada deploy berikutnya; container yang sedang berjalan tidak disentuh. Hal yang sama berlaku saat environment yang ditautkan diubah.
  • Kartu itu menunjukkan bentrokan: key yang ditimpa tautan berikutnya dan key yang ditimpa env sendiri.

Urutan penggabungan

  1. 01tautan 1environment set pertama yang ditautkan (terendah)
  2. 02tautan 2 … 10tautan berikutnya menimpa yang sebelumnya pada key yang sama
  3. 03sumber secretsecret Infisical, bila sync menyala
  4. 04env sendirienv milik aplikasi atau stack selalu menang
  5. 05containerreferensi diselesaikan, hasilnya masuk ke container

Penggabungan terjadi setiap kali container dibuat (deploy, rollback, pembuatan ulang setelah perubahan domain atau mount), tidak pernah saat build. Tiap key membawa tanda rahasia dari lapisan asal nilainya.

Tertaut: 1. shared/production, 2. backend/production
# shared/production
LOG_LEVEL=info
SENTRY_DSN=https://abc@sentry.example.com/1

# backend/production
LOG_LEVEL=warn
API_HOST=api.example.com

# env milik aplikasi
LOG_LEVEL=debug
API_URL=https://${{vars.API_HOST}}/v1
Hasil di container
LOG_LEVEL=debug          # env sendiri menang
SENTRY_DSN=https://abc@sentry.example.com/1
API_HOST=api.example.com
API_URL=https://api.example.com/v1

Referensi: ${{vars.KEY}}

  • ${{vars.KEY}} adalah nilai gabungan KEY dari environment set yang ditautkan (urutannya sama seperti di atas). Bisa dipakai di env sendiri maupun di nilai set; nilai set boleh merujuk key dari set lain yang ditautkan ke aplikasi yang sama.
  • Penjabarannya satu tingkat: nilai yang dirujuk dipakai apa adanya. Dengan URL=https://${{vars.HOST}} di sebuah set, URL dijabarkan di tempat ia dipakai, tetapi FULL=${{vars.URL}} menerima teks mentah https://${{vars.HOST}}.
  • Key yang tidak dikenal ditolak dengan 400 saat tautan atau env sendiri disimpan, dan membuat deployment gagal (dengan menyebut referensinya) bila baru rusak kemudian, misalnya setelah key itu dihapus dari set.
  • ${{project.KEY}} sudah tidak ada: ditolak dengan pesan bahwa namanya diganti menjadi ${{vars.KEY}}. Proses upgrade menulis ulang referensi yang ada untukmu. ${{database.…}} dan ${{secret.…}} tetap seperti sebelumnya (lihat Environment variables).

Riwayat dan restore

  • Setiap perubahan pada environment disimpan sebagai versi: edit di dashboard, aoox env set|unset|push, restore, atau promosi. Riwayat menampilkan siapa (pengguna atau token), kapan, dan nama yang ditambah, diubah, dan dihapus; nilainya hanya tampil bila kamu membuka sebuah versi.
  • Restore menulis kembali teks versi itu sebagai versi baru, jadi tidak ada yang hilang dan restore bisa dibatalkan. Ditolak bila sama dengan isi saat ini atau tidak lagi lolos pemeriksaan sekarang.
  • Perubahan pertama yang tercatat juga menyimpan baseline isi sebelumnya. 50 versi terbaru disimpan, terenkripsi seperti teks aktifnya.
  • Yang boleh me-restore: orang yang sama yang boleh mengubah environment itu.

Membandingkan dan mempromosikan

  • Bandingkan dua environment dalam satu set: nama yang hanya ada di satu sisi, nama dengan nilai berbeda, dan berapa yang sama. Nilai dibandingkan di server dan tidak pernah dikirim ke browser; bila kamu tidak bisa membaca kedua sisi, kamu hanya melihat nama mana ada di mana.
  • Pilih variabel lalu promosikan ke environment lain: tiap variabel disalin beserta nilai dan tanda rahasianya, target tetap mempertahankan komentar dan urutannya, variabel baru ditaruh di akhir, dan sebuah versi promosi dari sumbernya dicatat.
  • Promosi butuh hak membaca sumber dan mengubah target, jadi sisi yang terlindungi butuh owner atau admin instance. Perubahan oleh orang lain di antaranya membuat promosi ditolak; tidak ada yang ditulis.

Catatan

Catatan sebuah variabel adalah blok baris # tepat di atasnya. Baris kosong di antaranya memutus kaitan itu, jadi judul bagian yang diikuti baris kosong tetap menjadi komentar biasa.

development
# Payments

# Base URL of the payments API, including the /v1 prefix.
PAYMENTS_URL=https://pay.example.com/v1
# Must equal WEBHOOK_SECRET in the payments service.
WEBHOOK_SECRET=…
  • Di sini PAYMENTS_URL dan WEBHOOK_SECRET punya catatan; # Payments adalah komentar yang berdiri sendiri.
  • Di halaman set, ikon catatan muncul di samping variabel yang punya catatan; arahkan kursor, klik, atau ketuk untuk membacanya. Di Ubah, tampilan Baris menampilkan catatan di bawah variabelnya dan bisa menambah atau mengubahnya; tampilan Teks menampilkan baris #-nya.
  • Catatan terlihat tanpa membuka nilai, oleh semua yang bisa melihat set itu, termasuk viewer. Jangan menaruh rahasia di dalamnya.
  • Catatan adalah bagian dari teks, jadi ikut terbawa: riwayat dan restore, aoox env pull / push, serta ekspor dan impor. Promosi membawa catatan variabel yang baru bagi target; variabel yang sudah ada di target tetap memakai catatannya sendiri. Catatan dipotong di 1000 karakter.

Variabel rahasia

TandaApa yang terjadi pada nilai di log
RahasiaSelalu disamarkan, sependek apa pun.
Bukan rahasiaTidak pernah disamarkan.
Tidak diaturDisamarkan bila terlihat seperti rahasia: 8 karakter atau lebih, bukan satu kata biasa, bukan hanya angka. NODE_ENV=production tetap terbaca.
  • Atur tandanya dengan sakelar rahasia di editor atau aoox env set KEY=VALUE --secret / --no-secret. Variabel baru yang namanya memuat password, secret, token, key, private, atau credential otomatis ditandai rahasia.
  • Tanda disimpan di samping nama, bukan di dalam teks, jadi file hasil pull dan .aoox.env compose tidak berubah. Penyamaran berlaku di log deployment, output job, dan notifikasi error.
  • Yang tidak dilakukan tanda ini: semua nilai disimpan terenkripsi, rahasia atau bukan. Tanda tidak menentukan siapa yang boleh melihat nilai: di dashboard nilai tetap tersembunyi sampai Anda menampilkan atau menyalinnya (tercatat di audit), dan akses mengikuti peran serta environment terproteksi. Kontainer selalu menerima nilai aslinya. Tanda hanya mengatur penyamaran dengan *** di log.
  • Salah deteksi yang diketahui: aturan nama otomatis juga cocok dengan nama seperti MONKEY atau KEYBOARD karena memuat "key". Matikan sakelarnya untuk nama seperti itu.
  • Tips: aktifkan untuk password, token, API key, dan connection string; matikan untuk nilai biasa seperti NODE_ENV, PORT, dan LOG_LEVEL agar tetap terbaca di log.

Scope API token

API token bisa dibatasi ke sebagian environment set lewat batas variabel pada token (Settings → Akun → API token; variableScopes di API, paling banyak 20 entri):

EntriMengizinkan
backend/stagingSatu environment dari satu set.
backend/*Semua environment dari set backend.
*/stagingEnvironment staging di setiap set.
  • Tanpa entri: token boleh memakai semua environment set yang bisa dipakai pemiliknya. Entri hanya mempersempit; token tidak pernah melebihi pemiliknya.
  • Scope berlaku untuk membuka, mengubah, restore, promosi, serta membuat atau menghapus environment. Perbandingan menganggap sisi di luar scope tidak bisa dibandingkan. Penautan tidak dibatasi olehnya.
  • Token read-only tetap boleh membuka nilai (membaca diaudit tetapi tidak mengubah apa pun); semua penulisan ditolak.

Dari terminal

aoox CLI
$ aoox env list                                   # set, environment, jumlah variabel
$ aoox env set API_URL=https://api.example.com --set backend --env staging
$ aoox env pull --set backend --env development  # ./.env (mode 0600)
$ aoox env links                                  # yang dipakai aplikasi tertaut, berurutan
$ aoox env link --set shared --env production --position 1
$ aoox run -- npm run dev                         # environment tertaut + env sendiri

Rinciannya di CLI: aoox env dan aoox run. Untuk menjalankan aplikasi di lokal dengan satu environment, lihat Pengembangan lokal.

Ekspor dan impor

  • Ekspor project mencatat tautan tiap aplikasi dan stack menurut nama set dan environment, sesuai urutan penggabungan.
  • Set itu sendiri (beserta nilainya) hanya ikut bila owner mengekspor dengan secret: set yang dibagikan langsung ke project atau ditautkan oleh salah satu aplikasi atau stack-nya.
  • Saat impor, set yang namanya sudah ada dipakai ulang dan tidak pernah ditimpa (ada peringatan); set baru dibuat dan hanya dibagikan ke project hasil impor. Tautan ke set yang sudah ada tetapi belum dibagikan ke project baru akan dibagikan bila pengimpor owner atau admin instance, atau dilewati dengan peringatan untuk yang lain.
  • File lama (environment 0.1.0-alpha.9) menjadi satu set bernama sesuai project baru, dan ${{project. menjadi ${{vars..

Upgrade dari 0.1.0-alpha.9

Yang dilakukan upgrade
Migrasi berjalan sekali, dalam satu transaksi, saat API baru menyala.
  • Setiap project yang environment-nya berisi menjadi satu set bernama sesuai project, hanya dibagikan ke project itu, dengan environment, nilai, tanda rahasia, dan riwayat yang sama. Aplikasi dan stack tetap memakai environment-nya sebagai tautan pertama.
  • Environment kosong dibuang; project yang hanya punya environment kosong tidak mendapat set, dan tautan ke sana dihapus.
  • ${{project.KEY}} menjadi ${{vars.KEY}} di env aplikasi dan stack serta di setiap teks dan versi tersimpan.
  • Daftar environments pada API token menjadi scope berbentuk */<nama> (artinya sama: nama itu di setiap set). Buat ulang token dengan scope per set bila ingin lebih sempit.
  • Environment terlindungi kini hanya untuk owner/admin instance. Admin project yang dulu membuka atau mengubah production kini butuh admin instance, atau perlindungan environment itu dilepas.
  • ENCRYPTION_KEY wajib terpasang (pada instalasi normal sudah ada) karena teks tersimpan dienkripsi ulang. Perbarui juga CLI-nya: perintah aoox env lama memanggil endpoint yang sudah tidak ada.

Batasan

  • Tidak ada peran per set: akses mengikuti peran project.
  • Slug tidak bisa diganti, dan environment tidak bisa dipindah antarset.
  • Referensi dijabarkan satu tingkat.

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitHub ↗