トキヌク

Terraform サンプル問題

HashiCorp Certified: Terraform Associate(Terraform)対策のオリジナル問題30問を無料公開。アプリの無料枠と同じ問題で、全200問収録のTerraform問題集から抜粋しています。「答えと解説を見る」を開くと、正解だけでなく全選択肢の解説を読めます。

30問無料公開 全200問収録 全選択肢解説付き
アプリで解く(無料・登録不要)→

IaCの概念とTerraformの目的

IaCの利点/マルチクラウド

Q1. Terraformの構成言語が「宣言的(declarative)」であると言われるのは、どの性質を指していますか?

  1. A. リソースを作成する手順を上から順に実行する命令の並びとして記述する
  2. B. 望ましい最終状態を記述し、そこに到達するための操作順序はTerraformが決定する
  3. C. 実行のたびに必ずすべてのリソースを削除してから作り直す
  4. D. 構成ファイルを書かずに、対話的なプロンプトで設定値を毎回入力する
答えと解説を見る

正解:B

A それは手続き的(imperative)なアプローチの説明。シェルスクリプトやSDKを使った自動化がこれにあたる

B(正解) 正解。構成ファイルには「あるべき姿」だけを書き、依存関係の解析と実行順序の決定はTerraformが担う

C 宣言的であることは再作成を意味しない。Terraformは差分のみを適用し、一致しているリソースには手を触れない

D 対話的な操作はコード化の対極にあり、宣言的という語とは無関係

IaCの利点/マルチクラウド

Q2. 手作業でコンソールから設定を変更した結果、実際の環境と管理者が想定している構成がずれていく現象を何と呼びますか?

  1. A. ロールバック
  2. B. 冪等性
  3. C. ブルーグリーンデプロイ
  4. D. 構成ドリフト
答えと解説を見る

正解:D

A 変更を以前の状態に戻す操作のこと。ずれが生じる現象そのものを指す語ではない

B 同じ操作を何度実行しても結果が変わらない性質。ずれを防ぐ側の概念であり、ずれの名称ではない

C 新旧2系統の環境を切り替えるリリース手法。構成のずれとは別の話題

D(正解) 正解。IaCではplanで実環境と構成の差分を検出できるため、ドリフトを早期に発見して収束させられる

IaCの利点/マルチクラウド

Q3. Terraformが単一のワークフローで複数のクラウドやSaaSを扱えるのは、どのアーキテクチャによるものですか?

  1. A. 各サービスのAPIを呼び出すプロバイダをプラグインとして読み込む仕組み
  2. B. すべてのクラウドAPIがTerraform本体のバイナリに組み込まれている
  3. C. 各クラウドが提供する管理エージェントを仮想マシンに常駐させる
  4. D. クラウド間の差異を吸収する共通リソースタイプだけを提供している
答えと解説を見る

正解:A

A(正解) 正解。Terraform Coreは構成とステートの差分計算を担い、実際のAPI呼び出しはプロバイダプラグインが行う

B 本体には同梱されない。プロバイダはinit時にレジストリから個別にダウンロードされる

C Terraformはエージェントレスで、APIを直接呼び出す。常駐エージェントは不要

D リソースタイプはプロバイダ固有(aws_instance、azurerm_virtual_machineなど)。共通化された抽象リソースは提供されない

IaCの利点/マルチクラウド

Q4. 「Terraformはマルチクラウド対応である」という説明の正しい理解はどれですか?

  1. A. 同じ構成ファイルをそのまま別のクラウドに向ければ、同等のリソースが作られる
  2. B. Terraformがクラウド間でリソースを自動的に移行してくれる
  3. C. 複数のプロバイダを同一の構成・同一のワークフローで一貫して管理できる
  4. D. クラウド事業者ごとに別々のTerraformバイナリを使い分ける
答えと解説を見る

正解:C

