Terraform モジュールにプログラム可能な AWS Landing Zone を導入

こんにちは、みんな! XNUMX月、OTUSは新しいコースを開始します - クラウド ソリューション アーキテクチャ。 このコースの開始に備えて、このトピックに関する興味深い資料の翻訳を共有します。

Terraform モジュールにプログラム可能な AWS Landing Zone を導入

AWS ランディング ゾーン は、お客様がベストプラクティスに基づいて安全なマルチアカウント AWS 環境を迅速にセットアップできるようにするソリューションです。

XNUMX 年以上にわたり、Mitoc Group のチームは、大規模組織がデジタル変革を成功させ、デジタル フットプリントを AWS クラウドに構築または移行できるよう、たゆまぬ努力を続けてきました。 言い換えれば、AWS の友人の言葉を借りれば、「当社の顧客は AWS で自分自身を再発明している」ということです。 顧客自身に代わって仕組みを再発明し、簡素化するのは終わりのない取り組みであり、AWS は習得しやすいソリューションで複雑な問題を解決するという素晴らしい仕事をしています。

Terraform モジュールにプログラム可能な AWS Landing Zone を導入
AWS ランディング ゾーン (ソース)

AWS ランディング ゾーンとは何ですか?

公式情報源からの情報によると:

AWS Landing Zone は、AWS のベストプラクティスに基づいて、顧客が複数のアカウントを使用して安全な AWS 環境を迅速にセットアップできるようにするソリューションです。 オプションが非常に多いため、マルチアカウント環境のセットアップには時間がかかり、複数のアカウントとサービスの設定が必要となり、AWS のサービスについての深い理解が必要になります。

AWS Landing Zone により、さまざまな顧客に提供される同様の設計パターンの複雑さと一貫性が大幅に軽減されました。 一方、私たちのチームは、さらに自動化に使用するために、一部の CloudFormation コンポーネントを Terraform コンポーネントとして再構成する必要がありました。

そこで私たちは、AWS Landing Zone ソリューション全体を Terraform で構築してはどうだろうかと自問しました。 これを行うことで顧客の問題は解決できるでしょうか? スポイラー:それは決定されるでしょう、そしてすでに決定されています! 🙂

AWS Landing Zone を使用すべきでないのはどのような場合ですか?

XNUMX つまたは XNUMX つの AWS アカウント内で通常のクラウド サービスとクラウド リソースを扱っている場合、これらの対策は過剰になる可能性があります。 この点に関係ない人は読み続けてください:)

仕事を始める前に考慮すべきことは何ですか?

私たちがこれまで協力してきた大規模組織の多くは、すでに何らかのクラウド戦略を導入しています。 企業は、明確なビジョンや期待がなければ、クラウド サービスをうまく導入するのに苦労しています。 時間をかけて戦略を定義し、AWS がその戦略にどのように適合するかを理解してください。

戦略を設定する際、AWS Landing Zone の成功した顧客は次の点に積極的に重点を置いています。

  • 自動化は単純に選択肢ではありません。 クラウドネイティブの自動化が推奨されます。
  • チームは一貫して同じ仕組みと同じツール セットを使用して、クラウド リソースをプロビジョニングします。 Terraformを使用した方が良いでしょう。
  • 最も生産性の高いクラウド ユーザーは、再利用可能なプロセスを作成し、それを再利用可能なコードではなく再利用可能なサービスとして提供できます。 サーバーレス アーキテクチャが推奨されます。

AWS Landing Zone 用の Terraform モジュールの紹介

数か月の努力を経て、皆さんにご紹介できることを嬉しく思います AWS Landing Zone の Terraform モジュール. ソースコード GitHub に保存されており、 安定リリースバージョン Terraform モジュール レジストリで公開されています。

始めるには、単にオンにしてください main.tf あなたのコードに:

module "landing_zone" {
  source     = "TerraHubCorp/landing-zone/aws"
  version    = "0.0.6"
  root_path  = "${path.module}"
  account_id = "${var.account_id}"
  region     = "${var.region}"
  landing_zone_components = "${var.landing_zone_components}"
}

注: 必ず有効にしてください variables.tf 必要なものはすべて揃っています outputs.tf.

わかりやすくするために、デフォルト値を追加しました。 terraform.tfvars:

account_id = "123456789012"
region = "us-east-1"
landing_zone_components = {
  landing_zone_pipeline_s3_bucket = "s3://terraform-aws-landing-zone/mycompany/landing_zone_pipeline_s3_bucket/default.tfvars"
  [...]
}

つまり、このモジュールを使用すると、 terraform 次のものが必要になります。

  1. 値を変更する account_id и region AWS 組織内のデータに対応する独自のデータ。
  2. 値を変更する landing_zone_components AWS Landing Zone のユースケースに一致するもの。
  3. 修正します s3://terraform-aws-landing-zone/mycompany あなたのブロックへ S3 およびキープレフィックス S3ファイルを保存する場所 .tfvars (またはファイルへの絶対パス .tfvars ローカルストレージにあります)。

このモジュールには、数十、数百、または数千の展開可能なコンポーネントが含まれている可能性がありますが、そのすべてが展開される必要がある、または展開されるわけではありません。 実行時には、変数マップの一部ではないコンポーネント landing_zone_components 無視されます。

まとめ

私たちは、お客様のクラウド ネイティブな自動化の構築を支援する取り組みの成果を共有できることに興奮し、誇りに思っています。 AWS Landing Zone の Terraform モジュールは、組織が AWS のベストプラクティスに基づいて複数のアカウントを使用して安全な AWS 環境を迅速にセットアップできるようにするもう XNUMX つのソリューションです。 私たちは AWS が非常に速いペースで成長していることを十分に認識しており、すべてのベースをカバーし、他の AWS 本番ソリューションと統合する Terraform ソリューションを迅速に開発することに取り組んでいます。

それだけです。 皆様からのコメントをお待ちしております。 無料ウェビナー その中で私たちは Cloud Landing Zone ドメイン アーキテクチャの設計を検討し、メイン ドメインのアーキテクチャ パターンを検討してみましょう。.

出所: habr.com

コメントを追加します