[レポート]Building multi-account, multi-region apps with Terraform Stacks (DOP206) # AWSreInvent

[レポート]Building multi-account, multi-region apps with Terraform Stacks (DOP206) # AWSreInvent

Clock Icon2024.12.18

AWSre:Invent2024のセッション【Building multi-account, multi-region apps with Terraform Stacks (DOP206)】のレポートを本記事ではお伝えします。

概要

Efficiently managing complex application platforms remains a significant challenge for many organizations. In this session, discover how to streamline the provisioning and management of infrastructure across diverse environments and simplify complex multilayered deployments with new capabilities in HCP Terraform. Learn how to utilize Terraform to enhance your infrastructure management practices and increase overall operational efficiency. This presentation is brought to you by HashiCorp, an AWS Partner.

セッション動画の概要から引用

セッション動画

https://www.youtube.com/watch?v=gSM9g1v9bSU

レポート

Multi-environment use cases

複数の環境を利用するユースケースとして以下を上げていました。

  1. Platform Infrastructure
    1. ネットワーク関連コンポーネント
    2. IAMロールやセキュリティ設定
  2. Workload Resource
    1. Kubernetesクラスター
    2. アプリケーションコンポーネント

それぞれの特徴は以下です。

multienv use cases

上記のユースケースにて、デプロイメントをどうやって管理するのかが課題になっています。

具体的には以下のような課題です。

  • コンピューティングリソースより先にネットワーキングリソースをデプロイする必要がある(依存関係)
  • 開発環境デプロイ後に本番環境をデプロイ(順序制御)
  • デプロイに時間がかかる

Declarative Terraform deployments

デプロイメントをコード化(Infrastructure as Code AS Codeという表現がされていました)することで、課題を解決します。

Terraform Stacksでは、以下の概念を使ってデプロイメントをコード化します。

  • Components
  • Deployments
  • Orchestration
  • Deferred Changes

Key concepts

Deferred Changes

Modeling deployments with Terraform Stacks

Terraform Stacksの概念を使って、どうコードをモデリングしていくかを説明していました。

例えば、

  1. VPC・IAM Role・Permission SetをComponentsとしてそれぞれ定義
  2. 先程の3つのComponentsを含めたDeploymentsを定義
  3. Deploymentsに対してOrchestration Ruleを定義

といった感じです。

以下はPlatform Infrastructureのモデリングですが、Workload Resourceに対しても同様にモデリングを行っていました。

modeling platform

Demo

Terraform Stacksを使って、以下をデプロイするデモを行っていました。

  • 複数アカウントにIAM Role
  • 複数OUにIAM Role
  • EKSクラスターとKubernetesリソース

Components,Deployments,Orchestration,Deferred Changesの4つの概念を使ったデモでした。

デモで使われたコードは以下で公開されています。

https://github.com/wellsiau-reInvent2024/dop206-example-infra-1
https://github.com/wellsiau-reInvent2024/dop206-example-infra-2

Recap

Terraform Stacksによる運用効率化の3つのポイントを上げていました。

  • スケーラビリティ: 複数環境をシンプルな記述で表R現
  • 可視性の向上: 複数環境のデプロイステータスを統合されたビューで確認
  • 統合管理: 依存関係の管理

operational_efficiency_with_terraform_stacks

最後には、段階的なプロセス(導入 -> 標準化 -> スケーリング)が大事であることをお話していました。

以下のスライドはTerraform Stacksに限らず、IaCを初めたい場合に参考になりそうですね。

follow_the_blueprint_for_cloud_success

おわりに

Terraform Stacksの基本概念から動作をデモを交えて学ぶことができるセッションでした。

OU内のアカウントに対して、一括でリソースを作成するデモが印象的でした。

TerraformでもCloudFormation StackSetsみたいなことが簡単にできて良いですね。

Terraform Stacksは、複数環境・複数リージョンでインフラをデプロイする際の繰り返しを削減し、依存関係も管理してくれます。

2024年12月時点では、パブリックプレビューですがGAが楽しみです。

以上、AWS事業本部の佐藤(@chari7311)でした。

関連ブログ

https://dev.classmethod.jp/articles/terraform-stacks-started-hashitalks-2024/

https://dev.classmethod.jp/articles/terraform-stacks-illustration/

https://dev.classmethod.jp/articles/tfstacks-orchestration-rules/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.