Application Design Center を使用すると、既存のマルチプロダクトGoogle Cloud Terraform 構成を、コードを個別のコンポーネント モジュールに再構築したり、最初にカタログに公開したりすることなく、そのままアプリケーション テンプレートにインポートできます。
カタログ コンポーネントとしてインポートし、デザイン キャンバスで接続する単一プロダクトの Terraform モジュールとは異なり、マルチプロダクトの Terraform 構成は、複数の Google Cloud プロダクトにリソースをプロビジョニングするルート モジュールです。単一プロダクト モジュールをコンポーネントとしてインポートするには、コンポーネントをインポートするをご覧ください。
既存の Terraform 構成を App Design Center にインポートすると、次のことができます。
- 既存の Terraform 構成を App Design Center のアプリケーション ライフサイクル管理に移行し、デプロイされたリソースを App Hub に自動的に登録します。
- 不変のアプリケーション テンプレート リビジョンを作成して、Terraform 構成をバージョニングします。
- Infrastructure Manager を使用してアプリケーションをプレビューしてデプロイするか、Terraform ファイルを Cloud Storage にエクスポートします。
テンプレート リビジョンを作成したら、次のいずれかの方法で使用できます。
- 直接デプロイする: リビジョンからアプリケーションを作成し、プレビューして評価レポートを取得してデプロイします。テンプレートをカタログに公開したり、共有したり、共有済みテンプレートを最初に見つけたりする必要はありません。
- カタログを介して再利用する: リビジョンをカタログに公開し、コンポーネントとして複合アプリケーション テンプレートに追加して、複合テンプレートの Terraform をエクスポートします。詳細については、アプリケーション テンプレートをカタログに公開するをご覧ください。
始める前に
このドキュメントのタスクを実行するには、次の表に示すように、アプリ対応フォルダまたは管理プロジェクトに必要なロールを付与するよう管理者に依頼してください。
| タスク | 必要なロール |
|---|---|
| アプリケーション テンプレートとテンプレート リビジョンの作成、インポート、スナップショット、エクスポート | App Design Center 管理者(roles/designcenter.admin)、またはApp Design Center ユーザー( roles/designcenter.user) |
| アプリケーションを作成、デプロイ、エクスポートする | アプリケーション管理者(roles/designcenter.applicationAdmin)、またはアプリケーション編集者( roles/designcenter.applicationEditor) |
ロールの詳細については、Identity and Access Management を使用したアクセス制御をご覧ください。
Terraform ルート モジュール(.tf ファイルと、.json ファイルなどのサポート ファイル)を次のいずれかのソースに保存します。
- Cloud Storage バケット。
- Developer Connect リポジトリ。
- 公開 Git リポジトリ。
- ファイルを含むローカル YAML ファイルまたは JSON ファイル。
Terraform をアプリケーション テンプレートにインポートする
Google Cloud CLI を使用して次の手順を完了し、アプリケーション テンプレートを作成して、既存の Terraform 構成をインポートし、不変のテンプレート リビジョンを作成します。
スペースにアプリケーション テンプレートを作成します。
gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --display-name=DISPLAY_NAME次のように置き換えます。
APPLICATION_TEMPLATE: 作成するアプリケーション テンプレートの ID。PROJECT: 実際の管理プロジェクト ID。LOCATION: 地域 ID。SPACE: スペース ID。DISPLAY_NAME: アプリケーション テンプレートの表示名。
詳細については、gcloud design-center spaces application-templates create をご覧ください。
次のいずれかのソースから Terraform 構成をアプリケーション テンプレートにインポートします。
Cloud Storage バケットからインポートするには、次のコマンドを実行します。
gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --gcs-uri=GCS_URI \ --raw-terraform-import-enabledDeveloper Connect リポジトリからインポートするには、次のコマンドを実行します。
gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --developer-connect-repo-uri=DEVELOPER_CONNECT_REPO_URI \ --developer-connect-branch=DEVELOPER_CONNECT_BRANCH \ --developer-connect-dir=DEVELOPER_CONNECT_DIR \ --raw-terraform-import-enabled公開 Git リポジトリからインポートするには、次のコマンドを実行します。
gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --git-source-repo=GIT_SOURCE_REPO \ --git-source-ref-tag=GIT_SOURCE_REF_TAG \ --git-source-dir=GIT_SOURCE_DIR \ --raw-terraform-import-enabledIaCModuleペイロードを含むローカル YAML ファイルまたは JSON ファイルからインポートするには、次のコマンドを実行します。gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --iac-module-from-file=IAC_MODULE_FILE \ --raw-terraform-import-enabled
次のように置き換えます。
APPLICATION_TEMPLATE: アプリケーション テンプレート ID。PROJECT: 実際の管理プロジェクト ID。LOCATION: 地域 ID。SPACE: スペース ID。GCS_URI: Terraform ファイルを含む Cloud Storage URI(gs://BUCKET_NAME/FOLDER_PATH形式)。DEVELOPER_CONNECT_REPO_URI: Developer Connect リポジトリ リンクの URI(projects/PROJECT/locations/LOCATION/connections/CONNECTION/gitRepositoryLinks/REPO_LINK形式)。DEVELOPER_CONNECT_BRANCH: Developer Connect リポジトリのブランチ名。または、--developer-connect-ref-tagまたは--developer-connect-commit-shaを指定します。DEVELOPER_CONNECT_DIR: Developer Connect リポジトリのディレクトリ パス。GIT_SOURCE_REPO: 公開 Git リポジトリの HTTPS URL。GIT_SOURCE_REF_TAG: 公開 Git リポジトリの Git リファレンスまたはタグ。GIT_SOURCE_DIR: 公開 Git リポジトリのディレクトリ パス。IAC_MODULE_FILE: Terraform ファイルを含むローカル YAML ファイルまたは JSON ファイルのパス。
アプリケーション テンプレートのスナップショットを作成して、アプリケーションの作成とデプロイに使用できる不変のアプリケーション テンプレート リビジョンを生成します。
gcloud design-center spaces application-templates snapshot APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE次のように置き換えます。
APPLICATION_TEMPLATE: アプリケーション テンプレート ID。PROJECT: 実際の管理プロジェクト ID。LOCATION: 地域 ID。SPACE: スペース ID。
出力には、作成されたアプリケーション テンプレート リビジョンの URI が
projects/PROJECT/locations/LOCATION/spaces/SPACE/applicationTemplates/APPLICATION_TEMPLATE/revisions/REVISIONの形式で含まれます。
テンプレートからアプリケーションを作成してデプロイする
インポートした Terraform テンプレートのスナップショット リビジョンを作成したら、アプリケーション ドラフトを作成し、入力変数の値を指定して、アプリケーションをデプロイできます。
アプリケーション テンプレートのリビジョンからアプリケーションのドラフトを作成します。
gcloud design-center spaces applications create APPLICATION \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --source-application-template-revision=SOURCE_APPLICATION_TEMPLATE_REVISION \ --deployment-project=DEPLOYMENT_PROJECT \ --deployment-region=DEPLOYMENT_REGION \ --app-parameters=APP_PARAMETERS \ --scope-type=SCOPE_TYPE次のように置き換えます。
APPLICATION: 作成するアプリケーションの ID。PROJECT: 実際の管理プロジェクト ID。LOCATION: 地域 ID。SPACE: スペース ID。SOURCE_APPLICATION_TEMPLATE_REVISION:snapshotコマンドによって返されたアプリケーション テンプレート リビジョンの URI。DEPLOYMENT_PROJECT: Terraform リソースがデプロイされるターゲット プロジェクト ID。DEPLOYMENT_REGION: Terraform リソースがデプロイされるターゲット リージョン。APP_PARAMETERS: 省略可。Terraform ルート モジュールの入力変数の Key-Value ペア(key=KEY,value=VALUEなど)、またはアプリケーション パラメータを含む YAML ファイルまたは JSON ファイルのパス。SCOPE_TYPE: アプリケーションのスコープ(regionalまたはglobal)。
アプリケーションの管理の詳細については、アプリケーションを管理するをご覧ください。
アプリケーションをプレビューしてデプロイします。詳細な手順については、アプリケーションをデプロイするをご覧ください。
Terraform コードを Cloud Storage にエクスポートする
Terraform ファイルは、アプリケーション テンプレート、アプリケーション テンプレートのリビジョン、またはアプリケーションから Cloud Storage バケットにエクスポートできます。独自の CI/CD ツールで Terraform を実行する場合や、バージョン管理にコピーを保持する場合は、エクスポートします。
アプリケーション テンプレートの下書きから Terraform ファイルをエクスポートするには、次のコマンドを実行します。
gcloud design-center spaces application-templates export APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URIアプリケーション テンプレート リビジョンから Terraform ファイルをエクスポートするには、次のコマンドを実行します。
gcloud design-center spaces application-templates revisions export REVISION \ --application-template=APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URIアプリケーションから Terraform ファイルをエクスポートするには(構成済みのアプリケーション パラメータが入力された
zz_adc_inputs.auto.tfvars.jsonを含む)、次のコマンドを実行します。gcloud design-center spaces applications export APPLICATION \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
次のように置き換えます。
APPLICATION_TEMPLATE: アプリケーション テンプレート ID。REVISION: アプリケーション テンプレートのリビジョン ID。APPLICATION: アプリケーション ID。PROJECT: 実際の管理プロジェクト ID。LOCATION: 地域 ID。SPACE: スペース ID。ARTIFACT_LOCATION_GCS_URI: 宛先の Cloud Storage URI(gs://BUCKET_NAME/EXPORT_FOLDER形式)。
次のステップ
- アプリケーションを管理する。
- アプリケーションをデプロイする。
- Terraform をダウンロードしてデプロイする。
- Google Cloud コンソールから Terraform コードをエクスポートする。
- アプリケーション テンプレートをカタログに公開する。
- コンポーネントをインポートする。