建立 Terraform 設定
為機構收錄 Service Catalog 解決方案時,您可以建立 Terraform 設定 (或稱「設定」),供使用者透過 Terraform 部署。建立設定後,您可以將設定指派給目錄,與使用者共用。
在本指南中,您將使用 Cloud Build 在最新版本 Terraform Docker 映像檔中執行 Terraform 指令,並使用 Cloud Storage 儲存及管理 Terraform 資源,例如模組和狀態檔案。
如需使用 Terraform 的資源和指引,請參閱「搭配 Google Cloud使用 Terraform」。
事前準備
您必須具備下列 Identity and Access Management (IAM) 角色:
- 目錄管理員 或 目錄管理員,適用於與已啟用 Service Catalog 的專案相關聯的Google Cloud 機構 Google Cloud 。如果您不具備這個角色,請與組織管理員聯絡,要求對方授予存取權。
- 如要在 Google Cloud 專案中建立解決方案,您需要具備該專案的「儲存空間管理員」角色。如果 Terraform 設定位於不同專案,您也必須擁有包含 Terraform 設定的專案的 Storage 管理員角色。
- 要建立解決方案的 Google Cloud 專案的「Cloud Build 編輯者」。
如要使用自己的服務帳戶,您也必須在 Google Cloud 專案中擁有服務帳戶使用者角色,該專案包含您打算使用的服務帳戶。
如果您不具備上述角色,請向組織管理員要求存取權。
如果您打算使用自己的服務帳戶,該帳戶必須具備下列 IAM 角色:
- 如要在 Google Cloud 專案中建立解決方案,您需要具備該專案的「儲存空間管理員」角色。如果 Terraform 設定位於不同專案,服務帳戶也必須具備 Terraform 設定所在專案的Storage 物件檢視者角色。
- 您要建立解決方案的Google Cloud 專案需要記錄檔寫入者角色。
如果您不具備上述角色,請向組織管理員要求存取權。
在要建立設定的專案中設定 Cloud Build:
-
啟用 Cloud Build API。
啟用 API 時,系統會自動建立 Cloud Build 服務帳戶,供您在後續步驟中使用。啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。 - 前往「Cloud Build」頁面。
- 選取左側面板中的「設定」。
- 使用「服務帳戶電子郵件」部分提供的服務帳戶。
- 如果您未使用自己的服務帳戶,請將下列 IAM 角色授予服務帳戶。如需授予角色的步驟,請參閱「設定 Cloud Build 服務帳戶的存取權」。
-
將設定檔上傳至 Cloud Storage
您可以使用 Cloud Storage 管理 Service Catalog 的 Terraform 設定檔。
建立 Cloud Storage 值區
如要設定 Cloud Storage,請在為機構啟用 Service Catalog 的相同專案中建立 bucket:
- 前往 Google Cloud 控制台的 Cloud Storage「Buckets」(值區) 頁面。
- 點選 「Create」(建立)。
- 在「建立 bucket」頁面中,輸入 bucket 資訊。如要前往下一個步驟,請按「繼續」。
- 在「開始使用」部分,執行下列操作:
-
在「Choose where to store your data」(選擇資料的儲存位置) 專區中,執行下列操作:
- 選取「位置類型」。
- 從「位置類型」下拉式選單中,選擇要永久儲存 bucket 資料的位置。
- 如果您選取「雙區域」位置類型,也可以使用相關核取方塊啟用強化型複製。
- 如要設定跨值區複製,請選取「透過 Storage 移轉服務新增跨值區複製作業」,然後按照下列步驟操作:
設定跨 bucket 複製作業
- 在「Bucket」選單中選取 bucket。
在「複製設定」部分,按一下「設定」,設定複製作業的設定。
系統隨即會顯示「設定跨 bucket 複製作業」窗格。
- 如要依物件名稱前置字串篩選要複製的物件,請輸入要納入或排除物件的前置字串,然後按一下「新增前置字串」。
- 如要為複製的物件設定儲存空間級別,請從「儲存空間級別」選單中選取儲存空間級別。如果略過這個步驟,複製的物件預設會使用目標值區的儲存空間級別。
- 按一下 [完成]。
- 在「選擇資料儲存方式」部分,執行下列操作:
- 在「選取如何控制物件的存取權」部分,選取 bucket 是否要強制執行禁止公開存取,並為 bucket 的物件選取存取權控管方法。
-
在「選擇保護物件資料的方式」部分,執行下列操作:
- 在「資料保護」下方,選取要為 bucket 設定的選項。
- 如要啟用虛刪除,請按一下「虛刪除政策 (用於資料復原)」核取方塊,並指定要保留物件的天數 (刪除後)。
- 如要設定「物件版本管理」,請按一下「物件版本管理 (用於版本管控)」核取方塊,並指定每個物件的版本數量上限,以及非現行版本失效的天數。
- 如要為物件和 bucket 啟用保留政策,請勾選「保留 (符合法規)」核取方塊,然後執行下列操作:
- 如要啟用 Object Retention Lock,請按一下「啟用物件保留功能」核取方塊。
- 如要啟用「Bucket Lock」,請勾選「Set bucket retention policy」(設定值區保留政策) 核取方塊,然後選擇保留期限的時間單位和長度。
- 如要選擇物件資料的加密方式,請展開「資料加密」部分 (),然後選取「資料加密」方法。
- 在「資料保護」下方,選取要為 bucket 設定的選項。
- 點選「建立」。
啟用物件版本管理功能
您必須為 bucket 啟用物件版本管理功能,才能避免 Terraform 設定遭到刪除或覆寫。如要啟用物件版本管理功能,請參閱 Cloud Storage 說明文件中的「使用物件版本管理」一文。
授予值區存取權
貴機構使用者部署設定時,Cloud Build 服務帳戶必須具備 bucket 的讀取權限。如果值區儲存在與使用者部署設定相同的 Google Cloud 專案中,服務帳戶就已具備這項存取權。
如果使用者要在其他Google Cloud 專案中部署設定,請使用下列其中一種方法授予值區存取權:
將 Storage 物件檢視者(
roles/storage.objectViewer) 角色授予使用者的 Cloud Build 服務帳戶,或使用者部署 Terraform 設定的 Google Cloud 資源 (例如專案、資料夾或機構)。使用存取控制清單 (ACL) 管理儲存空間的存取權。
如要進一步瞭解如何管理值區存取權,請參閱 Cloud Storage 的「存取權控管總覽」一文。
建立及上傳 Terraform 模組
設定 Cloud Storage bucket 後,您必須建立並上傳 Terraform 模組,這是所有設定檔的容器。Service Catalog 會使用這個模組自動產生 JSON 結構定義檔,定義設定的變數。
呼叫目前目錄以外的模組時,請使用遠端路徑,而非相對路徑。例如,使用 source = "GoogleCloudPlatform/cloud-run/google",而不使用 source = "../../"。
如要瞭解常見用途的模組,請參閱「Terraform blueprints and modules for Google Cloud」。 Google Cloud
以下程式碼範例說明 Terraform 設定檔 main.tf:
variable "machine_type" {
type = string
default = "n1-standard-1"
}
variable "zone" {
type = string
default = "us-central1-a"
}
variable "deployment_identifier" {
description = "The unique name for your instance"
type = string
}
resource "google_compute_instance" "default" {
name = "vm-${var.deployment_identifier}"
machine_type = var.machine_type
zone = var.zone
boot_disk {
device_name = "boot"
auto_delete = true
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
}
建立模組後,請將檔案壓縮成 ZIP 檔案。請確認模組儲存在 ZIP 檔案的根目錄。
如要確保壓縮 Terraform 檔案時模組能正確儲存,請執行下列指令:
none
zip solution.zip file1.tf file2.tf file3.tf
然後將 ZIP 檔上傳至 bucket。如需上傳 ZIP 檔案的步驟,請參閱 Cloud Storage 說明文件中的「上傳物件」一文。
在 Service Catalog 中建立設定
使用 Terraform 模組設定 Cloud Storage bucket 後,請建立包含該 bucket 的 Service Catalog 解決方案。
如要建立 Terraform 設定做為 Service Catalog 解決方案,請按照下列步驟操作:
前往 Google Cloud 控制台的 Service Catalog 管理員「解決方案」頁面。
前往「解決方案」頁面如要選擇 Google Cloud 專案,請按一下「選取」。
按一下「建立解決方案」。在下拉式清單中,選取「Create Terraform config」(建立 Terraform 設定)。
輸入 Terraform 設定的名稱、說明和宣傳標語。標語是解決方案的簡短說明,使用者瀏覽 Service Catalog 時會看到。
在「Link to Terraform config」(Terraform 設定的連結) 欄位中,提供 Cloud Storage bucket 的連結,該 bucket 包含 Terraform 模組的 ZIP 檔案,例如
gs://my-terraform-bucket/my-zip-file.zip。(選用) 上傳解決方案的圖示。建議圖示尺寸為 80 x 80 像素。
視需要輸入創作者的支援連結和聯絡資訊。
(選用) 新增解決方案的說明文件連結。
選取要用於部署解決方案的 Terraform 版本。
如要提供自己的服務帳戶,請按一下「選取或輸入您的服務帳戶」旁的核取方塊。如果服務帳戶位於您要建立解決方案的同一個 Google Cloud 專案中,請選取「從目前的專案選取服務帳戶」,然後從下拉式選單中選取服務帳戶。如果服務帳戶位於與解決方案不同的 Google Cloud 專案中,請選取「輸入任意專案中服務帳戶的電子郵件地址」,然後輸入服務帳戶的電子郵件地址。
點選「建立」。
解決方案建立完成後,會顯示在 Service Catalog 管理員的「解決方案」頁面。
以下螢幕截圖說明如何建立 Terraform 設定:
後續步驟
- 將 Terraform 設定指派給目錄,方便貴機構使用者存取及部署解決方案。
- 更新解決方案,使用最新的 Terraform 設定詳細資料。