A よくある誤解。リソースタイプも引数もプロバイダ固有なので、クラウドを変えれば構成の書き直しが必要

B 移行機能は持たない。Terraformはあくまで各プロバイダのAPIを呼ぶだけ

C(正解) 正解。AWSとCloudflareとDatadogを1つのplan/applyで扱うといった、ツールとワークフローの統一が本質

D バイナリは共通で、差分はプロバイダプラグインが吸収する

Terraformの基本

プロバイダ/初期化

Q5. 新しい作業ディレクトリで最初にterraform initを実行したとき、Terraformが行う処理として正しいものはどれですか?

  1. A. 構成に定義されたリソースを実際にクラウド上へ作成する
  2. B. 必要なプロバイダプラグインとモジュールを取得し、バックエンドを初期化する
  3. C. 既存リソースの現状をステートファイルに読み込んで同期する
  4. D. 構成ファイルを正規のフォーマットに整形する
答えと解説を見る

正解:B

A リソースの作成はapplyの役割。initはリソースに一切触れない

B(正解) 正解。作業ディレクトリを使用可能な状態に整える初期化コマンドで、他のほとんどのコマンドの前提となる

C 実リソースの読み取りと同期はrefresh(planやapplyの一部)が行う処理

D 整形はterraform fmtの役割

プロバイダ/初期化

Q6. 使用するプロバイダのソースとバージョン制約を宣言するブロックはどれですか?

  1. A. providerブロックの中のversion引数
  2. B. moduleブロックの providers 引数
  3. C. terraformブロックの中のrequired_providersブロック
  4. D. variableブロック
答えと解説を見る

正解:C

A providerブロックはリージョンや資格情報などの設定用。かつてはversionも書けたが非推奨で、バージョン宣言はrequired_providersに集約された

B これは呼び出し元のプロバイダ設定をモジュールへ引き渡すための引数。どのバージョンを使うかの宣言とは役割が異なる

C(正解) 正解。terraform { required_providers { aws = { source = "hashicorp/aws", version = "~> 5.0" } } } の形で宣言する

D variableは入力変数の宣言用で、プロバイダの依存関係とは無関係

プロバイダ/初期化

Q7. プロバイダのバージョン制約に version = "~> 4.16" と書いた場合、インストールが許可されるバージョンはどれですか?

  1. A. 4.16以上5.0未満のすべてのバージョン
  2. B. 4.16.0以上4.17.0未満のバージョンのみ
  3. C. 4.16ちょうどのみ
  4. D. 4.16以上のすべてのバージョン(上限なし)
答えと解説を見る

正解:A

A(正解) 正解。悲観的制約演算子は指定した最も右の桁だけ増加を許すため、~> 4.16 はマイナーバージョンの上昇を許し、メジャーの5.0は許さない

B その範囲になるのは ~> 4.16.0 と3桁で書いた場合。桁数によって意味が変わる点が頻出のひっかけ

C 1つに固定したい場合は version = "4.16.0" のように等号で書く

D 上限なしにしたい場合は ">= 4.16" と書く。~> には必ず上限がある

プロバイダ/初期化

Q8. .terraform.lock.hcl ファイルの役割として正しいものはどれですか?

  1. A. ステートファイルへの同時書き込みを防ぐロックを保持する
  2. B. 実行中のapplyの進捗を記録する一時ファイル
  3. C. プロバイダの資格情報をローカルに保存する
  4. D. 選択されたプロバイダのバージョンとパッケージのハッシュを記録し、実行環境間で同じ依存関係を再現する
答えと解説を見る

正解:D

A ステートのロックはバックエンド側の機能で、このファイルとは無関係。名前が似ているための頻出の取り違え

B 進捗の記録用ではなく、init時に生成・更新される永続的なファイル

C 資格情報は保存されない。秘匿情報を含まないためリポジトリにコミットできる

D(正解) 正解。依存関係ロックファイルと呼ばれ、バージョン管理にコミットしてチーム全員で同じプロバイダを使うようにする

