28リアルタイムテラフォームインタビューの質問と回答
公開: 2022-03-11これは、28のリアルタイムテラフォームインタビューの質問と回答であり、インタビューでよく聞かれる重要なコマンドのリストと説明が含まれています。
クラウドテクノロジーの使用の増加は、DevOpsの世界に多くの機会をもたらしました。 将来的には、クラウドテクノロジーが面接の質問の共通トピックになり、コードとしてのクラウドとインフラストラクチャの基本的な知識、IACツールがDevOpsの役割に必須になります。
テラフォームとは?
Terraformは、すべてのクラウドエンジニアが使用する最も人気のあるIACツールの1つです。 これにより、人間が読み取れる構成ファイルでクラウドリソースとオンプレミスリソースの両方を定義し、これらのリソースをプログラムでプロビジョニングできます。 Terraformの最も注目すべき機能は、他のほとんどのIACツールとは異なり、単一のクラウドプロバイダーに限定されないことです。 Terraformを使用して、複数のクラウドプラットフォームで同時にアプリケーションを実行できます。
テラフォームがサポートするテクノロジーについて疑問に思われる方のために、以下に小さなリストを示します。
- アマゾンウェブサービス(AWS)
- Google Cloud Platform(GCP)
- Microsoft Azure
- IBM Cloud
- VMware vSphere
- サーバースペース
DigitalOcean - OracleCloudインフラストラクチャ
- ヤンデックス。 クラウド
- OpenStack。
DevOpsエンジニア、クラウドアーキテクト、開発者、または管理者としてのキャリアを進めるには、Terraformの面接の質問に直面する必要があります。 テラフォームの知識を深めるのに役立つ、テラフォームの面接に関する上位の質問のリストをまとめました。
一般的なテラフォームインタビューの質問と回答
#1。 テラフォームで何がわかりますか?
Terraformは、HashiCorpによって作成されたオープンソースのIACツールです。 複数のクラウドプラットフォームでインフラストラクチャを作成、更新、削除、バージョン管理するために使用されます。
#2。 DevOpsにTerraformを選択する理由は何ですか?
インフラストラクチャのプロビジョニングにTerraformを使用すると、人的エラーの余地がなくなるため、クラウドとオンプレミスインフラストラクチャの品質、一貫性、効率が向上します。 TerraformはHCL言語を使用します。これは、JSONに非常によく似ており、習得と使用が簡単です。 Cloudformation for AWSなどのクラウドプロバイダーが提供する他のIACツールとは異なり、Terraformを複数のクラウドプラットフォームで同時に使用できます。 これにより、複数のIACツールを学習する必要がなくなり、コラボレーションの範囲が改善されます。
#3。 Terraformはどのように機能しますか?
Terraformは、Terraformプロバイダーと呼ばれるプラグインを使用して、Cloud Platform上のAPIとやり取りし、リソースをプロビジョニングします。 エンドユーザーとして、テラフォームワークフローには3つのステップがあります。
書き込み:インフラストラクチャをコードとして作成します。
計画:適用する前にTerraformが行う変更をプレビューします。
適用:インフラストラクチャをプロビジョニングし、変更を適用します。
#4。 Terraformクラウドとはどういう意味ですか?
Terraform Cloudは、Terraformワークフロー用に最適化されたリモート環境です。 ワークスペースや状態ロックなどの機能を提供し、大規模なチームの人々が共同作業を行えるようにします。
#5。 テラフォームの州ごとに何を理解していますか?
IACツールとして、テラフォームはその管理下にある構成とインフラストラクチャの現在の状態を知る必要があります。 Terraformは、この情報を状態ファイルと呼ばれるファイルに保存します。
#6。 Terraform Stateのメリットは何ですか?
Terraformの状態により、Terraformは実際のリソースを構成にマッピングし、メタデータを追跡し、複雑なインフラストラクチャの変更を計画する際のパフォーマンスを向上させることができます。 これはTerraformの重要なコンポーネントです。
#7。 Terraformバックエンドで何を理解していますか?
Terraformバックエンドは、Terraform状態スナップショットが保存されるプラットフォームです。 デフォルトでは、Terraformはlocalというバックエンドを使用して、状態をローカルファイルとしてディスクに保存します。 サポートされている他のすべてのバックエンドは、ある種のリモートストレージサービスです。
#8。 Terraformのプロバイダーとは何ですか?
Terraformのプロバイダーは、Terraformがクラウドプロバイダー、SaaSプロバイダー、およびその他のAPIと対話できるようにするプラグインです。 たとえば、Terraformを使用してAWSでインフラストラクチャをプロビジョニングする場合は、構成ファイルでAWSプロバイダーを宣言する必要があります。
#9。 テラフォームプロバイダーを維持しているのは誰ですか?
プロバイダーは、Terraform自体とは別に配布されます。 Terraformユーザーとして、誰でも独自のプロバイダーを開発できます。 Hashicorpによって明示的に維持されている標準プロバイダーがいくつかあります。
#10。 センチネルとは何ですか?
Sentinelは、Terraformによってデプロイされるリソースの標準構成を実施するために使用されるコードツールとしてのポリシーです。 組織はコンプライアンスとガバナンスの目的で使用できます。
#11。 Terraformのモジュールで何を理解していますか?
Terraformモジュールは、リソースのプロビジョニングと構成に一緒に使用される複数のリソースの標準コンテナーです。 たとえば、標準のVPCと、サブネットやインターネットゲートウェイなどの他のリソースをプロビジョニングする組織用の「VPCモジュール」を作成できます。 モジュールは、パブリックモジュールレジストリを介してパブリックに共有でき、プライベートモジュールレジストリを介してプライベートに共有できます。
#12。 テラフォームでモジュールを使用する利点は何ですか?
Terraformモジュールを使用すると、リソースセットの上に論理的な抽象化を作成できます。 モジュールを使用すると、リソースの標準構成を維持および再利用できます。 それらをバージョン管理してチームのメンバーと共有し、標準的な方法でリソースをプロビジョニングできます。
#13。 プライベートモジュールレジストリとは何ですか?
プライベートモジュールレジストリTerraformCloud機能を使用すると、組織全体でTerraformモジュールを共有できます。
高度なテラフォームインタビューの質問と回答
#14。 あるモジュールから別のモジュールにデータをエクスポートするにはどうすればよいですか?
モジュール構成ファイルで出力ブロックを定義することにより、モジュールからデータをエクスポートできます。 このデータは、パラメータとして宛先モジュールに転送できます。
#13。 Terraformで依存関係をどのように定義できますか?
Terraformには依存関係管理が組み込まれています。 Terraformには、リソース間に2種類の依存関係があります。暗黙的な依存関係と明示的な依存関係です。
名前が示すように、暗黙の依存関係はTerraformによって自動的に検出されます。 これは、「リソースA」の出力が「リソースB」で使用される場合です。 Terraformは、「リソースA」の後にのみ「リソースB」を作成する必要があることを自動的に検出します

