本頁說明如何使用 Infrastructure Manager 預覽 Terraform 設定中定義的資源部署作業。
預覽功能會說明啟動特定 Terraform 設定的動作。建立或更新部署作業前,您可以先預覽部署作業,確認預計要佈建的資源。
預覽會執行 Terraform plan
指令。本頁面假設您已熟悉 Terraform。詳情請參閱「Terraform 和 Infrastructure Manager」。
如要建立預覽版本,Terraform 設定必須與其中一個支援的 Terraform 版本相容。
事前準備
- 啟用 Infra Manager。
- 請確認您具備建立預覽畫面所需的 IAM 權限:
roles/config.admin
。 - 請確認您有具備必要權限的服務帳戶。詳情請參閱「設定服務帳戶」。
- 找出要預覽的 Terraform 設定。請確保這個 Terraform 設定符合限制,包括設定不含機密資料。
預覽部署項目的更新
您可以用來更新部署作業的 Terraform 設定,可以位於儲存空間值區或 Git 存放區中。
您也可以使用這項 Terraform 設定預覽更新。
使用儲存在 Cloud Storage bucket 中的 Terraform 設定進行預覽
更新部署作業時,部分現有資源可能不會變更。預覽更新會顯示預計要佈建或刪除的資源,以及預計不會修改的資源。
找出要更新的部署作業。
確認 Terraform 設定已上傳至 Cloud Storage 值區。詳情請參閱「將設定上傳至儲存空間 bucket」。
您可以透過儲存空間 bucket 控制設定的存取權。您也可以部署儲存在 Git 存放區或本機電腦中的 Terraform 設定。
如要預覽更新:
gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --deployment=projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION --provider-source=SERVICE_MAINTAINED
取代:
- PROJECT_ID 是 Infrastructure Manager 執行的專案 ID。
- LOCATION 是 Infra Manager 的執行位置。如需有效位置清單,請參閱「Infrastructure Manager 位置」。
- PREVIEW_ID 是您指定的預覽 ID。如要進一步瞭解預覽 ID 的限制,請參閱「預覽名稱」。
- SERVICE_ACCOUNT 是您用來呼叫 Infra Manager 的服務帳戶名稱。
- SERVICE_ACCOUNT_PROJECT_ID 是服務帳戶的專案 ID。通常這會是執行 Infra Manager 的專案。
- DEPLOYMENT_ID 是要更新的部署作業的部署 ID。
- BUCKET_NAME 是儲存設定的儲存空間值區名稱。
OBJECT_NAME 是設定檔的物件名稱。這個物件可以是目錄或 zip 檔案,但不能是 Terraform 檔案。如果您使用物件版本管理,也可以指定物件的產生編號。詳情請參閱「使用已設定版本的物件」。
如果儲存空間 bucket 是 Terraform 設定的根路徑,則 OBJECT_NAME 為選用項目。
INPUT_1_NAME=VALUE 和 INPUT_2_NAME=VALUE:Terraform 設定中的任何輸入值,包括預設未定義的值。舉例來說,您可以將部署資源的專案指定為
project_id=my-project
。如果設定中預設定義了所有輸入值,則這個旗標為選用。
選用:TERRAFORM_VERSION:Infra Manager 用於建立部署作業的 Terraform 版本。如需支援的版本清單,請參閱「支援的 Terraform 版本」。如果移除這個選用旗標,系統會使用最新支援的 Terraform 版本。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Terraform 提供者。 Google Cloud 設為
SERVICE_MAINTAINED
,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud 的 Terraform 供應商」。
除非您在預覽指令中指定新值,否則部署作業中的欄位 (例如 Terraform 設定、變數和服務帳戶) 會自動合併至預覽畫面。
預覽作業建立完成後,您可以匯出並查看結果,以便審查部署作業計畫。
使用儲存在 Git 存放區中的 Terraform 設定進行預覽
更新部署作業時,部分現有資源可能不會變更。預覽更新會顯示預計要佈建或刪除的資源,以及預計不會修改的資源。
- 如果您的 Terraform 設定儲存在私人 Git 存放區中,且您尚未連線至 GitHub 主機和 GitHub 存放區,請使用 Cloud Build 連線,為 Infra Manager 提供存放區存取權。
如要更新部署項目,請按照下列步驟操作:
gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --deployment=projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --git-source-repo="GIT_REPO" \ --git-source-directory="DIRECTORY" \ --git-source-ref="REF" \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION --provider-source=SERVICE_MAINTAINED
取代:
- PROJECT_ID 是 Infrastructure Manager 執行的專案 ID。
- LOCATION 是 Infra Manager 的執行位置。如需有效位置清單,請參閱「Infrastructure Manager 位置」。
- PREVIEW_ID 是您指定的預覽 ID。如要進一步瞭解預覽 ID 的限制,請參閱「預覽名稱」。
- SERVICE_ACCOUNT 是您用來呼叫 Infra Manager 的服務帳戶名稱。
- SERVICE_ACCOUNT_PROJECT_ID 是服務帳戶的專案 ID。通常這會是執行 Infra Manager 的專案。
- DEPLOYMENT_ID 是要更新的部署作業的部署 ID。
- GIT_REPO:Git 存放區。
- DIRECTORY:包含 Terraform 設定的目錄。
- REF:設定的 Git 參照。參照為選用項目。如未指定參照,系統會使用 Git 存放區的預設設定分支。
INPUT_1_NAME=VALUE 和 INPUT_2_NAME=VALUE:Terraform 設定中的任何輸入值,包括預設未定義的值。舉例來說,您可以將部署資源的專案指定為
project_id=my-project
。如果設定中預設定義了所有輸入值,則這個旗標為選用。
選用:TERRAFORM_VERSION:Infra Manager 用於建立部署作業的 Terraform 版本。如需支援的版本清單,請參閱「支援的 Terraform 版本」。如果移除這個選用旗標,系統會使用最新支援的 Terraform 版本。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Terraform 提供者。 Google Cloud 設為
SERVICE_MAINTAINED
,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud 的 Terraform 供應商」。
除非您在預覽指令中指定新值,否則部署作業中的欄位 (例如 Terraform 設定、變數和服務帳戶) 會自動合併至預覽畫面。
預覽作業建立完成後,您可以匯出並查看結果,以便審查部署作業計畫。
後續步驟
- 匯出及查看預覽結果
- 使用 Infra Manager 部署資源。
- 自動部署。
- 進一步瞭解如何搭配使用 Terraform 與 Infrastructure Manager。