プロバイダ/初期化

Q9. バージョン制約の範囲内でプロバイダを新しい版に更新し、ロックファイルを更新したいときに使うコマンドはどれですか?

  1. A. terraform init -reconfigure
  2. B. terraform init -upgrade
  3. C. terraform apply -refresh-only
  4. D. terraform providers upgrade
答えと解説を見る

正解:B

A -reconfigure はバックエンド設定を既存の設定を無視して初期化し直すオプション。プロバイダの更新は行わない

B(正解) 正解。制約を満たす最新のプロバイダとモジュールを取得し直し、.terraform.lock.hcl を更新する

C 実リソースの現状をステートに反映するだけで、プラグインの更新はしない

D架空 このサブコマンドは存在しない。terraform providers にはlockやmirrorといったサブコマンドはあるがupgradeはない

コアワークフローとCLI

init/plan/apply/destroy

Q10. terraform plan を実行したときの挙動として正しいものはどれですか?

  1. A. 現状と構成を比較して実行計画を表示するが、インフラは変更しない
  2. B. 計画を表示し、承認なしで小さな変更だけを自動的に適用する
  3. C. ステートファイルを新規作成し、既存リソースを自動的に取り込む
  4. D. 構成ファイルの整形と検証だけを行う
答えと解説を見る

正解:A

A(正解) 正解。planは読み取りと差分計算のみを行う。適用は別途applyが必要

B planは規模にかかわらず一切の変更を行わない

C 既存リソースの取り込みはimportの役割で、planは自動では行わない

D 整形はfmt、検証はvalidate。planはそれらより先の、実環境との差分計算まで行う

init/plan/apply/destroy

Q11. CI/CDパイプラインの中でterraform applyを対話的な確認なしに実行するには、どのオプションを使いますか?

  1. A. terraform apply -force
  2. B. terraform apply -input=false
  3. C. terraform apply -auto-approve
  4. D. terraform apply -lock=false
答えと解説を見る

正解:C

A -force は古いバージョンの名残で、現在のapplyでは承認スキップの正規のオプションではない

B -input=false は未指定の変数などを対話的に尋ねる動作を止めるための指定で、適用の承認そのものを省くものではない。承認を省くには -auto-approve か保存済みプランの指定が要る

C(正解) 正解。yes の入力を求めずにそのまま適用する。保存済みプランファイルを渡す場合も確認は省略される

D ステートのロック取得を無効にするオプション。承認プロンプトとは無関係で、むしろ同時実行によるステート破損を招く

init/plan/apply/destroy

Q12. terraform destroy と等価な操作はどれですか?

  1. A. terraform apply -refresh-only
  2. B. terraform apply -destroy
  3. C. terraform state rm を全リソースに対して実行する
  4. D. 作業ディレクトリの .tf ファイルをすべて削除して apply する
答えと解説を見る

正解:B

A 実リソースの現状をステートに反映するだけで、リソースは削除されない

B(正解) 正解。destroyは、管理下の全リソースを削除する計画を作って適用する apply -destroy の別名にあたる

C state rm はステートから外すだけで実リソースは残る。むしろ課金され続ける取り残しを生む危険な取り違え

D 結果的に削除計画にはなるが、コードを失う破壊的な操作であり等価な手段とは言えない

init/plan/apply/destroy

Q13. terraform plan -target=aws_instance.web の説明として最も適切なものはどれですか?

  1. A. 日常の運用で、変更範囲を絞るために推奨される標準的な手法である
  2. B. 指定したリソースだけをステートから除外する
  3. C. 指定したリソースの依存先は無視され、対象リソースだけが単独で評価される
  4. D. 計画の対象を指定リソースとその依存関係に限定するもので、障害復旧などの例外的な状況で使う
答えと解説を見る

正解:D

