將自訂 Terraform 模組匯入 Application Design Center 後,您就能將可重複使用的 Google Cloud 設定,新增為應用程式範本中的元件。匯入 Terraform 模組時,App Design Center 會在空間的目錄中建立元件範本,方便開發人員重複使用您制定的設計決策和政策。
如要瞭解如何編寫 Google Cloud的 Terraform 模組,請參閱下列資源:
事前準備
如要執行本文件中的工作,請要求管理員授予您啟用應用程式管理功能的資料夾或管理專案的必要角色,如下表所示:
| 工作 | 必要的角色 |
|---|---|
| 將 Terraform 模組匯入為自訂元件 | App Design Center 管理員 (roles/designcenter.admin),或App Design Center 使用者 ( roles/designcenter.user) |
如要進一步瞭解角色,請參閱「使用 IAM 控管存取權」。
設定及匯入模組
請完成下列步驟,連線至 GitHub、建立中繼資料檔案,以及匯入 Terraform 模組。
使用 Developer Connect 連結至存放區
建立 Developer Connect 連線,連至儲存 Google Cloud Terraform 模組的 GitHub 存放區。匯入時會用到這個連線。
建立 Developer Connect 連線。
如需相關步驟,請參閱「連結至 GitHub」。
建立 Developer Connect 存放區連結。
如需步驟,請參閱「將存放區連結新增至現有連線」。
選用:準備 Terraform 模組中繼資料
匯入 Terraform 模組時,您可以提供自己的中繼資料,或讓 App Design Center 為您建立中繼資料檔案。
舉例來說,以下是您可能為服務帳戶建立的 metadata.yaml 檔案:
spec:
info:
actuationTool:
flavor: Terraform
version: ">= 1.3"
interfaces: # Optional
variables:
- name: service_account
connections:
- source:
source: github.com/terraform-google/terraform-google-service-accounts
version: ">= 4.4"
spec:
outputExpr: email
requirements:
roles: # Optional after IAM integrations
- level: Project
roles:
- roles/iam.serviceAccountUser
- roles/iap.admin
- roles/run.admin
- roles/iam.serviceAccountAdmin
providerVersions:
- source: hashicorp/google
version: ">= 6, < 7"
- source: hashicorp/google-beta
version: ">= 6, < 7"
ui: # Optional
input:
variables:
ca_root_module:
name: ca_root_module
title: CA Root Module
service_account:
name: service_account
title: Service Account
從存放區匯入
您可以匯入以單一 Google Cloud 產品為基礎的 Terraform 模組,建立 App Design Center 元件。如果您在存放區中變更 Terraform 模組,請重複執行這些步驟來匯入變更。
如要匯入 Terraform 模組,請按照下列步驟操作:
找出要建立元件的目錄。
gcloud design-center spaces catalogs list \ --project=PROJECT \ --location=LOCATION \ --space=SPACE更改下列內容:
PROJECT:您的管理專案 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。
在空間的私人目錄中建立目錄範本。
gcloud design-center spaces catalogs templates create COMPONENT_TEMPLATE \ --project=PROJECT \ --catalog=CATALOG \ --location=LOCATION \ --space=SPACE \ --template-category=component-template更改下列內容:
COMPONENT_TEMPLATE:要建立的元件範本 ID。PROJECT:您的管理專案 ID。CATALOG:目錄 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。
詳情請參閱「gcloud design-center spaces catalogs templates create」。
根據存放區中的 Terraform 模組,建立目錄範本修訂版本。
gcloud design-center spaces catalogs templates revisions create REVISION \ --project=PROJECT \ --catalog=CATALOG \ --location=LOCATION \ --space=SPACE \ --template=COMPONENT_TEMPLATE \ --developer-connect-repo=DEVELOPER_CONNECT_REPO \ --developer-connect-repo-ref=DEVELOPER_CONNECT_REPO_REF \ --developer-connect-repo-dir=DEVELOPER_CONNECT_REPO_DIR \ --metadata=METADATA更改下列內容:
REVISION:要建立的修訂版本 ID。PROJECT:您的管理專案 ID。CATALOG:目錄 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。COMPONENT_TEMPLATE:您在上一個步驟中建立的範本 ID。DEVELOPER_CONNECT_REPO:要用做來源的 Developer Connect 存放區。例如:projects/my-project/locations/us-central1/connections/my-connection/gitRepositoryLinks/my-repo。DEVELOPER_CONNECT_REPO_REF:存放區中的 Git 分支版本或標記。例如:refs/tags/v1.0.0或refs/heads/main。DEVELOPER_CONNECT_REPO_DIR:存放區中的目錄。例如:modules/my-product。- 如要指定 Terraform 模組中繼資料,請執行下列任一操作:
- 如要使用自己的中繼資料檔案,請將
METADATA替換為您的metadata.yaml檔案。 - 如要自動使用存放區中的中繼資料檔案,請勿指定 --metadata 旗標。
- 如要使用自己的中繼資料檔案,請將
詳情請參閱「gcloud design-center spaces catalogs templates revisions create」。
與其他工作區共用目錄。
gcloud design-center spaces catalogs shares create SHARE \ --project=PROJECT \ --catalog=CATALOG \ --location=LOCATION \ --space=SPACE \ --destination-space=DESTINATION_SPACE更改下列內容:
SHARE:要建立的共用區 ID。PROJECT:您的管理專案 ID。CATALOG:目錄 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。DESTINATION_SPACE:目的地聊天室 ID。
使用匯入的元件建立應用程式範本
使用匯入的元件和 Google 提供的元件建立應用程式範本。
建立新的應用程式範本。
gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE更改下列內容:
APPLICATION_TEMPLATE:要建立的應用程式範本 ID。PROJECT:您的管理專案 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。
詳情請參閱「gcloud design-center spaces application-templates create」。
找出要新增至範本的元件範本修訂版本 URI。
gcloud design-center spaces shared-templates list \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --uri更改下列內容:
PROJECT:您的管理專案 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。
在應用程式範本中新增元件。
gcloud design-center spaces application-templates components create COMPONENT \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --application-template=APPLICATION_TEMPLATE \ --shared-template-revision-uri=SHARED_TEMPLATE_URI更改下列內容:
COMPONENT:要新增至範本的元件 ID。PROJECT:您的管理專案 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。APPLICATION_TEMPLATE:要新增元件的應用程式範本 ID。SHARED_TEMPLATE_URI:元件共用範本 URI。例如:projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1。
詳情請參閱「gcloud design-center spaces application-templates components create」。
在範本中加入第二個元件。
gcloud design-center spaces application-templates components create COMPONENT_2 \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --application-template=APPLICATION_TEMPLATE \ --shared-template-revision-uri=SHARED_TEMPLATE_URI_2更改下列內容:
COMPONENT_2:要新增至範本的第二個元件 ID。PROJECT:您的管理專案 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。APPLICATION_TEMPLATE:要新增元件的應用程式範本 ID。SHARED_TEMPLATE_URI_2:第二個元件共用範本 URI。例如:projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1。
詳情請參閱「gcloud design-center spaces application-templates components create」。
在兩個元件之間建立連線。
gcloud design-center spaces application-templates components connections create CONNECTION \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --application-template=APPLICATION_TEMPLATE \ --component=COMPONENT \ --destination-component-uri=SHARED_TEMPLATE_URI_2更改下列內容:
CONNECTION:要新增至範本的 連線 ID。PROJECT:您的管理專案 ID。LOCATION:您的位置 ID。SPACE:您的聊天室 ID。APPLICATION_TEMPLATE:要新增元件的應用程式範本 ID。SHARED_TEMPLATE_URI_2:第二個元件共用範本 URI。例如:projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1。
詳情請參閱「gcloud design-center spaces application-templates components connections create」。