Deploy fondasi Anda menggunakan Terraform yang didownload dari konsol

Panduan penyiapan fondasi Cloud di konsol Google Cloud memungkinkan administrator perusahaan mengonfigurasi fondasi Google Cloud yang siap digunakan perusahaan menggunakan antarmuka terpandu dan men-deploy-nya langsung dari konsol Google Cloud atau mendownloadnya sebagai Terraform.

Administrator dapat mengonfigurasi entitas organisasi, pengguna & grup; menautkan atau menyiapkan akun penagihan; dan mengonfigurasi hierarki resource (folder & project), kebijakan IAM, jaringan awal, serta logging dan pemantauan terpusat.

Saat pelanggan mendownload konfigurasinya sebagai Terraform, konsol akan membuat file Terraform untuk deployment selanjutnya. Tutorial ini memberikan instruksi untuk men-deploy file Terraform yang didownload dan memperhatikan setiap resource infrastruktur yang di-deploy sebelumnya.

Sebelum Anda memulai

Tinjau Praktik terbaik penggunaan Terraform, yang mencakup pedoman untuk pengembangan yang efektif dengan Terraform di seluruh anggota tim dan alur kerja.

Jika telah men-deploy konfigurasi dasar dengan mengklik tombol Deploy di konsol, dan sekarang ingin men-deploy konfigurasi Terraform yang didownload menggunakan pipeline Anda sendiri, Anda harus melakukan hal berikut:

  • Download file status Terraform yang dihasilkan oleh konsol.
  • Sertakan file status yang didownload dalam proses pipeline Anda sendiri.

Untuk informasi selengkapnya, lihat Men-deploy Terraform yang didownload setelah me-deploy dari konsol.

Men-deploy Terraform dengan Cloud Shell

Cloud Shell dilengkapi dengan Terraform yang telah diinstal dan diautentikasi sebelumnya, sehingga Anda dapat memulai dengan cepat.

  1. Dari panduan penyiapan dalam konsol, klik Download sebagai Terraform dan simpan konfigurasi.
  2. Buka Cloud Shell.
  3. Di Cloud Shell, buat direktori dan buka direktori tersebut:

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. Upload konfigurasi Terraform yang didownload pada langkah 1.

    Dari menu Cloud Shell Lainnya, pilih Upload, lalu klik Pilih File untuk memilih konfigurasi Terraform. Tetapkan direktori tujuan ke folder yang Anda buat di langkah sebelumnya, lalu klik Upload.

  5. Pastikan Anda berada di direktori cloud-foundation-example.

  6. Buat bucket Cloud Storage untuk menyimpan Status Jarak Jauh Terraform. Dengan status jarak jauh, Terraform dapat menggunakan penyimpanan objek seperti Cloud Storage untuk menyimpan informasi status tentang infrastruktur yang dikelola oleh Terraform. Konfigurasi ini memberikan manfaat seperti delegasi tim dan penguncian status.

    Untuk membuat bucket Cloud Storage, jalankan perintah berikut:

    gcloud storage buckets create gs://tf-state-PROJECT_ID
    
  7. Tentukan konfigurasi backend Terraform dalam file backend.tf dan ganti PROJECT_ID agar cocok dengan ID project yang Anda gunakan di langkah sebelumnya. Untuk detail selengkapnya, tinjau cara menyimpan status Terraform di Cloud Storage.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Jalankan terraform init. Proses ini menginisialisasi direktori kerja Anda yang berisi file konfigurasi Terraform dan backend.

  9. Jalankan terraform plan untuk melihat resource yang dibuat Terraform. Contoh output:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Terapkan konfigurasi dengan menjalankan terraform apply, yang men-deploy resource Anda ke Google Cloud. Jika diminta, masukkan yes.

  11. Jelajahi konsol Google Cloud untuk memverifikasi bahwa resource Anda kini telah di-deploy di akun atau project Anda.

Deploy ulang Terraform dengan Cloud Shell

