👁

Step7: IaC

このStepでは、IaC(Infrastructure as Code)の概念と Terraform を学び、ここまでに手動で構築した AWS 構成を Terraform でコード化します。

1. 講座の履修

Terraform講座 の以下の章を実施してください。すでに同等の知識がある場合は、講座の履修はスキップしても構いません。

2. 課題の実施

2.1 目的・背景

Step 1〜6 で手動構築したインフラを、Terraform で再構築可能な形にコード化します。手動構築の再現性・変更管理・レビュー性を高めることが目標です。次のStepで組む CI/CD パイプラインでは、ここでコード化した Terraform を用いてインフラの変更を自動化します。

2.2 実施要件

コード化する範囲

Step 1〜6 で手動構築した AWS リソースを、Terraform でコード化してください。手動構築の内容がすべて再現できることが目標です。

💡 ポイント
アプリケーションのデプロイ自動化は次の Step8 CI/CD で組み込むため、この Step では AWS リソースが Terraform で作成できるところまで確認できれば構いません。

実施方法

以下のいずれかの方法で構いません。

  • Terraform で新しく作る(既存の手動リソースを削除するか、別の AWS アカウントを用意する)
  • import ブロックを使って、既存の AWS アカウントのリソースを Terraform の管理下に取り込む

2.3 モジュール構成(任意)

責務単位でモジュールを分割します。同じような構成を繰り返し使えるようにし、コードの見通しと再利用性を高めることが目的です。

2.4 状態管理(任意)

tfstate をリモートバックエンドで管理し、ローカル PC 以外の場所に保存します。複数人で状態を共有できるようにし、ローカル PC の紛失や競合による事故を防ぐことが目的です。

2.5 判定基準

動作確認

実施方法によって動作確認の観点が異なります。選択した方法に該当する手順で確認してください。

新規作成の場合

Terraform コードから AWS リソースが正しく構築できることを確認します。

まず、Terraform を初期化します。

terraform init

次に、これから作成されるリソースを確認します。構成図に含まれるリソースがすべて will be created として表示されることを、出力内容から確認してください。

terraform plan

続いて、リソースを実際に作成します。エラーなく Apply complete! が表示されることを確認してください。

terraform apply

import の場合

既存の AWS リソースが Terraform 管理下に正しく取り込まれ、コードと実態が一致していることを確認します。

まず、Terraform を初期化します。

terraform init

次に、コードと既存リソースの差分を確認します。No changes. が表示されれば、既存リソースとコードが一致している状態です。

terraform plan

差分が出た場合は、コードを実態に合わせて修正し、再度 terraform plan を実行してください。

机上確認

実施方法によって机上確認の観点が異なります。以下のうち、選択した方法に該当する内容を AWS マネジメントコンソールで目視確認してください。リソース数が多いため、スクリーンショットは不要です。

新規作成の場合

  • コード化対象のリソースが、すべて AWS 上に作成されているかを確認する

import の場合

  • コード化対象のリソースが、すべて Terraform 管理下に取り込まれているかを確認する

任意課題

任意で取り組んだ場合は、以下も併せて添付してください。

  • モジュール構成: どのような単位でモジュールを分割したか、その理由
  • 状態管理: tfstate がどこに保存されているか、複数人で扱える形式になっているか

2.6 課題提出

下記内容を提出フォームより提出してください(提出はプレミアムプランでご利用いただけます)。

項目 内容
概要 実施方法(新規作成 / import)と、Terraform でコード化した構成の特徴・工夫した点を簡潔に記載する
Terraform コード Terraform コード一式、または反映した GitHub リポジトリの URL
動作確認 新規作成の場合は terraform apply の実行結果、import の場合は terraform planNo changes. になった実行結果を記載する
机上確認 コード化対象のリソースがすべて作成/取り込まれていることを目視確認した旨を記載する。モジュール構成や状態管理に取り組んだ場合は、コード構成も併せて添付する
まとめ 実装中に苦労したこと、工夫したこと、学んだこと

設計・構築課題の伴走はプレミアムプランでご利用いただけます。

プランのアップグレード

3. メンタリング報告

以下の内容をメンタリングで報告してください(メンタリングはプレミアムプランでご利用いただけます)。

3.1 講座の振り返り

以下の要素それぞれについて、3つの観点で報告してください。

対象の要素

  • IaCの概念
  • Terraformの基本構文
  • 変数・リソース参照
  • モジュール
  • リモートバックエンド

報告観点

  • 概要
  • 何ができるのか?
  • 使うときに気をつけるべきこと

3.2 提出課題の説明

提出した Terraform コードをもとに、以下の内容を報告してください。

  • どの実施方法で Terraform 化したのか、その選択理由
  • 手動構築と比較して得られたメリット
  • 実装中に工夫したこと・苦労したこと
  • モジュール分割に取り組んだ場合は、その設計意図
  • 状態管理に取り組んだ場合は、tfstate の管理方式

この教材は役に立ちましたか?

いいねをたくさんいただけると、制作者の励みになり、より多くのセクションが作れるようになります。

感想を一言(任意)

いただいたコメントは次の制作のヒントになります。ぜひお気軽にご投稿ください。

このコメントは他の受講生には公開されません。DevOps Camp運営が、教材改善のために確認します。

0 / 2000