本頁面說明如何使用 Infrastructure Manager,佈建 Terraform 設定中定義的一組Google Cloud 資源。
如要預覽部署作業,而不佈建資源,請參閱「預覽部署作業」。
您可以部署至多個專案和多個位置。服務帳戶必須具備資源和資源部署專案的權限。如需權限清單,請參閱「使用 IAM 控管存取權」。
本頁面假設您熟悉 Terraform。詳情請參閱「Terraform 和 Infra Manager」。
事前準備
- 啟用 Infra Manager。
- 確認您具備建立部署作業所需的 IAM 權限:
roles/config.admin。 - 確認您有具備必要權限的服務帳戶。詳情請參閱「設定服務帳戶」。
- 找出要部署的 Terraform 設定。請確認這項 Terraform 設定符合限制。具體來說,請確保設定不含機密資料。
- 如要在設定資源前預覽部署作業,請參閱「預覽部署作業」。
確認貴組織的產品配額與預定基礎架構相關。如果預定基礎架構超過組織的部署作業產品配額,可能會發生部署錯誤。詳情請參閱「配額與限制」。
Infra Manager 會使用 Cloud Build 建立、更新或預覽部署作業。建立及更新部署作業的逾時時間為兩小時,預覽部署作業的逾時時間則為一小時。
如果您在單一設定中管理的多項資源超過這項限制,請將設定拆分為多個部署作業。
授予設定專屬權限
如要部署 Terraform 設定中指定的 Google Cloud 資源,您用於呼叫 Infra Manager 的服務帳戶必須具備部署資源所需的特定權限。
除了使用 Infra Manager 服務所需的權限外,還需要這些權限。
如要進一步瞭解如何授予 Google Cloud 資源權限,以及確保您能存取所需專案,請參閱「設定服務帳戶」。
將私人 Git 存放區和主機連結至 Cloud Build
如要從私人 Git 存放區部署 Terraform 設定,請將 Git 主機和存放區連結至 Cloud Build。
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
Developer Connect
使用 Terraform 設定建立部署作業
您可以使用 Infra Manager,透過多種方式部署 Terraform 設定:
- 建議做法:在 Google Cloud 控制台中使用 Infra Manager 選取來源、查看部署作業詳細資料、預覽及部署 Terraform 設定。您可以在 Google Cloud 控制台使用 Infra Manager,從 Cloud Storage bucket 和 Git 存放區部署。
- 在 Google Cloud CLI 中使用 Infra Manager,從下列位置部署 Terraform 設定:
- Cloud Storage 值區
- Git 存放區
- 本機目錄
如需可與 Infra Manager 搭配使用的 Terraform 設定範例和範本,請參閱「 Google Cloud的 Terraform 模組和藍圖」。
選取所選工作流程的分頁標籤,進一步瞭解如何建立部署作業。
控制台
本節說明如何在 Google Cloud 控制台中使用 Infra Manager 部署 Terraform 設定。
- 前往 Google Cloud 控制台的「Infra Manager」頁面。
- 按一下「Create」(建立),建立新的部署作業。
在「Deployment details」(部署作業詳細資料) 頁面中,設定部署作業的初始參數。
更改項目:
- Deployment ID (部署作業 ID):在「Deployment ID」(部署作業 ID) 欄位中,輸入部署作業的描述性名稱。 如要進一步瞭解命名限制,請參閱部署作業名稱說明文件。
- 區域:從下拉式選單中選擇支援的地區。
- Terraform 版本:從下拉式選單中選擇支援的 Terraform 版本。系統會根據您選取的「區域」,自動填入可用的 Terraform 版本清單。根據預設,系統會選取最新支援的免費方案版本 (
1.5.7)。如果選取付費版本 (例如1.16.5),則會產生部署和管理費用。詳情請參閱「支援的 Terraform 版本」。 - 服務帳戶:選取現有服務帳戶或建立新帳戶。Infra Manager 會根據 Terraform 設定中列出的基礎架構,自動驗證權限。如要進一步瞭解如何使用服務帳戶和 Infra Manager,請參閱「設定服務帳戶」。
- Terraform 設定來源:點選切換鈕,選取「Git」或「Cloud Storage」,做為要部署的 Terraform 設定來源。
- 如果是 Git,請替換:
- Git 存放區:提供公開或私人 Git 存放區網址、分支版本或標記。
如果提供私人 Git 存放區,請務必將主機和存放區連結至 Cloud Build。 - 選用:Git 目錄:Git 存放區中含有 Terraform 設定的目錄。
- 選用:Git 參照:設定的 Git 參照。如未指定參照,系統會使用 Git 存放區預設的分支版本。
- Git 存放區:提供公開或私人 Git 存放區網址、分支版本或標記。
- 針對「Cloud Storage bucket」,請替換:
- 來源:儲存設定的 bucket 名稱。
- 如果是 Git,請替換:
在「Terraform details」(Terraform 詳細資料) 頁面中,使用「Key」(鍵) 和「Value」(值) 欄位,在 Terraform 設定中填入輸入值清單。
這些值可以是 Terraform 設定中的任何輸入值,包括預設未定義的值。如果所有輸入值都在 Terraform 設定中預設定義,則這些值為選用。按一下 [繼續]。
在「Advanced details」(進階詳細資料) 頁面中,設定部署作業的選用參數。
更改項目:
- 標籤:標籤和註解是任意形式文字的鍵/值組合。您可以使用標籤附加與資源相關聯的任意資訊。詳情請參閱註解說明文件。
- Worker 集區:Cloud Build 工作會在這個 worker 集區資源中執行。worker 集區的格式為
projects/{project}/locations/{location}/workerPools/{workerPoolId}。 - Artifacts Cloud Storage bucket:Cloud Build 記錄和構件在 Cloud Storage 中的位置。路徑格式為
gs://{bucket}/{folder}。
- 按一下「Create deployment」(建立部署作業),開始部署 Terraform 設定。在「Deployments」(部署作業) 頁面中,部署作業會新增至清單,並顯示「Status」(狀態)。 如要進一步瞭解部署作業,請選取部署作業,前往「Deployment details」(部署作業詳細資料) 頁面。
- 大功告成!您已使用 Infra Manager 部署 Terraform 設定。
按一下「繼續」。
gcloud CLI
本節說明如何部署儲存在 Cloud Storage bucket 中的 Terraform 設定。儲存空間 bucket 可讓您控管設定的存取權。
- 確認 Terraform 設定位於 Cloud Storage bucket。詳情請參閱「將設定上傳至 Storage bucket」。
如果儲存空間 bucket 所在的專案與執行 Infra Manager 的專案不同,請務必確認 Infra Manager 的服務帳戶具備 bucket 的讀取權限。詳情請參閱「設定服務帳戶」。
如果 Storage bucket 與 Infra Manager 位於同一個專案,則 bucket 的讀取權限已啟用。
部署 Terraform 設定:
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 檔案。如果使用物件版本管理功能,也可以指定物件的版本編號。詳情請參閱「使用版本化物件」。
如果儲存空間值區是 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 最新支援的免費方案版本 (
1.5.7)。如要使用付費版本 (例如1.16.5),則必須明確指定版本。 - 選用:ANNOTATION_KEY 和 ANNOTATION_VALUE 代表可附加至 Infra Manager 部署作業的任意形式文字鍵/值組合。如要進一步瞭解註解和標籤的使用方式和限制,請參閱「註解和標籤」。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Google Cloud Terraform 供應商。設為
SERVICE_MAINTAINED,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud的 Terraform 供應商」。
gcloud CLI
本節說明如何使用儲存在 Git 存放區中的 Terraform 設定。
- 確認您已安裝 Git。
- 如果 Terraform 設定儲存在
私人 Git 存放區 ,請確認 Git 主機和存放區已連結至 Cloud Build。 部署 Terraform 設定:
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 最新支援的免費方案版本 (
1.5.7)。如要使用付費版本 (例如1.16.5),則必須明確指定版本。 - 選用:ANNOTATION_KEY 和 ANNOTATION_VALUE 代表可附加至 Infra Manager 部署作業的任意形式文字鍵/值組合。如要進一步瞭解註解和標籤的使用方式和限制,請參閱「註解和標籤」。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Google Cloud Terraform 供應商。設為
SERVICE_MAINTAINED,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud的 Terraform 供應商」。
gcloud CLI
本節說明如何使用儲存在本機電腦上的 Terraform 設定。
- 如果您使用 Cloud Shell,則必須將設定上傳至 Cloud Shell。詳情請參閱「使用 Cloud Shell 管理檔案」。
部署 Terraform 設定:
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 最新支援的免費方案版本 (
1.5.7)。如要使用付費版本 (例如1.16.5),則必須明確指定版本。 - 選用:ANNOTATION_KEY 和 ANNOTATION_VALUE 代表可附加至 Infra Manager 部署作業的任意形式文字鍵/值組合。如要進一步瞭解註解和標籤的使用方式和限制,請參閱「註解和標籤」。
- 選用:PROVIDER_SOURCE:決定部署作業使用的 Google Cloud Terraform 供應商。設為
SERVICE_MAINTAINED,即可使用 Infra Manager 維護的 Terraform 供應商。如要使用 HashiCorp 維護的 Terraform 供應商,請省略這個欄位。詳情請參閱「使用 Google Cloud的 Terraform 供應商」。