A 公式には例外的な用途とされ、常用は推奨されない。構成全体との整合が崩れやすい

B ステートからの除外は state rm。-target は計画の対象を絞るオプション

C 依存先も必要に応じて計画に含まれる。完全に単独で評価されるわけではない

D(正解) 正解。エラーからの回復やデバッグのための一時的な手段であり、常用すると構成ドリフトを招く

CLIサブコマンド/デバッグ

Q14. クラウドの資格情報を持たないCI環境で、構成ファイルの構文と内部整合性だけを素早く確認したい場合に適したコマンドはどれですか?

  1. A. terraform plan
  2. B. terraform validate
  3. C. terraform fmt -check
  4. D. terraform show
答えと解説を見る

正解:B

A planは実リソースを読み取るためプロバイダの認証が必要になる。資格情報のない環境では失敗しうる

B(正解) 正解。属性名の誤りや型の不一致などを構成内で完結して検査する。事前にinitでプロバイダのスキーマが必要な点に注意

C 確認できるのは書式が正規形かどうかだけで、構文エラーや参照ミスの検出は目的ではない

D ステートや保存済みプランの内容を人が読める形で表示するコマンドで、構成の検証は行わない

CLIサブコマンド/デバッグ

Q15. リポジトリ内の .tf ファイルがHashiCorpの標準スタイルに沿っているかをCIで検査し、違反があれば失敗させたい場合のコマンドはどれですか?

  1. A. terraform fmt -check -recursive
  2. B. terraform fmt -diff
  3. C. terraform validate -style
  4. D. terraform fmt -write=false -recursive
答えと解説を見る

正解:A

A(正解) 正解。-check は書き換えずに差分の有無だけを判定し、整形が必要ならゼロ以外の終了コードを返す。-recursive でサブディレクトリも対象になる

B -diff は変更内容を表示するオプション。単体では書き換えが行われ、CIの失敗判定にも使えない

C validateにこのオプションはなく、そもそも書式の検査は担当外

D 書き換えずに対象ファイル名を列挙するだけで、整形が必要でも終了コードは成功のまま。CIで失敗させるには -check が要る

ステート管理

ステートの仕組み

Q16. Terraformがステートファイルを必要とする最も本質的な理由はどれですか?

  1. A. 構成ファイルのバックアップとして保管するため
  2. B. クラウドの資格情報を安全に保管するため
  3. C. 構成上のリソースと実世界のリソースの対応付けを保持するため
  4. D. planの実行結果を永続化して次回のapplyで再利用するため
答えと解説を見る

正解:C

A ステートは構成のバックアップではない。構成のバックアップはバージョン管理システムの役割

B 資格情報の保管場所ではない。むしろステートには機密の属性値が平文で入りうるため、保護すべき対象

C(正解) 正解。どの定義がどの実IDに対応するかを記録することで、次回以降に作成・更新・削除のどれが必要かを判断できる

D 計画の永続化は plan -out で作るプランファイルの役目で、ステートとは別物

ステートの仕組み

Q17. バックエンドを明示的に設定していない作業ディレクトリで初めてapplyを実行した場合、ステートはどこに保存されますか?

  1. A. 作業ディレクトリ内の terraform.tfstate というローカルファイル
  2. B. .terraform ディレクトリの中に暗号化されて保存される
  3. C. HashiCorpのサーバーに自動的にアップロードされる
  4. D. 保存されず、毎回クラウドAPIから状態を再構築する
答えと解説を見る

正解:A

A(正解) 正解。既定はlocalバックエンドで、更新時には直前の内容が terraform.tfstate.backup として残される

B .terraform にはプラグインやモジュールが置かれる。ステートは作業ディレクトリ直下で、しかも暗号化されない

C 設定なしに外部へ送信されることはない。リモート保存には明示的なバックエンドやcloudブロックの設定が要る

D APIからの全再構築はできないためステートが必要になる。これがTerraformの設計の前提

