本頁說明如何使用 Infrastructure Manager 更新部署作業。您可能需要更新部署作業的情況包括:
將基礎架構還原至所選狀態。
建立部署作業後,資源可能會在一段時間後變更。舉例來說,可能有人在控制台中修改了部分資源。您可以使用原始的 Terraform 設定更新部署作業,將其還原至所選狀態。
實作基礎架構變更。
建立部署作業後,您可能需要修改基礎架構。例如新增資源或變更部分設定。您可以使用描述新基礎架構的 Terraform 設定,更新部署作業。
本頁面假設您已熟悉 Terraform。詳情請參閱「Terraform 和基礎架構管理工具」。
事前準備
- 確認已啟用 Infra Manager。
- 確認您具備建立部署作業所需的 IAM 權限:
roles/config.admin
- 請確認您有具備必要權限的服務帳戶。詳情請參閱「設定服務帳戶」。
- 找出要更新的 Infra Manager 部署作業。
找出要部署的 Terraform 設定,以進行更新。任何設定都可用於修訂版本。這項設定通常是已部署設定的相同或更新版本。
請確認這項 Terraform 設定符合限制,包括設定不含機密資料。
確認與預期基礎架構相關聯的產品機構配額。如果預期基礎架構超出貴機構的產品配額,您可能會遇到部署錯誤。詳情請參閱「配額與限制」。
針對您要修改的資源,採取必要的資料遷移或服務連續性步驟。
如要在設定資源前預覽更新,請參閱「預覽部署作業的更新」。
授予設定專屬權限
如要部署 Terraform 設定中指定的 Google Cloud 資源,您用來呼叫 Infra Manager 的服務帳戶必須具備下列權限:
您用於修訂版本的設定中定義的Google Cloud 資源。
如果修訂版本使用的設定定義的資源,與部署作業使用的設定不同,您就必須擁有這兩項設定中定義的資源權限。
除了服務帳戶使用 Infra Manager 服務所需的權限外,您還需要為設定中定義的資源授予特定權限。
如要進一步瞭解如何授予 Google Cloud 資源的權限,以及確保您有權存取所需專案,請參閱「設定服務帳戶」一文。
將私人 Git 存放區和主機連結至 Cloud Build
如果您要從私人 Git 存放區部署 Terraform 設定,請將 Git 主機和存放區連結至 Cloud Build。
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
Developer Connect
可更新部署項目
如要更新部署作業,請使用相同的部署作業名稱部署設定,系統會建立修訂版本。詳情請參閱部署作業和修訂版本總覽。
如果您沒有現有的部署作業,請參閱「使用 Infra Manager 部署基礎架構」。
如要在不佈建資源的情況下預覽更新,請參閱預覽部署作業。
選取所選工作流程的分頁,進一步瞭解如何更新部署作業。
控制台
本節說明如何使用 Google Cloud 主控台中的 Infra Manager 更新 Terraform 設定。
部署設定並建立修訂版本:
- 前往 Google Cloud 控制台的「Infra Manager」頁面。
- 在「部署作業」頁面中,查看「ID」欄,然後點選要更新的部署作業。
- 在以部署 ID 為標題的頁面中,按一下「編輯」。
- 在「部署作業詳細資料」 頁面中,您可以修改「Terraform 版本」 、「服務帳戶」 和「Terraform 設定來源」 欄位。如果您提供私人 Git 存放區,請務必將主機和存放區連結至 Cloud Build。
按一下「繼續」。
- 在「Terraform details」(Terraform 詳細資料) 頁面中,您可以修改 Terraform 設定的輸入值。然後點按「繼續」。
- 在「進階詳細資料」頁面中,您可以修改「標籤和註解」、「工作站集區」和「構件 Cloud Storage bucket」欄位。
- 對部署作業所做的變更感到滿意後,請按一下「更新」,開始更新程序。
如要進一步瞭解部署參數及其格式,請參閱「部署資源」說明文件。
gcloud CLI
本節說明如何部署儲存在 Cloud Storage bucket 中的 Terraform 設定。您可以透過儲存空間 bucket 控制設定的存取權。
- 確認 Terraform 設定位於 Cloud Storage 值區中。詳情請參閱「將設定檔上傳至儲存空間 bucket」。
如果儲存空間值區與您執行 Infra Manager 的專案不同,請確保 Infra Manager 的服務帳戶具備該值區的讀取權限。詳情請參閱「設定服務帳戶」。
如果儲存空間值區與 Infra Manager 位於同一個專案,系統會自動啟用該值區的讀取權限。
部署設定並建立修訂版本:
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --quota-validation=QUOTA_VALIDATION \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" --provider-source=SERVICE_MAINTAINED
- PROJECT_ID:Infra Manager 執行的專案 ID。
- LOCATION:Infra Manager 的執行位置。如需有效位置清單,請參閱「Infra Manager 位置」。
- DEPLOYMENT_ID:您指定的部署作業 ID。如要瞭解部署 ID 的限制,請參閱「部署名稱」。
- SERVICE_ACCOUNT_PROJECT_ID 是服務帳戶的專案 ID。這通常是執行 Infra Manager 的專案。
- SERVICE_ACCOUNT:用於呼叫 Infra Manager 的服務帳戶名稱。
- BUCKET_NAME:儲存設定的儲存空間 bucket 名稱。
- OBJECT_NAME:設定檔的物件名稱。這個物件可以是目錄或 ZIP 檔案,但不能是 Terraform 檔案。如果您使用物件版本管理,也可以指定物件的產生編號。詳情請參閱「使用版本化物件」。
如果儲存空間 bucket 是 Terraform 設定的根路徑,則 OBJECT_NAME 為選用項目。
- 選用:QUOTA_VALIDATION:這個值會決定您建立部署作業時,是否啟用或強制執行 Terraform 設定檔中資源的配額驗證。可能的值包括:
ENABLED
:為 Terraform 設定檔中的資源啟用運算配額驗證。可查看配額不足的資源。ENFORCED
:強制執行配額驗證,如果 Terraform 設定檔中定義的基礎架構沒有足夠配額,部署作業就會失敗。
如果未定義 QUOTA_VALIDATION,系統會停用 Terraform 設定檔的配額驗證。這是預設值。配額驗證適用於有限的 Google Cloud 資源。詳情請參閱「配額與限制」。
INPUT_1_NAME 和 INPUT_2_NAME:Terraform 設定中的任何輸入值,包括預設未定義的值。舉例來說,您可以將部署資源的專案指定為
project_id=my-project
。如果設定中預設定義了所有輸入值,則此標記為選用。
- 選用:TERRAFORM_VERSION:Infra Manager 用於建立部署作業的 Terraform 版本。如需支援的版本清單,請參閱「支援的 Terraform 版本」。如果移除這個選用旗標,系統會使用最新支援的 Terraform 版本。
- 選用:ANNOTATION_KEY 和 ANNOTATION_VALUE 代表可附加至 Infra Manager 部署作業的不限格式文字鍵/值組合。如要進一步瞭解註解和標籤的使用方式和限制,請參閱「註解和標籤」。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Terraform 提供者。 Google Cloud 設為
SERVICE_MAINTAINED
,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud 的 Terraform 供應商」。
gcloud CLI
本節說明如何使用儲存在 Git 存放區的 Terraform 設定。
- 確認您已安裝 Git。
- 如果 Terraform 設定儲存在
私人 Git 存放區 ,請確保 Git 主機和存放區已連結至 Cloud Build。 部署設定並建立修訂版本:
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo="GIT_REPO" \ --git-source-directory="DIRECTORY" \ --git-source-ref="REF" \ --quota-validation=QUOTA_VALIDATION \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" --provider-source=SERVICE_MAINTAINED
- PROJECT_ID:Infra Manager 執行的專案 ID。
- LOCATION:Infra Manager 的執行位置。如需有效位置清單,請參閱「Infra Manager 位置」。
- DEPLOYMENT_ID:您指定的部署作業 ID。如要瞭解部署 ID 的限制,請參閱「部署名稱」。
- SERVICE_ACCOUNT_PROJECT_ID 是服務帳戶的專案 ID。這通常是執行 Infra Manager 的專案。
- SERVICE_ACCOUNT:用於呼叫 Infra Manager 的服務帳戶名稱。
- GIT_REPO:Git 存放區。
- DIRECTORY:包含 Terraform 設定的目錄。
- 選用:REF:設定的 Git 參照。參考資料為選填項目。如未指定參照,系統會使用 Git 存放區的預設設定分支。
- 選用:QUOTA_VALIDATION:這個值會決定您建立部署作業時,是否啟用或強制執行 Terraform 設定檔中資源的配額驗證。可能的值包括:
ENABLED
:為 Terraform 設定檔中的資源啟用運算配額驗證。可查看配額不足的資源。ENFORCED
:強制執行配額驗證,如果 Terraform 設定檔中定義的基礎架構沒有足夠配額,部署作業就會失敗。
如果未定義 QUOTA_VALIDATION,系統會停用 Terraform 設定檔的配額驗證。這是預設值。配額驗證適用於有限的 Google Cloud 資源。詳情請參閱「配額與限制」。
INPUT_1_NAME 和 INPUT_2_NAME:Terraform 設定中的任何輸入值,包括預設未定義的值。舉例來說,您可以將部署資源的專案指定為
project_id=my-project
。如果設定中預設定義了所有輸入值,則此標記為選用。
- 選用:TERRAFORM_VERSION:Infra Manager 用於建立部署作業的 Terraform 版本。如需支援的版本清單,請參閱「支援的 Terraform 版本」。如果移除這個選用旗標,系統會使用最新支援的 Terraform 版本。
- 選用:ANNOTATION_KEY 和 ANNOTATION_VALUE 代表可附加至 Infra Manager 部署作業的不限格式文字鍵/值組合。如要進一步瞭解註解和標籤的使用方式和限制,請參閱「註解和標籤」。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Terraform 提供者。 Google Cloud 設為
SERVICE_MAINTAINED
,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud 的 Terraform 供應商」。
gcloud CLI
本節說明如何使用儲存在本機電腦上的 Terraform 設定。
- 如果您使用 Cloud Shell,則需要將設定檔上傳至 Cloud Shell。詳情請參閱「使用 Cloud Shell 管理檔案」。
部署設定並建立修訂版本:
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --local-source="LOCAL_DIRECTORY" \ --quota-validation=QUOTA_VALIDATION \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" --provider-source=SERVICE_MAINTAINED
- PROJECT_ID:Infra Manager 執行的專案 ID。
- LOCATION:Infra Manager 的執行位置。如需有效位置清單,請參閱「Infra Manager 位置」。
- DEPLOYMENT_ID:您指定的部署作業 ID。如要瞭解部署 ID 的限制,請參閱「部署名稱」。
- SERVICE_ACCOUNT_PROJECT_ID 是服務帳戶的專案 ID。這通常是執行 Infra Manager 的專案。
- SERVICE_ACCOUNT:用於呼叫 Infra Manager 的服務帳戶名稱。
- LOCAL_DIRECTORY:儲存 Terraform 設定的本機目錄。如果您使用 Cloud Shell,這個目錄就是 Cloud Shell 中儲存設定的位置。
- 選用:QUOTA_VALIDATION:這個值會決定您建立部署作業時,是否啟用或強制執行 Terraform 設定檔中資源的配額驗證。可能的值包括:
ENABLED
:為 Terraform 設定檔中的資源啟用運算配額驗證。可查看配額不足的資源。ENFORCED
:強制執行配額驗證,如果 Terraform 設定檔中定義的基礎架構沒有足夠配額,部署作業就會失敗。
如果未定義 QUOTA_VALIDATION,系統會停用 Terraform 設定檔的配額驗證。這是預設值。配額驗證適用於有限的 Google Cloud 資源。詳情請參閱「配額與限制」。
INPUT_1_NAME 和 INPUT_2_NAME:Terraform 設定中的任何輸入值,包括預設未定義的值。舉例來說,您可以將部署資源的專案指定為
project_id=my-project
。如果設定中預設定義了所有輸入值,則此標記為選用。
- 選用:TERRAFORM_VERSION:Infra Manager 用於建立部署作業的 Terraform 版本。如需支援的版本清單,請參閱「支援的 Terraform 版本」。如果移除這個選用旗標,系統會使用最新支援的 Terraform 版本。
- 選用:ANNOTATION_KEY 和 ANNOTATION_VALUE 代表可附加至 Infra Manager 部署作業的不限格式文字鍵/值組合。如要進一步瞭解註解和標籤的使用方式和限制,請參閱「註解和標籤」。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Terraform 提供者。 Google Cloud 設為
SERVICE_MAINTAINED
,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud 的 Terraform 供應商」。
後續步驟
- 進一步瞭解如何搭配使用 Terraform 與 Google Cloud。
- 自動部署。
- 查看部署作業的狀態。
- 查看已部署的資源。
- 刪除部署作業。