Terraform menyimpan informasi tentang resource yang di-deploy dalam file status Terraform. Jika Anda telah mengikuti langkah-langkah sebelumnya untuk men-deploy konfigurasi, sebaiknya gunakan kembali backend yang sama agar otomatis mendeteksi, memangkas, dan memperbarui resource yang ditentukan oleh konfigurasi baru yang diekspor.

  1. Dari panduan penyiapan dalam konsol, klik Download sebagai Terraform dan simpan konfigurasi.
  2. Buka Cloud Shell.
  3. Di Cloud Shell, buat direktori baru lalu buka direktori tersebut:
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. Upload konfigurasi Terraform yang didownload pada langkah 1.

    Dari menu Cloud Shell Lainnya, pilih Upload, lalu klik Pilih File untuk memilih konfigurasi Terraform. Tetapkan direktori tujuan ke folder yang Anda buat di langkah sebelumnya, lalu klik Upload.

  5. Pastikan Anda berada di direktori cloud-foundation-example-redeploy.

  6. Pastikan bucket backend dan file status Cloud Storage yang dibuat sebelumnya ada.

    gcloud storage ls gs://tf-state-PROJECT_ID/terraform/state/
    
    Contoh output:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. Tentukan konfigurasi backend Terraform dalam file backend.tf dengan menggunakan kembali bucket dan awalan yang sama.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Jalankan terraform init. Proses ini menginisialisasi direktori kerja Anda yang berisi file konfigurasi Terraform dan backend.

  9. Jalankan terraform plan untuk melihat resource yang dibuat, diubah, atau dihancurkan oleh Terraform. Contoh output:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Terapkan konfigurasi dengan menjalankan terraform apply, yang men-deploy resource Anda ke Google Cloud. Jika diminta, masukkan yes.

  11. Jelajahi konsol Google Cloud untuk memverifikasi bahwa resource Anda kini di-deploy di akun atau project Anda.

Men-deploy Terraform yang didownload setelah men-deploy dari konsol

Jika Anda sudah men-deploy konfigurasi dasar menggunakan tombol Deploy di konsol, file status Terraform akan dibuat. Jika sekarang ingin mendownload konfigurasi Terraform untuk men-deploy menggunakan pipeline Anda sendiri, Anda harus menyertakan file status Terraform yang dihasilkan selama deployment konsol.

Untuk mendownload dan menggunakan file status:

  1. Untuk mendownload file status Terraform, selesaikan prosedur berikut di Mengelola file status Terraform:

    1. Kunci deployment.
    2. Download file status.
    3. Buka kunci deployment.
  2. Untuk memindahkan file status yang Anda download ke bucket Cloud Storage, lihat Menyimpan status Terraform di bucket Cloud Storage.

  3. Untuk men-deploy ulang konfigurasi Terraform, lihat Men-deploy ulang Terraform dengan Cloud Shell.

Memecahkan masalah deployment Terraform

Men-deploy Terraform dengan resource yang ada

Jika konfigurasi Terraform yang didownload mencoba membuat resource yang sudah ada, Terraform akan keluar dengan kode error 409. Untuk mengatasi error ini, Anda dapat menghapus resource menggunakan konsol Google Cloud atau gcloud CLI, lalu menerapkan kembali konfigurasi Terraform. Atau, jika resource ini sangat penting dan tidak dapat dihapus, Anda dapat mengimpor resource ke status Terraform Anda.

Mengelola infrastruktur sebagai kode dengan Terraform, Cloud Build, dan GitOps

Sebaiknya ikuti tutorial ini untuk mendapatkan petunjuk lengkap. Opsi ini ditujukan untuk admin dan operator platform yang mencari strategi agar dapat diprediksi dan berulang kali melakukan perubahan pada infrastruktur. Panduan ini menganggap Anda sudah memahami Google Cloud, Linux, dan GitHub. Langkah-langkah tingkat tinggi dari opsi ini adalah sebagai berikut

  1. Siapkan repositori GitHub Anda.
  2. Konfigurasi Terraform untuk menyimpan status di bucket Cloud Storage.
  3. Berikan izin ke akun layanan Cloud Build Anda.
  4. Hubungkan Cloud Build ke repositori GitHub Anda.
  5. Ubah konfigurasi lingkungan Anda di cabang fitur.
  6. Dorong perubahan pada lingkungan pengembangan.
  7. Dorong perubahan pada lingkungan produksi.