バックエンド/ロック

Q18. 個人開発から5人チームでの運用に移行するにあたり、ローカルステートで起きる問題を解消する最も適切な対応はどれですか?

  1. A. terraform.tfstate をGitリポジトリにコミットして共有する
  2. B. S3などのリモートバックエンドを設定し、ステートを共有かつロック可能な場所に置く
  3. C. 各メンバーが自分のワークスペースを作り、それぞれローカルにステートを持つ
  4. D. applyを実行できる担当者を1人に限定する
答えと解説を見る

正解:B

A 機密値が平文で入るうえ、同時編集でコンフリクトやロックの欠如による破損を招く。明確なアンチパターン

B(正解) 正解。共有・排他制御・暗号化・バージョニングをまとめて満たせる

C ワークスペースは環境の分離のための機能。同じ環境を複数人で扱う課題は解決せず、むしろ別々の実環境ができてしまう

D 運用上の緩和策にはなるが、その担当者のPCにステートが依存する単一障害点は残る

バックエンド/ロック

Q19. ステートのロックについての説明として正しいものはどれですか?

  1. A. すべてのバックエンドがロックに対応している
  2. B. ロックは読み取り専用の操作を含むすべてのコマンドで常に取得される
  3. C. ロックはTerraform CLIがローカルのメモリ上で管理する
  4. D. 対応バックエンドではステート書き込み時に自動でロックが取得され、同時実行によるステート破損を防ぐ
答えと解説を見る

正解:D

A 対応状況はバックエンドごとに異なる。ロックを提供しないものもある

B ステートを書き換えうる操作で取得される。ロックが不要な参照系の操作もある

C ローカルのメモリでは別のマシンからの同時実行を防げない。ロックはバックエンド側の共有資源で管理される

D(正解) 正解。S3バックエンドでは長らくDynamoDBテーブルの指定でロックを実現してきた。-lock=false で無効化できるが原則として避ける

バックエンド/ロック

Q20. applyの実行中にCIジョブが強制終了し、以後すべての操作が「Error acquiring the state lock」で失敗するようになりました。最初に検討すべき対応はどれですか?

  1. A. 以後の全コマンドに -lock=false を付けて回避する
  2. B. リモートのステートファイルを削除して作り直す
  3. C. 他に実行中の操作がないことを確認したうえで、terraform force-unlock <ロックID> を実行する
  4. D. terraform init -reconfigure でバックエンドを初期化し直す
答えと解説を見る

正解:C

A ロックを無効にしたまま運用すると、同時実行でステートを破壊しかねない。恒久的な回避策にしてはいけない

B 管理対象の追跡情報をすべて失う破壊的な操作。実リソースが全て管理外になる

C(正解) 正解。エラーメッセージに表示されたIDを指定して解除する。実行中の操作が本当にないことの確認が前提

D バックエンド設定の再構成であり、残置されたロックは解除されない

構成記述とモジュール

変数/出力/優先順位

Q21. 同じ変数 instance_type に対して、terraform.tfvars の値、TF_VAR_instance_type 環境変数、コマンドラインの -var の3つが同時に与えられました。採用されるのはどれですか?

  1. A. TF_VAR_ 環境変数の値
  2. B. terraform.tfvars の値
  3. C. -var で渡した値
  4. D. エラーになり、重複を解消するまで実行できない
答えと解説を見る

正解:C

A 環境変数はデフォルト値を除けば最も優先度が低い。「環境変数が最優先」という思い込みが典型的なひっかけ

B 環境変数よりは優先されるが、コマンドラインの指定には負ける

C(正解) 正解。優先順位は高いほうから -var / -var-file、*.auto.tfvars、terraform.tfvars、TF_VAR_ 環境変数、variableブロックのdefault の順

D 重複してもエラーにはならず、優先順位に従って1つが採用される

変数/出力/優先順位

