Terraform面接ではどのような質問が出ますか?

文責 Aaron Cao · 更新

Terraform面接ではどのような質問が出ますか?
質問は主に四つの領域に分かれます。基本ワークフロー(init、plan、apply、destroy)、状態(リモートバックエンド、ロック、機密値)、コード構成(モジュール、変数、ワークスペース、プロバイダー)、そしてドリフト、途中で失敗したapply、手動作成したリソースのインポートなどのシナリオです。面接官は、それぞれの選択の背後にある考え方を評価します。

質問は主に四つの領域に分かれます。基本ワークフロー(init、plan、apply、destroy)、状態(リモートバックエンド、ロック、機密値)、コード構成(モジュール、変数、ワークスペース、プロバイダー)、そしてドリフト、途中で失敗したapply、手動作成したリソースのインポートなどのシナリオです。面接官は、それぞれの選択の背後にある考え方を評価します。

面接官が最初に確認するTerraformの基礎は?

多くのTerraform面接はワークフローから始まり、すぐにその内部で何が起きるかへ進みます。メモを見ずにライフサイクルを説明できるようにしましょう。terraform initはプロバイダーをダウンロードしてバックエンドを構成し、terraform planは望ましい構成を状態ファイルおよび実際のリソースと比較して、実行予定の操作を表示します。terraform applyはそのplanを実行し、terraform destroyは構成が管理するものを削除します。最初の追加質問は、ほぼ必ずplanとapplyが別の手順である理由です。答えはレビューと安全性であり、変更前にplanを確認、承認、保存できます。

  • プロバイダー。AWS、Azure、Google Cloud、KubernetesなどのAPIと通信するプラグインです。追加質問として、なぜプロバイダーのバージョンを固定するのでしょうか?
  • リソースとデータソース。リソースはTerraformが作成して所有するもので、データソースはTerraformが管理しない既存のものを読み取ります。
  • 変数、ローカル値、出力。入力、計算値、公開値です。追加質問として、planの出力にシークレットが現れないようにするにはどうしますか?
  • 依存関係グラフ。Terraformはリソース間の参照に基づいて操作順を決めます。depends_onは、グラフから認識できない依存関係のためにあります。

各コマンドが何を読み書きするかまで答えましょう。planは読み取り専用で、applyはインフラと状態の両方を変更すると説明できれば、モデルを理解していることが伝わります。

状態とモジュールについて何を準備すべきですか?

状態が重要であり、面接官が理解の限界を探ってくるだろうと感じているかもしれません。それはもっともです。ここでは、その限界に迫る質問と、完全な回答に含めるべき内容を扱います。

  • 状態はどこに保存し、なぜローカルではいけないのですか?オブジェクトストレージのバケット、Terraform Cloud、データベースなどのリモートバックエンドは、共有された信頼できる唯一の情報源になります。追加質問はロックについてです。同時に二人がapplyすると状態が破損するため、ロック対応のバックエンドは後から始まった実行を拒否します。
  • 状態ファイルには何が含まれますか?機密と考えられる値を含むリソース属性です。状態は機密資料として扱い、保存時に暗号化し、アクセスを制御すべきだと説明しましょう。
  • モジュール。モジュールは、独自の入力と出力を持つ再利用可能なリソース群です。面接官は、モジュールのバージョン管理、何でも行おうとするモジュールの回避方法、ルートモジュールによる子モジュールの組み合わせ方を尋ねます。
  • ワークスペースと個別構成の違い。ワークスペースを使うと、一つの構成に複数の状態ファイルを持たせられます。注意すべき誤答は、ワークスペースだけで環境全体を管理できると考えることです。本番環境には通常、ワークスペースの切り替えではなく、専用の構成、バックエンド、認証情報が必要です。
  • 破棄を伴わないリファクタリング。リソース名を変更すると、Terraformはそれを破棄して再作成しようとします。movedブロックとterraform state mvが存在すること、そしてそれぞれの用途を理解しておきましょう。

ここでの回答には、各手法が防ぐ障害を挙げるという規律が役立ちます。ロックは同時実行による破損を防ぎ、リモート状態は各端末の状態の不一致を防ぎ、バージョン固定は通常のapply中に予期しないアップグレードが起きるのを防ぎます。

