カスタム 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 を使用してリポジトリに接続する
Google Cloud Terraform モジュールを保存する GitHub リポジトリへの Developer Connect 接続を作成します。この接続は、インポート時に使用します。
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
リポジトリからインポートする
App Design Center コンポーネントを作成するには、単一の Google Cloud プロダクトに基づく Terraform モジュールをインポートします。リポジトリで 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 list をご覧ください。
スペースのプライベート カタログにカタログ テンプレートを作成します。
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-repoDEVELOPER_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。
詳細については、gcloud design-center spaces catalogs shares create をご覧ください。
インポートされたコンポーネントを使用してアプリケーション テンプレートを作成する
インポートしたコンポーネントと 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 shared-templates list をご覧ください。
アプリケーション テンプレートにコンポーネントを追加します。
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 をご覧ください。
テンプレートに 2 つ目のコンポーネントを追加します。
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: テンプレートに追加する 2 番目のコンポーネントのコンポーネント ID。PROJECT: 実際の管理プロジェクト ID。LOCATION: 地域 ID。SPACE: スペース ID。APPLICATION_TEMPLATE: コンポーネントを追加するアプリケーション テンプレートのテンプレート ID。SHARED_TEMPLATE_URI_2: 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 をご覧ください。
2 つのコンポーネント間の接続を作成します。
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: 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 をご覧ください。
次のステップ
- デプロイする前に、アプリケーションを作成します。
- アプリケーションをデプロイする。
- Terraform コードをエクスポートします。