Q22. variable "db_user" を環境変数から与えたい場合、正しい環境変数名はどれですか?

  1. A. TERRAFORM_db_user
  2. B. TF_VAR_db_user
  3. C. TF_VAR_DB_USER
  4. D. TF_db_user
答えと解説を見る

正解:B

A 接頭辞が誤り。TERRAFORM_ という接頭辞は使われない

B(正解) 正解。TF_VAR_ に続けて変数名をそのまま(大文字小文字を含めて一致させて)書く

C 変数名は大文字小文字が区別されるため、db_user という宣言にはこの名前は対応しない

D TF_ で始まる環境変数はCLIの動作設定用(TF_LOGなど)で、入力変数の受け渡しには TF_VAR_ を使う

変数/出力/優先順位

Q23. ファイル名を指定しなくてもTerraformが自動的に読み込む変数定義ファイルはどれですか?

  1. A. variables.tf
  2. B. prod.tfvars
  3. C. terraform.tfvars.example
  4. D. terraform.tfvars と *.auto.tfvars
答えと解説を見る

正解:D

A 変数の宣言(variableブロック)を書く慣習的なファイル名で、値を与えるファイルではない

B 自動では読み込まれない。-var-file=prod.tfvars と明示的に指定する必要がある

C 拡張子が .tfvars で終わらないため対象外。雛形を配布するための慣習的なファイル

D(正解) 正解。terraform.tfvars(および .json 版)と、任意の名前に .auto.tfvars を付けたファイルが自動的に読み込まれる

変数/出力/優先順位

Q24. environment 変数に dev / stg / prod 以外の値が渡されたら、planの段階で分かりやすいエラーを出したい。適切な方法はどれですか?

  1. A. variableブロック内に validation ブロックを書き、condition と error_message を定義する
  2. B. variableブロックに nullable = false を書く
  3. C. type = string の代わりに type = enum(dev, stg, prod) と書く
  4. D. lifecycle ブロックの precondition で検査する
答えと解説を見る

正解:A

A(正解) 正解。条件を満たさない値が与えられると、指定したメッセージとともに早い段階で失敗する

B nullを許さないという指定であり、値の中身が3つのいずれかかどうかは検査できない

C Terraformの型システムにenum型はない

D preconditionはlifecycleブロック内でリソースやデータソースに対して書くもの。入力変数そのものの検査にはvalidationが適切

式/関数/メタ引数

Q25. count = 3 を指定したresourceブロックの中で、0から始まる連番を参照するために使う式はどれですか?

  1. A. each.key
  2. B. count.index
  3. C. self.index
  4. D. index.count
答えと解説を見る

正解:B

A each は for_each を使ったときに利用できるオブジェクト。countでは参照できない

B(正解) 正解。0, 1, 2 と採番され、name = "web-${count.index}" のように使う

C self はプロビジョナー内で自身の属性を参照する特殊な語で、繰り返しの添字は持たない

D 語順が逆で、このような参照は存在しない

式/関数/メタ引数

Q26. for_each メタ引数について正しい説明はどれですか?

  1. A. 任意の型のリストを直接渡すことができる
  2. B. 同じブロックに count と併用できる
  3. C. マップまたは文字列のセットを受け取り、各要素を each.key / each.value で参照できる
  4. D. 作成されるインスタンスは 0 から始まる整数の添字で識別される
答えと解説を見る

正解:C

A 受け付けるのはマップか文字列のセット。リストを使う場合は toset() などで変換する必要がある

B count と for_each は同一ブロックで同時に指定できない

C(正解) 正解。セットを渡した場合は each.key と each.value が同じ値になる

D 整数の添字で識別されるのは count のほう。for_each はキーの文字列で識別される

式/関数/メタ引数

