Keuntungan:
- Kemampuan memahami konsep IaC dan siklus kerja Terraform (init, plan, apply, state, module) serta memiliki kecerdasan buatan menghasilkan draft HCL yang aman
- Kemampuan untuk memeriksa setiap perubahan dengan rencana sebelum menerapkan dan menangkap jalur penghancuran/penggantian yang tidak terduga
- Kemampuan untuk menerapkan prinsip-prinsip menjaga rahasia dari kode, menjaga keamanan negara, dan meminimalkan izin IAM
Di masa lalu, menyiapkan server hanya tinggal mengklik panel cloud: membuat mesin virtual, menyiapkan jaringan, menambahkan aturan keamanan. Metode ini lambat, rawan kesalahan, dan tidak dapat diulangi — hampir tidak mungkin menyiapkan lingkungan yang sama untuk kedua kalinya. Saat ini, infrastruktur dikelola sebagai kode. IaC (Infrastruktur sebagai Kode) adalah pendekatan untuk mendeskripsikan sumber daya cloud seperti server, jaringan, dan database dalam file teks, bukan secara manual. File-file ini berada di kontrol versi (Git); Anda dapat melihat siapa yang mengubah apa, kapan, dan apa; Anda dapat menyiapkan infrastruktur yang sama berkali-kali, dengan cara yang persis sama, hanya dengan satu perintah.
Alat IaC yang paling umum adalah Terraform. Terraform mengambil definisi yang Anda tulis dalam bahasa yang mudah dibaca yang disebut HCL (HashiCorp Configuration Language — bahasa konfigurasi Terraform), menerjemahkannya ke dalam API penyedia cloud (AWS, Azure, GCP) dan membuat sumber daya. AI mengetahui HCL dengan sangat baik dan menghasilkan blok kompleks dengan cepat. Namun di IaC, akibat dari kesalahan sangatlah tinggi: satu definisi yang salah dapat menghapus seluruh database produksi. Itu sebabnya aturan utama di Terraform adalah melihat setiap perubahan dengan 'rencana' sebelum menerapkannya.
Waktu proses Terraform
Terraform bekerja dengan tiga perintah dasar — mengetahui bahwa ini adalah prasyarat untuk mengontrol keluaran AI:
- `terraform init`: Memulai proyek, mengunduh plugin penyedia yang diperlukan.
- `terraform plan`: Membandingkan situasi saat ini dengan situasi yang diinginkan dan menunjukkan apa yang perlu ditambahkan, apa yang harus diubah, apa yang harus dihapus. Tidak menerapkan apa pun. Ini adalah langkah keamanan yang paling penting.
- `terraform apply`: Benar-benar menerapkan Rencana, membuat/memodifikasi sumber daya.
Selain itu, ada dua konsep yang penting. Status (file status): Ini adalah file tempat Terraform menyimpan status sumber daya yang dikelolanya saat ini; Biasanya disimpan di gudang terpencil dan terkunci sehingga dua orang tidak dapat mengubah atau menghancurkannya pada saat yang bersamaan. Modul: Paket konfigurasi yang dapat digunakan kembali; Misalnya, Anda dapat menggunakan modul "siapkan jaringan" di banyak proyek.
Tip: Tanda paling berbahaya pada keluaran Terraform adalah garis hancurkan atau -/+ (ganti) pada keluaran rencana. Ini berarti sumber daya akan dihapus. Jika Anda melihat kehancuran yang tidak terduga dalam sebuah rencana, jangan pernah menerapkannya, pahami dulu mengapa hal itu muncul.
Langkah demi langkah: Menulis IaC dengan AI
- Perjelas infrastruktur yang diinginkan. Bersikaplah konkret seperti "satu VPC, dua subnet, satu grup keamanan, dan satu t3.micro EC2 di eu-central-1".
- Tentukan penyedia dan versi. Cloud yang mana, Terraform dan versi penyedia yang mana? Jika Anda tidak menentukan versi, AI mungkin mengembalikan sintaksis yang ketinggalan jaman/tidak kompatibel.
- Minta draf HCL dibuat. Juga meminta variabel dan output.
- Keluarkan Rahasia. Nilai seperti kata sandi dan kunci harus masuk ke variabel dan brankas rahasia, bukan ke kode.
- Jalankan `init` + `rencana`. Baca keluaran rencana baris demi baris; Periksa penghapusan yang tidak terduga.
- Mulailah dari yang kecil, terapkan secara bertahap. Terapkan terlebih dahulu di akun/lingkungan pengujian yang terisolasi.
Keamanan: Risiko khusus IaC
IaC sama berisikonya dengan kekuatannya. Tiga poin penting:
- Ada rahasia di berkas negara. Status Terraform terkadang menyimpan nilai sensitif, seperti kata sandi database, dalam teks biasa. Jangan pernah memasukkan Negara ke dalam repositori publik; Gunakan backend jarak jauh terenkripsi dengan akses terbatas.
- Jangan menanamkan rahasia di HCL. Baris seperti password="prod123" ditulis secara permanen ke riwayat Git. Sebagai gantinya, gunakan variabel dan berikan nilai saat runtime dari variabel lingkungan (TF_VAR_...) atau brankas rahasia.
- Izin IAM yang sangat luas. AI terkadang menghasilkan blok seperti Action: "*" (izinkan semuanya) untuk "membuatnya berfungsi". Ini adalah kerentanan; mempersempit izin ke jumlah minimum yang diperlukan.
Perhatian: Setelah sebuah rahasia memasuki riwayat Git, rahasia itu tetap ada di masa lalu dan dapat disusupi, bahkan jika Anda menghapus file tersebut. Jika Anda melakukan kesalahan, segera batalkan dan putar rahasianya; Menghapus saja tidak cukup.
Tabel tanda rencana berisiko
Cetakan rencana
Artinya
apa yang harus dilakukan
+buat
Sumber daya baru akan ditambahkan
Secara umum aman, tinjau kembali
~ perbarui di tempat
Sumbernya akan berubah di situs
Verifikasi dampaknya (apakah akan terjadi pemadaman listrik?)
-/+ ganti
Akan dihapus dan dibuat ulang
PERHATIAN: kehilangan data dapat terjadi
- hancurkan
Sumber daya akan dihancurkan
BERHENTI: jangan pernah melamar jika Anda tidak mengharapkannya
tiga kasus mini
Kasus 1 — 2 hari kerja dalam 3 jam. Satu tim akan menulis Terraform untuk menyiapkan lingkungan pengujian baru (VPC, subnet, database RDS, cluster ECS) tetapi mereka baru saja pindah ke HCL. Mereka mendeskripsikan arsitektur dan versi AI dan menghasilkan cetak biru modular. Mereka memverifikasi setiap modul dengan rencana dan menjalankannya dalam 3 jam; Mereka memerlukan waktu dua hari untuk melakukan uji coba manual.
Kasus 2 — rencana tersebut terkena penghapusan. Seorang insinyur menjalankan rencana tanpa menerapkan kode pembaruan yang dihasilkan AI. Outputnya berisi -/+ ganti untuk database produksi — AI mencoba mengganti bidang yang tidak dapat diganti, yang berarti menghapus dan membuat ulang database. Insinyur berhenti menerapkan dan mengubah perubahan ke metode aman. Kebiasaan membuat perencanaan mencegah terjadinya bencana.
Kasus 3 — kebocoran rahasia yang terkubur. Seorang junior, YZ mengeluarkan db_password = "S3cret!" Dia melakukan garis apa adanya dan mendorongnya. Terperangkap dalam tinjauan kode; Kata sandi segera dibatalkan dan diubah, nilainya dipindahkan ke variabel dan dimasukkan dari brankas rahasia. Pelajaran: Tidak pernah ada rahasia teks biasa di HCL.
Empat templat yang dapat disalin
1) Menghasilkan rancangan infrastruktur:
Tulis infrastruktur berikut di [CLOUD: AWS] dengan Terraform (versi ~> 1.7): [SOURCE LIST]. Wilayah [X]. Aturan:- Jadikan semua nilai sensitif sebagai variabel, jangan sematkan di HCL.- Perbaiki versi penyedia (penyedia_yang diperlukan).- Minimalkan izin IAM, jangan gunakan "*".- Kembalikan [X, Y] sebagai output. Berikan kode secara modular dan disertai penjelasan.
2) Menafsirkan keluaran rencana:
Analisis keluaran 'rencana terraform' di bawah ini. Cantumkan saya:(1) sumber daya apa yang ditambahkan/diubah/DIHAPUS,(2) baris yang berisiko kehilangan atau gangguan data,(3) 3 pertanyaan yang harus saya tanyakan sebelum mengajukan permohonan.Rencana: [OUTPUT]
3) Periksa HCL yang ada untuk keamanan:
Periksa kode Terraform berikut untuk keamanan: rahasia tertanam, izin IAM yang terlalu luas, aturan jaringan terbuka (0.0.0.0/0), penyimpanan tidak terenkripsi? Tulis setiap temuan dalam urutan kepentingan dan koreksi. Kode: [HCL]
4) Konversikan kode berulang ke modul:
Ubah kode Terraform berulang berikut menjadi modul yang dapat digunakan kembali: nilai apa yang harus berupa variabel, apa antarmuka modulnya? Tunjukkan juga contoh penggunaan. Kode: [HCL]
Perintah lemah / Perintah kuat
Lemah: "Buat database dengan Terraform."
Hasilnya: tidak jelas cloud yang mana, mesin yang mana, versi yang mana, terenkripsi atau tidak; Dengan sintaksis lama, AI dapat memberikan contoh yang tersedia untuk umum yang menyematkan kata sandi ke dalam kode.
Kuat: "Buat instans RDS PostgreSQL 15 di AWS dengan Terraform ~> 1.7. Buat variabel kata sandi, jangan sematkan dalam kode. Penyimpanan dienkripsi, hanya dapat diakses dari subnet pribadi, bukan publik. Perbaiki versi penyedia. Kembalikan titik akhir sebagai keluaran."
Perbedaan: prompt kedua memberikan mesin, versi, enkripsi, batasan jaringan, dan aturan rahasia — outputnya aman dan dekat dengan prod.
Kesalahan umum
- Untuk `melamar` tanpa membuat `rencana`. Kesalahan paling mahal di IaC; selalu rencanakan terlebih dahulu.
- Menanamkan Rahasia di HCL. Menciptakan kebocoran permanen ke dalam riwayat Git.
- Menyimpan Negara tidak aman. Negara publik yang tidak terenkripsi dan tidak terkunci adalah sebuah bencana.
- Tidak memperbaiki versinya. Menggunakan penyedia tanpa menentukan versi akan menyebabkan kegagalan mendadak di masa mendatang.
- *`Tindakan: Izin luas seperti ""`.** Melanggar prinsip hak istimewa paling rendah.
- Mengabaikan `hancurkan` yang tidak terduga. Menerapkan garis hapus dalam Rencana tanpa bertanya.
Singkatnya
IaC mengubah infrastruktur menjadi kode yang dapat diulang, diversi, dan diaudit; Alat yang paling umum adalah Terraform. AI dengan cepat menghasilkan stub HCL, tetapi Anda harus memberikan versi, detail spesifik cloud, dan aturan keamanan. Aturan sempurna di Terraform: melihat setiap perubahan dengan rencana, menanyakan penghapusan yang tidak terduga, menjaga rahasia dari kode, dan menjaga keamanan negara. Garis hancurkan dan ganti dalam keluaran rencana adalah tempat yang harus dibaca dengan sangat hati-hati.
Tugas aplikasi
Minta AI untuk membuat infrastruktur kecil (misalnya keranjang penyimpanan dan kebijakan akses) menggunakan templat "Buat sketsa infrastruktur" di atas. Kemudian: (1) minta template "pemeriksaan" memeriksa izin rahasia atau * yang tertanam dalam kode; (2) jika memungkinkan, jalankan init + plan di akun pengujian dan baca keluaran rencana dengan templat "interpretasi rencana"; (3) catat setiap penghapusan/perubahan yang tidak terduga.
daftar periksa
- [ ] Saya menambahkan cloud, versi Terraform/penyedia, dan batasan enkripsi/jaringan ke prompt saya.
- [ ] Tidak ada rahasia teks biasa dalam kode; variabel nilai presisi.
- [ ] Saya mempersempit IAM/izin menjadi izin minimal, * Saya tidak menggunakannya.
- [] Saya menjalankan rencana sebelum menerapkan dan membaca output baris demi baris.
- [ ] Saya memverifikasi bahwa tidak ada penghancuran/penggantian yang tidak terduga dalam Rencana.
- [ ] Saya yakin bahwa negara disimpan dalam backend terenkripsi, terkunci dan dibatasi.