Mengelola file status Terraform

Untuk setiap deployment, Anda dapat memeriksa atau mengubah file status. Misalnya, Anda mungkin ingin mengimpor atau menghapus resource dari deployment, yang Anda lakukan melalui perubahan file status.

Halaman ini menjelaskan cara menggunakan file status Terraform yang dibuat untuk setiap deployment dan revisi. Untuk mempelajari file status lebih lanjut, lihat Status.

Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memahami Terraform.

Sebelum memulai

  1. Pastikan Anda memiliki izin yang diperlukan untuk menggunakan file status. Peran config.admin menyertakan izin yang diperlukan. Izin tertentu yang diperlukan adalah:

    • config.deployments.lock
    • config.revisions.getState
    • config.deployments.updateState
    • config.deployments.unlock
    • config.deployments.getLock
    • config.deployments.getState
  2. Pastikan Anda memiliki salinan lokal konfigurasi Terraform. Ini adalah konfigurasi yang sesuai dengan file status yang Anda gunakan.

    Salinan lokal konfigurasi memungkinkan Anda menjalankan perintah seperti terraform refresh atau terraform plan secara lokal saat Anda mengubah file status.

  3. Instal Terraform untuk menggunakan Terraform CLI di komputer lokal Anda.

Mengubah atau memeriksa file status

Untuk mengubah (memodifikasi) atau memeriksa file status, Anda perlu mengunci deployment dan mendownload file status. Kemudian, Anda dapat mengubah atau memeriksa file status.

Setelah mengubah file status, Anda harus mengupload file tersebut agar Infra Manager dapat menggunakannya dalam deployment.

Mengunci deployment

  1. Kunci deployment untuk mencegah perubahan pada deployment saat Anda memutar file status. Deployment harus dikunci agar dapat mendownload file status.

     gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
    

    Ganti:

    • DEPLOYMENT_ID dengan ID deployment.
    • PROJECT_ID dengan project tempat deployment berjalan.
    • LOCATION dengan lokasi tempat deployment berjalan.

    Output perintah ini berisi lock ID yang digunakan untuk mengupload dan membuka kunci file status.

  2. Untuk mengambil ID kunci kapan saja, gunakan perintah:

     gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
    

Mendownload file status

Untuk mendownload file status, Anda menggunakan URL Cloud Storage yang ditandatangani:

   SIGNED_STATE_DOWNLOAD_URL=$(gcloud infra-manager deployments export-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(signedUri)")

   curl -s -X GET --output terraform.tfstate ${SIGNED_STATE_DOWNLOAD_URL}

Mengubah file status secara lokal

  1. Pastikan konfigurasi (file *.tf) berada di direktori yang sama dengan file status yang didownload (terraform.tfstate).

  2. Lakukan inisialisasi Terraform:

     terraform init
    
  3. Jika sebelumnya telah melakukan inisialisasi Terraform, Anda mungkin perlu melakukan inisialisasi dengan flag konfigurasi ulang:

     terraform init -reconfigure
    
  4. Gunakan file status sesuai kebutuhan Anda. Misalnya, Anda dapat melakukan operasi pemeriksaan status atau mutasi. Untuk mengetahui detail selengkapnya tentang cara menggunakan file status, lihat Memanipulasi Status Terraform.

  5. Jika Anda membuat perubahan pada file konfigurasi Terraform secara lokal, upload konfigurasi yang diubah. Upload konfigurasi ini ke bucket penyimpanan atau repositori git publik yang Anda gunakan sebagai sumber untuk men-deploy konfigurasi.

Mengupload file status

Gunakan URL Cloud Storage yang ditandatangani untuk mengupload file status:

  1. Dapatkan ID kunci:

     LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. Dapatkan URL upload:

     SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID} --format="get(signedUri)")
    
     curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL
    

Membuka kunci deployment

  1. Dapatkan ID kunci:

     LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. Buka kunci deployment:

     gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
    

Langkah selanjutnya