Masalah yang IaC selesaikan
Tanpa IaC, lu provisioning resource cloud pake tangan: buka portal, klik-klik form buat order VPS, nunggu, terus ulang buat tiap server, tiap disk, tiap keypair. Bisa jalan, tapi:- Gak ada catatan. Gak ada yang nyimpen apa yang lu klik kemarin, jadi bikin ulang environment artinya ngulang semua dari ingatan.
- Gak ada review. Typo dan setting yang salah gampang kelewat, gak ada yang ngecek sebelum live.
- Gak konsisten. Dua environment beda-beda karena dibangun manual di waktu yang beda.
- Gak bisa diautomasi. Tiap perubahan butuh orang yang duduk di depan browser.
Anggep aja kayak resep masakan, bukan masak pake feeling. File resepnya masuk git, siapa aja bisa baca, dan semua yang ngikutin dapet masakan yang sama.
Ide intinya
Semua tools IaC share beberapa konsep dasar:
Workflow-nya selalu tiga langkah yang sama:
- Tulis file konfigurasi yang ngejelasin apa yang lu mau.
- Plan (Terraform) atau preview (Pulumi): tools bandingin file lu sama kenyataan, terus nunjukin apa yang bakal berubah.
- Apply: tools manggil API cloud biar kenyataan match sama file lu, terus nyimpen hasilnya di state.
Cara tools-nya beneran kerja
Workflow tiga langkah di atas itu cuma permukaannya. Di bawahnya, Terraform dan Pulumi dua-duanya kerja dengan cara yang sama, dibangun dari tiga bagian yang bergerak. Provider itu program yang berdiri sendiri.biznetgio gak ketanem di dalam Terraform atau Pulumi. Dia binary yang udah dicompile sendiri (terraform-provider-biznetgio / pulumi-resource-biznetgio) yang di-download CLI sekali terus dijalanin sebagai subprocess tiap kali lu jalanin command. File .tf lu atau program TypeScript lu gak pernah manggil API Biznet GIO langsung, mereka cuma ngejelasin satu resource, terus CLI-nya ngirim penjelasan itu ke process provider lewat koneksi RPC lokal. Provider itu satu-satunya yang ngomong HTTP ke api.portal.biznetgio.com. Ini kenapa provider yang sama bisa jalan dari HCL punya Terraform, dan di kasus Pulumi, dari lima bahasa programming yang beda: bahasanya cuma perlu ngehasilin RPC call yang sama, gak perlu implement API client-nya sendiri.
Semua yang lu deklarasiin jadi graph, bukan list. Pas konfigurasi lu bilang keypair_id punya VM dateng dari resource keypair, tools-nya nyatet itu sebagai edge: keypair sebelum VM. Ditebar di satu file penuh, ini jadi dependency graph, dan CLI-nya jalanin graph itu buat nentuin urutan, bikin keypair sebelum VM yang butuh id-nya, dan balikin urutannya pas destroy/down biar VM-nya kehapus dulu sebelum keypair yang dia depend ke situ. Resource yang gak ada hubungan satu sama lain dibuat parallel, ini kenapa satu plan dengan sepuluh VM yang gak berhubungan kelar jauh lebih cepet daripada sepuluh API call yang sequential.
label yang berubah di server bare metal, logic diff-nya provider manggil satu API endpoint yang rename doang, field lainnya dibiarin. Full replacement cuma kejadian buat attribute yang eksplisit ditandain create-only di halaman reference-nya satu resource, soalnya API upstream-nya gak punya cara in-place buat ganti itu.
Ini alasan mekanisnya kenapa dua rule dari FAQ itu ada: secret yang cuma dibalikin sekali pas creation (private key keypair, secret key object storage) survive di state persis soalnya state itu satu-satunya memori permanen tools-nya buat itu, dan update Pulumi yang timeout aman buat diretry soalnya partial state yang udah dia tulis ngebiarin run berikutnya lanjut daripada mulai dari nol lagi.
Terraform tuh apa?
Terraform itu tools IaC dari HashiCorp yang pake bahasa konfigurasi sendiri, namanya HCL. Lu nulis file.tf, jalanin terraform plan buat liat perubahan, terus terraform apply buat benerin.
- Bahasa: HCL, bahasa declarative yang memang dibikin buat ini (bukan general purpose)
- State: disimpen di state file, sering dishare sama tim lewat remote backend
- Ekosistem: Terraform Registry host ribuan provider, termasuk yang ini
- Cocok buat: tim yang mau satu tools standar dengan workflow yang sama di mana-mana
Pulumi tuh apa?
Pulumi itu tools IaC yang ngebiarin lu nulis infrastruktur pake bahasa programming umum: TypeScript, Python, Go, C#, dan Java. Ada juga mode YAML declarative buat yang mau config gaya Terraform tanpa SDK penuh - liat quickstart Pulumi buat contoh YAML-nya di samping lima contoh bahasa lain.- Bahasa: bahasa lu sendiri, udah dapet loop, function, dan typing dari hari pertama
- State: disimpen di Pulumi Cloud (atau backend self-hosted)
- Ekosistem: Pulumi Registry ngeindeks package, termasuk yang ini
- Cocok buat: tim yang mau share code, pake abstraksi, dan nulis unit test buat infrastrukturnya
Terraform vs Pulumi
Cara milihnya: kalau tim lu udah banyak nulis Python, Go, atau TypeScript, Pulumi kerasa natural. Kalau lu lebih suka bahasa minimalis yang khusus buat infrastruktur, atau perusahaan standarnya HCL, pilih Terraform. Dua-duanya nge-expose resource Biznet GIO yang sama, jadi bisa ganti tools tanpa ganti apa yang bisa lu kelola.
Posisi provider Biznet GIO di sini
Dua-duanya wrap Biznet GIO Portal API yang sama. Artinya:- Lu order layanan beneran (VPS, bare metal, GPU, storage) lewat API yang sama kayak web portal.
- Lu authenticate pake API token dari portal. Liat Authentication.
- Create dan upgrade bikin order berbayar beneran. Baca panduan billing dulu sebelum apply pertama.
Glosarium
Langkah berikutnya
- Quickstart (Terraform) - order VM pertama dalam kurleb lima menit
- Quickstart (Pulumi) - sama, pake Pulumi
- Authentication - dapetin API token
- Package registries - semua tempat provider ini dipublish