Praktik terbaik saat bekerja dengan resource Google Cloud

Praktik terbaik untuk menyediakan resource Google Cloud dengan Terraform terintegrasi dalam modul Cloud Foundation Toolkit yang dikelola oleh Google. Dokumen ini menegaskan kembali beberapa praktik terbaik ini.

Panduan ini bukan merupakan pengantar untuk Terraform. Untuk pengantar penggunaan Terraform dengan Google Cloud, baca Mulai menggunakan Terraform.

Menyimulasikan image virtual machine

Secara umum, sebaiknya Anda membuat image virtual machine menggunakan alat seperti Packer. Terraform kemudian hanya perlu meluncurkan mesin menggunakan gambar yang telah dibuat sebelumnya.

Jika gambar yang dibuat sebelumnya tidak tersedia, Terraform dapat menyerahkan virtual machine baru ke alat manajemen konfigurasi dengan blok provisioner. Sebaiknya hindari metode ini dan hanya gunakan sebagai upaya terakhir. Untuk membersihkan status lama yang terkait dengan instance, penyedia yang memerlukan logika penghapusan harus menggunakan blok provisioner dengan when = destroy.

Terraform harus memberikan informasi konfigurasi VM ke manajemen konfigurasi dengan metadata instance.

Mengelola Identity and Access Management

Saat menyediakan asosiasi IAM dengan Terraform, tersedia beberapa resource yang berbeda:

  • google_*_iam_policy (misalnya, google_project_iam_policy)
  • google_*_iam_binding (misalnya, google_project_iam_binding)
  • google_*_iam_member (misalnya, google_project_iam_member)

google_*_iam_policy dan google_*_iam_binding membuat asosiasi IAM otoritatif, dengan resource Terraform berfungsi sebagai satu-satunya sumber tepercaya untuk izin yang dapat ditetapkan ke resource yang relevan.

Jika izin berubah di luar Terraform, Terraform pada eksekusi berikutnya akan menimpa semua izin untuk mewakili kebijakan seperti yang ditetapkan dalam konfigurasi Anda. Hal ini mungkin masuk akal untuk resource yang sepenuhnya dikelola oleh konfigurasi Terraform tertentu, tetapi hal ini berarti peran yang dikelola secara otomatis oleh Google Cloud akan dihapus, yang berpotensi mengganggu fungsionalitas beberapa layanan.

Untuk mencegah hal ini, sebaiknya gunakan resource google_*_iam_member secara langsung atau modul IAM dari Google.

Langkah selanjutnya