本頁說明如何使用 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 資源的權限,以及確保您有權存取所需專案,請參閱「設定服務帳戶」一文。
Connect your private Git repository and host to Cloud Build
If you are deploying a Terraform configuration from a private Git repository, you need to connect your Git host and repository to 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。
- 自動部署。
- 查看部署作業的狀態。
- 查看已部署的資源。
- 刪除部署作業。