您可能需要檢查或修改任何部署作業的狀態檔案。舉例來說,您可能想從部署作業匯入或移除資源,這時就要修改狀態檔案。
本頁說明如何使用為每個部署作業和修訂版本建立的 Terraform 狀態檔案。如要進一步瞭解狀態檔案,請參閱「狀態」。
本頁的操作說明假設您已熟悉 Terraform。
事前準備
請確認您具備處理狀態檔案的必要權限。
config.admin角色包含必要權限。所需權限如下:config.deployments.lockconfig.revisions.getStateconfig.deployments.updateStateconfig.deployments.unlockconfig.deployments.getLockconfig.deployments.getState
請確認您有 Terraform 設定的本機副本。這是與您使用的狀態檔案對應的設定。
設定的本機副本可讓您在修改狀態檔案時,在本機執行
terraform refresh或terraform plan等指令。安裝 Terraform,在本機電腦上使用 Terraform CLI。
變更或檢查狀態檔案
如要變動 (修改) 或檢查狀態檔案,您必須鎖定部署作業並下載狀態檔案。然後即可變動或檢查狀態檔案。
變更狀態檔案後,請上傳檔案,供 Infra Manager 在部署作業中使用。
鎖定部署作業
鎖定部署作業,避免在變動狀態檔案時,部署作業發生任何變更。部署作業必須處於鎖定狀態,才能下載狀態檔案。
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION更改項目:
- 將 DEPLOYMENT_ID 換成部署識別碼。
- PROJECT_ID,部署作業會在該專案中執行。
- 將 LOCATION 替換為部署作業的執行位置。
這個指令的輸出內容包含
lock ID,用於上傳及解鎖狀態檔案。如要隨時擷取鎖定 ID,請使用下列指令:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
下載狀態檔案
如要下載狀態檔案,請使用已簽署的 Cloud Storage 網址:
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}
在本機變更狀態檔案
確認設定 (
*.tf檔案) 與下載的狀態檔案 (terraform.tfstate) 位於相同目錄。初始化 Terraform:
terraform init如果您先前已初始化 Terraform,可能需要使用重新設定標記初始化:
terraform init -reconfigure視需要使用狀態檔案。舉例來說,您可以執行狀態檢查或突變作業。如要進一步瞭解如何使用狀態檔案,請參閱「操控 Terraform 狀態」。
如果您在本機對 Terraform 設定檔進行任何變更,請上傳修改後的設定。將這項設定上傳至儲存空間 bucket 或公開 Git 存放區,做為部署設定的來源。
上傳州別檔案
使用已簽署的 Cloud Storage 網址上傳狀態檔案:
取得智慧門鎖 ID:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")取得上傳網址:
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}
解鎖部署作業
取得智慧門鎖 ID:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")解鎖部署作業:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
後續步驟
- 進一步瞭解如何搭配使用 Terraform 與 Google Cloud。
- 更新部署作業。
- 查看部署作業的狀態。
- 查看已部署的資源。
- 刪除部署作業。