QUIZ 20分

チェックポイント:Terraformの基本

ストーリー

「Terraformの基礎を確認しよう。 次のStep 5では実際にAWSリソースをTerraformで構築するから、 ここで概念をしっかり固めておくことが大事だ」

木村先輩がクイズを用意した。


クイズの説明

  • 全6問
  • 合格ライン: 80%(5問正解)

問題

Q1. Terraformの terraform plan コマンドの説明として正しいものはどれですか?

  • A) インフラの変更を実際に適用する
  • B) プロバイダプラグインをダウンロードする
  • C) コードとStateの差分を計算し、変更予定内容を表示する
  • D) 管理しているリソースを全て削除する
<details> <summary>解答と解説</summary>

正解: C

terraform plan は、.tf ファイルに記述された「あるべき姿」と、Stateに記録された「現在の状態」を比較して差分を計算し、何が作成・変更・削除されるかをプレビュー表示します。実際のリソースには一切影響しません。Aは apply、Bは init、Dは destroy の説明です。

</details>

Q2. TerraformのStateファイルに関する説明として正しいものはどれですか?

  • A) Stateファイルは .tf ファイルのバックアップである
  • B) Stateファイルは管理しているリソースの現在の状態を記録する
  • C) Stateファイルは手動で編集してリソースを変更できる
  • D) Stateファイルはリソースの設計図である
<details> <summary>解答と解説</summary>

正解: B

TerraformのStateファイル(terraform.tfstate)は、Terraformが管理しているリソースの現在の状態をJSON形式で記録したものです。TerraformはこのStateと .tf ファイルの差分を計算して変更計画を作成します。Stateファイルの手動編集は推奨されません。

</details>

Q3. チーム開発でTerraformのStateを管理する推奨方法はどれですか?

  • A) Stateファイルをそのままgitリポジトリにコミットする
  • B) S3とDynamoDBを使ったリモートバックエンドに保存する
  • C) 各開発者がローカルにStateファイルを持つ
  • D) Stateファイルは使用せず、毎回全リソースを再作成する
<details> <summary>解答と解説</summary>

正解: B

チーム開発では、S3にStateファイルを暗号化して保存し、DynamoDBで排他制御(ロック)を行うリモートバックエンドが推奨されます。StateファイルにはリソースのIDやIPアドレスなどの機密情報が含まれるため、gitリポジトリへのコミットは避けるべきです。

</details>

Q4. Terraformの plan 出力で ~ シンボルが表示された場合、その意味はどれですか?

  • A) 新しいリソースが作成される
  • B) 既存リソースが削除される
  • C) 既存リソースがインプレースで変更される(再作成なし)
  • D) リソースが削除されてから再作成される
<details> <summary>解答と解説</summary>

正解: C

~ はインプレース更新を意味し、リソースを削除せずにその場で変更が適用されます。+ は新規作成、- は削除、-/+ は削除して再作成です。インスタンスタイプの変更などはインプレース更新、AMIの変更などはリソースの再作成になります。

</details>

Q5. Terraformのモジュールの説明として正しいものはどれですか?

  • A) モジュールはPython言語で記述する必要がある
  • B) モジュールは1つのプロジェクトでのみ使用でき、再利用できない
  • C) モジュールは再利用可能なTerraformコードのパッケージである
  • D) モジュールはリソースの削除専用の仕組みである
<details> <summary>解答と解説</summary>

正解: C

Terraformモジュールは、再利用可能なインフラコードのパッケージです。VPCやEC2クラスターなどの共通パターンをモジュール化し、異なる環境(staging/production)から異なるパラメータで呼び出すことで、コードの重複を避けられます。Terraform Registryで公開されているコミュニティモジュールも利用できます。

</details>

Q6. Terraformの変数(variable)の値を指定する方法のうち、最も優先度が高いものはどれですか?

  • A) variables.tfdefault
  • B) terraform.tfvars ファイル
  • C) 環境変数 TF_VAR_xxx
  • D) コマンドライン引数 -var="xxx=yyy"
<details> <summary>解答と解説</summary>

正解: D

Terraform変数の優先順位は、高い順に (1) コマンドライン引数 -var, (2) terraform.tfvars / *.auto.tfvars, (3) 環境変数 TF_VAR_*, (4) default 値です。コマンドライン引数が最も優先度が高く、他の設定を上書きします。

</details>

結果

5問以上正解の場合

合格です。おめでとうございます。

Step 4「Terraformの基本を習得しよう」を完了しました。 次は Step 5「インフラをコード化しよう」に進みましょう。

4問以下の場合

もう少し復習しましょう。

問題復習セクション
Q1step4_5 plan/apply/destroyワークフロー
Q2step4_3 プロバイダとState管理
Q3step4_3 プロバイダとState管理
Q4step4_5 plan/apply/destroyワークフロー
Q5step4_4 変数とモジュール
Q6step4_4 変数とモジュール

Step 4 完了

お疲れさまでした。

学んだこと

  • IaCの概念とTerraformの位置づけ
  • HCL構文とリソース定義
  • プロバイダとState管理
  • 変数とモジュールによる再利用
  • plan/apply/destroyワークフロー

次のステップ

Step 5: インフラをコード化しよう(5時間)

Terraformの基礎が固まった今、実際にAWSリソースをコードで構築します。


推定所要時間: 20分