Terraform と AFT バージョン - AWS Control Tower

Terraform と AFT バージョン

Account Factory for Terraform (AFT) は、Terraform バージョン 0.15.x 以降をサポートしています。次の例に示すように、AFT デプロイプロセスの入力パラメータとして Terraform のバージョンを指定する必要があります。

terraform_version = "0.15.1"

Terraform ディストリビューション

AFT は、次の 3 つの Terraform ディストリビューションをサポートしています。

  • Terraform OSS

  • Terraform Cloud

  • Terraform Enterprise

これらのディストリビューションについては、以降のセクションで説明します。AFT ブートストラッププロセス中に、選択した Terraform ディストリビューションを入力パラメータとして指定します。AFT デプロイと入力パラメータの詳細については、「AWS Control Tower Account Factory for Terraform (AFT) のデプロイ」を参照してください。

Terraform Cloud または Terraform Enterprise ディストリビューションを選択した場合、terraform_token に指定する API トークンは、ユーザーまたはチーム API トークンである必要があります。組織トークンは、すべての必須 API でサポートされているわけではありません。セキュリティ上の理由から、次の例に示すように terraform 変数を割り当てることによって、このトークンの値をバージョン管理システム (VCS、Version Control System) にチェックインしないようにする必要があります。

# Sensitive variable managed in Terraform Cloud: terraform_token = var.terraform_cloud_token

Terraform オープンソースソフトウェア (Terraform OSS、Terraform Open Source Software)

ディストリビューションとして Terraform OSS を選択すると、AFT は AFT 管理アカウントで Terraform バックエンドを管理します。AFT は、AFT デプロイメントおよび AFT パイプラインフェーズ中に実行する、指定された Terraform バージョンの terraform-cli をダウンロードします。結果の Terraform 状態設定は、次の形式の名前で Simple Storage Service (Amazon S3) バケットに格納されます。

aft-backend-[account_id]-primary-region

AFT は、災害対策のために、次の形式の名前で、別の AWS リージョンに Terraform 状態設定をレプリケートする Simple Storage Service (Amazon S3) バケットも作成します。

aft-backend-[account_id]-secondary-region

これらの Terraform 状態の Simple Storage Service (Amazon S3) バケットの削除機能に対しては、多要素認証 (MFA、Multi-Factor Authentication) を有効にすることをお勧めします。Terraform OSS の詳細については、Terraform のドキュメントを参照してください。

ディストリビューションとして Terraform OSS を選択するには、次の入力パラメータを指定します。

terraform_distribution = "oss"

Terraform Cloud

ディストリビューションとして Terraform Cloud を選択すると、AFT は Terraform Cloud 組織内に次のコンポーネントのワークスペースを作成し、結果の Terraform の実行に対して API 駆動型のワークフローを開始します。

  • アカウントリクエスト

  • AFT によってプロビジョニングされたアカウントの AFT アカウントプロビジョニングカスタマイズ

  • AFT によってプロビジョニングされたアカウントのアカウントカスタマイズ

  • AFT によってプロビジョニングされたアカウントのグローバルカスタマイズ

結果の Terraform の状態設定は Terraform Cloud によって管理されます。

ディストリビューションとして Terraform Cloud を選択するには、次の入力パラメータを指定します。

  • terraform_distribution = "tfc"

  • terraform_token — このパラメータには、Terraform Cloud トークンの値が含まれます。AFT は、その値を機密としてマークし、AFT 管理アカウントの SSM パラメータストアに secure string として保存します。会社のセキュリティポリシーとコンプライアンスガイドラインに従って、Terraform トークンの値を定期的にローテーションすることをお勧めします。Terraform トークンは、ユーザーまたはチームレベルの API トークンである必要があります。組織トークンはサポートされていません。

  • terraform_org_name — このパラメータには、Terraform Cloud 組織の名前が含まれます。

Terraform Cloud の設定方法の詳細については、Terraform のドキュメントを参照してください。

Terraform Enterprise

ディストリビューションとして Terraform Enterprise を選択すると、AFT は Terraform Enterprise 組織内に次のコンポーネントのワークスペースを作成し、結果の Terraform の実行に対して API 駆動型のワークフローをトリガーします。

  • アカウントリクエスト

  • AFT によってプロビジョニングされたアカウントの AFT アカウントプロビジョニングカスタマイズ

  • AFT によってプロビジョニングされたアカウントのアカウントカスタマイズ

  • AFT によってプロビジョニングされたアカウントのグローバルカスタマイズ

結果の Terraform の状態設定は Terraform Enterprise セットアップによって管理されます。

ディストリビューションとして Terraform Enterprise を選択するには、次の入力パラメータを指定します。

  • terraform_distribution = "tfe"

  • terraform_token — このパラメータには、Terraform Enterprise トークンの値が含まれます。AFT は、その値を機密としてマークし、AFT 管理アカウントの SSM パラメータストアに secure string として保存します。会社のセキュリティポリシーとコンプライアンスガイドラインに従って、Terraform トークンの値を定期的にローテーションすることをお勧めします。

  • terraform_org_name — このパラメータには、Terraform Enterprise 組織の名前が含まれます。

  • terraform_api_endpoint — このパラメータには、Terraform Enterprise 環境の URL が含まれます。このパラメータの値は、次の形式であることが必要です。

    https://{fqdn}/api/v2/

Terraform Enterprise の設定方法の詳細については、Terraform のドキュメントを参照してください。