Dokumen ini berisi praktik terbaik kontrol versi yang perlu dipertimbangkan saat menggunakan Terraform untuk Google Cloud.
Seperti bentuk kode lainnya, simpan kode infrastruktur di kontrol versi untuk mempertahankan histori dan memungkinkan rollback yang mudah.
Panduan ini bukan merupakan pengantar untuk Terraform. Untuk pengantar penggunaan Terraform dengan Google Cloud, baca Mulai menggunakan Terraform.
Menggunakan strategi cabang default
Untuk semua repositori yang berisi kode Terraform, gunakan strategi berikut secara default:
- Cabang
main
adalah cabang pengembangan utama dan merepresentasikan kode terbaru yang disetujui. Cabangmain
dilindungi. - Pengembangan terjadi pada cabang fitur dan perbaikan bug yang bercabang dari
cabang
main
.- Beri nama cabang fitur dengan
feature/$feature_name
. - Beri nama cabang perbaikan bug dengan
fix/$bugfix_name
.
- Beri nama cabang fitur dengan
- Setelah perbaikan bug atau fitur selesai, gabungkan kembali ke cabang
main
dengan permintaan pull. - Untuk mencegah konflik penggabungan, lakukan rebase cabang sebelum menggabungkannya.
Menggunakan cabang lingkungan untuk konfigurasi root
Untuk repositori yang menyertakan konfigurasi root yang di-deploy langsung ke Google Cloud, diperlukan strategi peluncuran yang aman. Sebaiknya buat cabang terpisah untuk setiap lingkungan. Dengan demikian, perubahan pada konfigurasi Terraform dapat dipromosikan dengan menggabungkan perubahan antara cabang yang berbeda.
Memungkinkan visibilitas yang luas
Buat kode sumber dan repositori Terraform dapat dilihat secara luas dan dapat diakses di seluruh organisasi engineering oleh pemilik infrastruktur (misalnya, SRE) dan pemangku kepentingan infrastruktur (misalnya, developer). Hal ini memastikan pemangku kepentingan infrastruktur dapat memiliki pemahaman yang lebih baik tentang infrastruktur yang mereka andalkan.
Dorong pemangku kepentingan infrastruktur untuk mengirimkan permintaan penggabungan sebagai bagian dari proses permintaan perubahan.
Jangan pernah melakukan commit secret
Jangan pernah melakukan commit secret ke kontrol sumber, termasuk dalam konfigurasi Terraform. Sebagai gantinya, upload file ke sistem seperti Secret Manager dan referensikan menggunakan sumber data.
Perlu diingat bahwa nilai sensitif tersebut mungkin masih berakhir di file status dan mungkin juga diekspos sebagai output.
Mengatur repositori berdasarkan batasan tim
Meskipun Anda dapat menggunakan direktori terpisah untuk mengelola batas logis antara resource, batas organisasi dan logistik menentukan struktur repositori. Secara umum, gunakan prinsip desain yang memisahkan konfigurasi dengan persyaratan persetujuan dan pengelolaan yang berbeda ke dalam repositori kontrol sumber yang berbeda. Untuk menggambarkan prinsip ini, berikut beberapa kemungkinan konfigurasi repositori:
Satu repositori pusat: Dalam model ini, semua kode Terraform dikelola secara terpusat oleh satu tim platform. Model ini berfungsi paling baik ketika ada tim infrastruktur khusus yang bertanggung jawab atas semua pengelolaan cloud dan menyetujui setiap perubahan yang diminta oleh tim lain.
Repositori tim: Dalam model ini, setiap tim bertanggung jawab atas repositori Terraform mereka sendiri, tempat mereka mengelola semua yang terkait dengan infrastruktur yang mereka miliki. Misalnya, tim keamanan mungkin memiliki repositori tempat semua kontrol keamanan dikelola, dan tim aplikasi masing-masing memiliki repositori Terraform sendiri untuk men-deploy dan mengelola aplikasinya.
Mengatur repositori sepanjang batas tim adalah struktur terbaik untuk sebagian besar skenario perusahaan.
Repositori yang dipisahkan: Dalam model ini, setiap komponen Terraform logis dibagi dalam repositorinya sendiri. Misalnya, jaringan mungkin memiliki repositori khusus dan mungkin ada repositori factory project terpisah untuk pembuatan dan pengelolaan project. Cara ini paling efektif di lingkungan yang sangat terdesentralisasi dengan peralihan tanggung jawab yang sering dilakukan antar- tim.
Contoh struktur repositori
Anda dapat menggabungkan prinsip-prinsip ini untuk membagi konfigurasi Terraform di berbagai jenis repositori:
- Dasar
- Khusus aplikasi dan tim
Repositori dasar
Repositori dasar yang berisi komponen pusat utama, seperti IAM organisasi atau folder. Repositori ini dapat dikelola oleh tim cloud pusat.
- Dalam repositori ini, sertakan direktori untuk setiap komponen utama (misalnya, folder, jaringan, dan sebagainya).
- Dalam direktori komponen, sertakan folder terpisah untuk setiap lingkungan (dengan mempertimbangkan panduan struktur direktori yang disebutkan sebelumnya).
Repositori khusus aplikasi dan tim
Deploy repositori khusus aplikasi dan tim secara terpisah untuk setiap tim guna mengelola konfigurasi Terraform khusus aplikasi yang unik.
Langkah selanjutnya
- Pelajari praktik terbaik untuk operasi Terraform.
- Pelajari praktik terbaik untuk menggunakan Terraform dengan aman.