Kami dengan senang hati mengumumkan bahwa rilis beta Psono Terraform Provider sekarang tersedia secara publik di Terraform Registry.
Tim infrastruktur kini dapat mengelola kunci individual di dalam entri Environment Variables Psono yang sudah dibuat sebagai bagian dari workflow Terraform mereka. Provider ini dapat mempertahankan nilai yang sudah ada, menghasilkan kata sandi baru, memutar (rotate) nilai yang dikelola, menulis nilai yang diberikan dari luar, serta membaca rahasia melalui resource ephemeral dari Terraform.
Penanganan rahasia dalam infrastruktur sebagai kode membutuhkan perhatian khusus. Flag sensitive dapat menyembunyikan nilai dari output CLI biasa, namun tidak selalu mencegah nilai tersebut masuk ke dalam state Terraform. Provider Psono menggunakan kemampuan write-only dan ephemeral dari Terraform untuk menghindari permasalahan tersebut dan membutuhkan Terraform versi 1.11 atau yang lebih baru.
Provider ini mendukung tiga workflow umum:
Ini membuat operasi siklus hidup rahasia dapat dimasukkan ke dalam workflow Terraform tanpa nilai aslinya keluar dari Psono.
Provider ini menggunakan API key Psono yang terbatas. Anda hanya menetapkan entri Environment Variables yang dibutuhkan Terraform dan memberikan izin membaca untuk semua operasi. Membuat, memperbarui, memutar, atau menghapus kunci juga memerlukan izin menulis. Provider ini tidak membutuhkan kunci API tanpa batas dan tidak dapat membuat entri vault, folder, ataupun datastore.
Enkripsi dan dekripsi dilakukan secara lokal di provider. Verifikasi sertifikat HTTPS tidak dapat dinonaktifkan, dan otoritas sertifikat privat bisa ditambahkan melalui PEM CA bundle. Sistem produksi sebaiknya selalu menggunakan URL Psono berbasis HTTPS.
Terraform versi 1.11 atau lebih baru diperlukan. Tambahkan provider ke konfigurasi Terraform Anda:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Konfigurasikan kredensial melalui variabel lingkungan alih-alih menempatkannya di berkas Terraform:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='GANTI_DENGAN_API_KEY_ID'
export PSONO_API_SECRET_KEY='GANTI_DENGAN_API_SECRET_KEY'
Lalu inisialisasi direktori kerja:
terraform init
Terraform akan mengunduh rilis provider yang telah ditandatangani dan memverifikasi tanda tangan checksumnya.
Resource berikut mengelola DB_PASSWORD di entri Environment Variables Psono yang sudah ada:
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
length = 32
min_lower = 4
min_upper = 4
min_numeric = 4
min_special = 4
rotation_version = 1
}
Jika kunci sudah ada, provider akan mengadopsinya tanpa mengubah nilainya. Jika tidak ada, provider akan menghasilkan dan menyimpan nilai baru di Psono. Nilai yang dihasilkan tidak dikembalikan oleh resource terkelola dan tidak masuk ke dalam state Terraform.
Tingkatkan rotation_version ketika Terraform perlu menghasilkan pengganti. Ini juga menggantikan nilai yang diadopsi atau diimpor, jadi periksa dulu perubahan rotasi sebelum mengaplikasikannya.
Nilai ephemeral dari provider lain dapat ditulis ke Psono dengan value_wo:
ephemeral "random_password" "database" {
length = 32
}
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
value_wo = ephemeral.random_password.database.result
value_wo_version = 1
}
Nilai ini tersedia selama operasi Terraform berlangsung namun tidak disimpan di plan maupun state. Tingkatkan value_wo_version saat Terraform harus menulis nilai pengganti.
Menghapus resource terkelola secara default akan mempertahankan kunci di Psono. Ini melindungi nilai yang diadopsi Terraform, namun tidak diciptakan olehnya. Atur deletion_policy = "Delete" hanya jika Terraform benar-benar diinginkan untuk menghapus kunci dari Psono saat destroy atau resource replacement.
Provider ini bersifat open source dan sudah dapat digunakan:
Rilis beta ini memang difokuskan pada entri Environment Variables dan API key terbatas. Pendekatan ini menjaga izin tetap sempit, mencegah akses vault yang tidak terbatas, dan memberi fondasi praktis untuk mengelola rahasia operasional secara aman langsung dari Terraform.