Q27. count = length(var.names) でリソースを作っているとき、var.names の途中の要素を1つ削除するとどうなりますか?

  1. A. 削除した要素に対応するリソースだけが破棄される
  2. B. 何も起こらず、次のapplyでリストの変更が無視される
  3. C. リソース全体がエラーになり、applyできなくなる
  4. D. 以降の要素の添字がずれるため、削除した位置より後ろのリソースが置き換えられる
答えと解説を見る

正解:D

A そうなるのは for_each を使った場合。countでは添字が繰り上がるため影響が波及する

B countの値が変わるため必ず差分が生じる

C エラーにはならず、計画は成立してしまう。だからこそ意図しない再作成に気付きにくい

D(正解) 正解。この副作用を避けるには、要素を安定したキーで識別できる for_each を使う

HCP Terraform

HCP Terraform/ワークスペース

Q28. HCP Terraformのリモート実行(remote operations)を使う利点として、最も適切なものはどれですか?

  1. A. ステートファイルが不要になる
  2. B. 実行環境がないためplanが高速化される
  3. C. 各開発者のローカルPCにクラウドの資格情報を配布する必要がある
  4. D. plan/applyが一貫した管理環境で実行され、実行ログ・承認・資格情報の管理を一元化できる
答えと解説を見る

正解:D

A ステートは引き続き必要で、HCP Terraformが保管とバージョン管理を担う

B リモート側に実行環境がある。速度ではなく一貫性と統制が主な価値

C むしろ逆で、資格情報をワークスペース側に集約でき、個人PCへの配布を避けられる

D(正解) 正解。個人の端末環境の差異に左右されず、誰が何を適用したかの記録も残る

HCP Terraform/ワークスペース

Q29. HCP Terraformのワークスペースと、CLIのワークスペース(terraform workspace)の違いとして正しいものはどれですか?

  1. A. HCP Terraformのワークスペースは、ステートに加えて変数・実行履歴・権限設定などを持つ管理単位である
  2. B. どちらも同じ機能で、名前が違うだけである
  3. C. HCP Terraformのワークスペースはステートを保持しない
  4. D. CLIのワークスペースは変数値もワークスペースごとに保持する
答えと解説を見る

正解:A

A(正解) 正解。CLIのワークスペースが同一バックエンド内でステートを分けるだけなのに対し、HCP側はより広い設定の入れ物になっている

B 含むものが大きく異なる。この取り違えは頻出

C ステートの保管はHCP Terraformの中心的な機能のひとつ

D CLIのワークスペースが分けるのはステート。変数の切り替えは -var-file などで別途行う

HCP Terraform/ワークスペース

Q30. 「タグのない本番リソースの作成を組織全体で禁止する」といった規約を、実行のたびに自動で強制したい。HCP Terraformで使う仕組みはどれですか?

  1. A. Terraform Guardrail
  2. B. terraform validate をCIで実行する
  3. C. Sentinelなどのポリシー・アズ・コードによるポリシーチェック
  4. D. lifecycle の prevent_destroy
答えと解説を見る

正解:C

A架空 このような機能名は存在しない

B 検査できるのは構成の内部整合性まで。計画の中身に対する組織的な規約の強制はできない

C(正解) 正解。planとapplyの間で評価され、advisory / soft-mandatory / hard-mandatory の強制レベルを設定できる

D 個々のリソースの破棄を防ぐだけで、組織横断の規約の強制には使えない

続きは演習アプリで

このページの30問は、演習アプリなら弱点に合わせた出題・成績記録つきで解けます。全200問と本番形式の模擬試験は期間パス(1,500円/30日、自動更新なし)で利用できます。

Terraformの演習を無料で始める →

Terraform問題集の詳細(出題範囲・よくある質問)→

掲載している問題はすべてトキヌクのオリジナル問題です。実試験問題の流出コピー(ブレインダンプ)は一切使用していません。本サービスは非公式の学習教材であり、各認定団体とは提携・承認・後援関係にありません。試験名は各団体の商標または登録商標です。
トキヌク トップページへ