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 plan で No changes. になった実行結果を記載する |
| 机上確認 | コード化対象のリソースがすべて作成/取り込まれていることを目視確認した旨を記載する。モジュール構成や状態管理に取り組んだ場合は、コード構成も併せて添付する |
| まとめ | 実装中に苦労したこと、工夫したこと、学んだこと |