Praktik terbaik untuk kontrol versi

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. Cabang main 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.
  • 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.

Cabang terpisah untuk setiap lingkungan

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).

Struktur repositori dasar

Repositori khusus aplikasi dan tim

Deploy repositori khusus aplikasi dan tim secara terpisah untuk setiap tim guna mengelola konfigurasi Terraform khusus aplikasi yang unik.

Struktur repositori khusus aplikasi dan tim

Langkah selanjutnya