2つのリソースが出力を共有せずに内部的に相互に依存している場合は、明示的な依存関係を指定できます。 これは、構成ブロックのdepends_onパラメーターを使用して実行できます。
#14。 Terraformのプロビジョナーとは何ですか?
プロビジョナーは、リソースの作成または破棄の一部としてスクリプトを実行するために使用されるTerraformリソースです。 Terraformには2つのタイプのプロビジョナーがあります。
- local-exec: Terraformを実行しているマシンでスクリプトを呼び出します。
- remote -exec:作成された後、リモートリソースでスクリプトを呼び出します。
プロビジョナーは、Terraformの最後の手段としてのみ使用することを目的としています。
#15。 Terraformの外部データブロックとは何ですか?
local-execプロビジョナーと同様に、外部データボックを使用してTerraformを実行しているマシンでスクリプトを実行できます。 プロビジョナーと外部データブロックの違いは、外部データブロックのスクリプトはJSON形式でデータを返すことができるのに対し、プロビジョナーは出力を返すことができないことです。 外部データブロックも最後の手段となることを意図しており、より良い代替手段がある場合は使用しないでください。
#16。 Terraformクラウドを使用している2人が、同じ作業ディレクトリを使用して2つの異なるインフラストラクチャセットを作成するにはどうすればよいですか?
異なるワークスペースを使用する。 これらのユーザーは、2つの別々のワークスペースでTerraformの実行を開始できます。 各ワークスペースには独自の状態ファイルがあり、リソースが重複しない限り、両方のユーザーが同じコードを使用して2つの異なるインフラストラクチャセットを正常にプロビジョニングできます。
#17。 複数のエンジニアが同じ状態ファイルを使用してインフラストラクチャの展開を開始するとどうなりますか?
Terraformには、 「状態ロック」と呼ばれる非常に重要な機能があります。 この機能により、実行中に状態ファイルに変更が加えられず、状態ファイルが破損するのを防ぐことができます。 すべてのTerraformバックエンドが状態ロック機能をサポートしているわけではないことに注意することが重要です。 この機能が必要な場合は、適切なバックエンドを選択する必要があります。
#18。 Terraformのヌルリソースとは何ですか?
テラフォームヌルリソースは、標準のテラフォームリソースブロックのように実行されますが、リソースを作成しない構成です。 これは奇妙で役に立たないリソースのように聞こえるかもしれませんが、Terraformの制限を回避するためにさまざまな状況で役立つ場合があります。
#19。 異なる構成のTerraformで同じプロバイダーをどのように使用できますか?
プロバイダーブロックでエイリアス引数を使用する。
#20。 リソースのないTerraform構成ファイルがあります。 terraform apply
コマンドを実行するとどうなりますか?
Terraformはすべてのリソースを破壊します。 terraform apply
コマンドを使用して空の実行を開始することは、terraformdestroy実行を開始することとまったく同じです。
#21。 リソースがテラフォームで正常に作成されたが、プロビジョニング中に失敗した場合はどうなりますか?
これはありそうもないシナリオですが、これが発生すると、リソースは汚染されたものとしてマークされ、テラフォームの実行を再開することで再作成できます。
#22。 TF_LOG
変数のどの値が、最も詳細なログを提供しますか?
TRACEは、 TF_LOG
変数の最も冗長でデフォルト値です。
#23。 Terraform Managementで既存のリソースをインポートするにはどうすればよいですか?
terraform import
コマンドを使用する。
#24。 テラフォーム実行プランをプレビューするために使用できるコマンドはどれですか?
terraform plan
コマンドは、Terraformがインフラストラクチャに対して行う変更の実行プランを生成します。
#25。 Terraformの状態を実際のインフラストラクチャと調整するために使用できるコマンドはどれですか?
terraform apply -refresh-only
コマンドは、Terraformの状態を実際の実際のインフラストラクチャと調整するために使用されます。 これは、現在廃止されているterraform refresh
コマンドの新しい代替手段です。
#26。 Terraform Cloudを使用するときに、ワークスペースを切り替えるために使用できるコマンドはどれですか?
terraform workspace select <workspace-name>
コマンドは、別のワークスペースを選択するために使用されます。
#27。 テラフォーム構成ファイルの構文検証を実行するために使用されるコマンドはどれですか?
terraform validate
コマンドは、構成が構文的に有効であり、内部的に一貫しているかどうかを確認するために使用されます。
#28。 Terraformクラウドに新しいワークスペースを作成するために使用されるコマンドはどれですか?
terraform workspace new <workspace-name>
コマンドは、新しいワークスペースを作成するために使用されます。
技術面接のための他のいくつかの重要なテラフォームコマンド。
- terraform init:リモートバックエンドを初期化します。 構成で定義されたプロバイダーとリモートモジュールをダウンロードします。
- terraform init -upgrade:既存のダウンロードされたプロバイダーをアップグレードするために使用されます。
- テラフォームプラン:インフラストラクチャの作成または更新の実行プランを生成します。
- テラフォーム適用:ユーザーに確認を要求した後、インフラストラクチャを作成または更新します。
- terraform apply –auto-approve:インフラストラクチャを作成または更新します。 ユーザー承認段階はスキップされます。
- terraform destroy:ユーザーに確認を要求した後、インフラストラクチャを削除します。
- terraform destroy –auto-approve:インフラストラクチャを削除します。 ユーザー承認段階はスキップされます。
- terraform fmt :現在のディレクトリをスキャンして構成ファイルを探し、HCPの標準的なスタイルと形式に従ってフォーマットします。
- terraform fmt –recursive:現在のディレクトリとサブディレクトリをスキャンして構成ファイルを探し、HCPの標準的なスタイルと形式に従ってフォーマットします。
- terraform show:状態ファイルまたは計画ファイルから人間が読める形式の出力を提供します。
上記の情報がTerraformの仕事に役立つことを願っています。