Menyimpan status Terraform di bucket Cloud Storage

Dalam tutorial ini, Anda akan mempelajari cara menyimpan status Terraform di bucket Cloud Storage.

Secara default, Terraform menyimpan state secara lokal dalam file bernama terraform.tfstate. Konfigurasi default ini dapat mempersulit penggunaan Terraform oleh tim ketika beberapa pengguna menjalankan Terraform secara bersamaan dan setiap mesin memiliki pemahamannya sendiri tentang infrastruktur saat ini.

Untuk membantu Anda menghindari masalah tersebut, halaman ini menunjukkan cara mengonfigurasi status jarak jauh yang mengarah ke bucket Cloud Storage. Status jarak jauh adalah fitur backend Terraform.

Biaya

Cloud Storage menimbulkan biaya untuk penyimpanan, operasi baca dan tulis, keluar dari jaringan, dan replikasi.

Bucket Cloud Storage dalam tutorial ini mengaktifkan Pembuatan Versi Objek untuk menyimpan histori deployment Anda. Mengaktifkan Pembuatan Versi Objek akan meningkatkan biaya penyimpanan, yang dapat Anda kurangi dengan mengonfigurasi Pengelolaan Siklus Proses Objek untuk menghapus versi status lama.

Sebelum memulai

  1. Pastikan Anda memiliki izin Cloud Storage yang diperlukan di akun pengguna Anda:
    • storage.buckets.create
    • storage.buckets.list
    • storage.objects.get
    • storage.objects.create
    • storage.objects.delete
    • storage.objects.update

    Buka halaman IAM

    Pelajari lebih lanjut tentang peran dan perizinan

    Sebagai praktik terbaik, sebaiknya kontrol akses ke bucket dan file status yang disimpan di sana. Hanya sekelompok kecil pengguna (misalnya, administrator cloud utama dan orang yang bertindak sebagai administrator alternatif atau cadangan) yang boleh memiliki izin admin untuk bucket. Developer lain harus memiliki izin untuk hanya menulis dan membaca objek di dalam bucket.

  2. Mulai Cloud Shell.

    Cloud Shell adalah mesin virtual Compute Engine. Kredensial layanan yang terkait dengan mesin virtual ini bersifat otomatis, sehingga Anda tidak perlu menyiapkan atau mendownload kunci akun layanan.

  3. Aktifkan Cloud Storage API:

    gcloud services enable storage.googleapis.com
    

Mengonfigurasi Terraform untuk menyimpan status di bucket Cloud Storage

Pada langkah-langkah berikut, Anda akan membuat bucket Cloud Storage dan mengubah konfigurasi backend ke bucket baru dan project Google Cloud Anda.

Buat bucket

  1. Tambahkan resource Terraform google_storage_bucket berikut ke file konfigurasi Terraform, seperti main.tf.

    resource "random_id" "bucket_prefix" {
      byte_length = 8
    }
    
    resource "google_storage_bucket" "default" {
      name          = "${random_id.bucket_prefix.hex}-bucket-tfstate"
      force_destroy = false
      location      = "US"
      storage_class = "STANDARD"
      versioning {
        enabled = true
      }
      encryption {
        default_kms_key_name = google_kms_crypto_key.terraform_state_bucket.id
      }
      depends_on = [
        google_project_iam_member.default
      ]
    }

    Dalam cuplikan kode, kolom location di-hard code menjadi US (yang berarti bucket multi-region di AS telah dibuat). Anda dapat mengubah kolom ini ke lokasi pilihan Anda.

  2. Jalankan terraform apply untuk membuat bucket penyimpanan.

Mengubah konfigurasi backend

  1. Tambahkan teks berikut ke file konfigurasi Terraform baru yang bernama backend.tf.

    terraform {
     backend "gcs" {
       bucket  = "BUCKET_NAME"
       prefix  = "terraform/state"
     }
    }
    

    Pastikan Anda mengupdate BUCKET_NAME agar cocok dengan nama bucket Cloud Storage baru.

  2. Jalankan terraform init untuk mengonfigurasi backend Terraform.

    Terraform mendeteksi bahwa Anda sudah memiliki file status secara lokal dan meminta Anda untuk menyalinnya ke bucket Cloud Storage yang baru. Masukkan yes.

Setelah menjalankan perintah ini, status Terraform Anda akan disimpan di bucket Cloud Storage. Terraform mengambil status terbaru dari bucket ini sebelum menjalankan perintah, dan mengirim status terbaru ke bucket setelah menjalankan perintah.

Langkah berikutnya