シナリオ問題はどのように出題されますか?

上級者向けの面接では、定義ではなく状況が問われます。代表例として、フィンテック企業のインフラ職を受けるプラットフォームエンジニアが、誰かがクラウドコンソールでセキュリティグループを手動変更し、次のplanに予想外の差分が表示され、チームがapplyを不安視していると告げられる場面があります。優れた回答は、この状況をドリフトと呼び、planが実際の状態を更新してすでに検出したと説明します。そのうえで、手動変更を維持するか元に戻すかを判断し、現実に合わせて構成を更新するか、applyして宣言済みの状態を復元します。面接官が聞きたいのはコマンドではなく判断です。

ほかにも、途中で失敗したapplyとその後の状態、Terraform導入前に作成されたリソースをterraform importで管理下に置く方法、複数のエンジニアがいるチームでプルリクエスト時にplanを実行しapplyを一度だけ実行するためのリポジトリ、バックエンド、CIの構成、変数内のシークレットとその本来の取得元、リソースの挙動を変えるプロバイダーのアップグレードなどが繰り返し出題されます。どの場合も、制約を述べ、仕組みを選び、そのコストを説明しましょう。

事前に声に出して答えておくと、こうした質問に対応しやすくなります。模擬面接モードでは、追加質問を含むシナリオ問題を練習できます。ほかの職種別・ツール別の問題集は、職種・トピック別の面接質問にまとめられています。

AI面接アシスタントはTerraform面接に役立ちますか?

会話形式の部分には役立ちますが、明確にしておくべき制限があります。SubcueAIのmacOSおよびWindows向けネイティブデスクトップアプリは、システム音声とマイク音声を取得し、ローカルオーバーレイに短い提案を表示します。そのため、面接官に状態ロックが何を防ぐか尋ねられたとき、仕組みを確認しながら説明できます。ブラウザー拡張機能のサイドパネルも、ChromeまたはEdge上のブラウザータブ通話で同じ働きをし、会議タブの音声だけを取得します。ボットが通話に参加することも、会議ページへ何かが挿入されることもありません。設定手順はチュートリアルページにあります。

役立たない場面は、監督付き試験、画面録画、会社管理のノートパソコン、または監視下でHCLを書くライブ演習です。SubcueAIの創業者Aaron Caoは、設計目標を知識の代替ではなく、すでに知っていることを思い出すためのきっかけだと説明しています。そのため、このアシスタントはあなたの履歴書とあなた自身の言い回しを基に動作します。正直な利用範囲は、検出可能性に関する情報にまとめられています。

よくある質問

terraform planとterraform applyの違いは何ですか?

planは構成、状態ファイル、実際のリソースを読み取り、Terraformが実行する操作を何も変更せずに表示します。applyはそれらの操作を実行して状態を更新します。分離することで、インフラを変更する前にplanを確認し、承認できます。

ロック付きリモート状態が重要なのはなぜですか?

リモート状態は、すべてのエンジニアとパイプラインに共通の信頼できる唯一の情報源を提供します。ロックは二つのapplyが同時に実行されて状態を破損するのを防ぎます。端末上のローカル状態は不一致が生じ、ロックもできません。

Terraformのワークスペースは環境分離に適していますか?

一つの構成に複数の状態ファイルを持たせられるため、小さな差異には適しています。本番環境には通常、専用の構成、バックエンド、認証情報が必要です。ワークスペースの切り替えだけでは、アクセス権限や障害の影響範囲を分離できないためです。

Terraformでドリフトにどう対処しますか?

planを実行して宣言済みの状態と実際の状態の差を確認し、手動変更を維持するか判断します。その後、現実に合わせて構成を更新するか、applyして宣言済みの状態を復元します。状態の手動編集は最後の手段です。

SubcueAIは監督付きTerraform試験中に役立ちますか?

いいえ。監督付きおよび録画される試験は対象外です。会話形式の選考で、話している間に自分の記憶を呼び起こすために設計されています。事前練習には模擬面接モードを利用してください。

関連する質問

← 詳しく見る: 職種・トピック別の面接質問