"terraform init"コマンド=設定値の反映と捉えて間違いないですか?

設定値の反映と捉えることは、一定程度正しいと言えます。

"terraform init"コマンドは、Terraformが使用する必要な設定値を反映するための初期化処理を行います。

 

この初期化処理には、以下のような内容が含まれます。

  • バックエンドの初期化:Terraformが使用するstateファイルの保存先となるバックエンドを初期化するための処理を行います。バックエンドには、AWS S3やAzure Blob Storageなどがあります。
  • プロバイダーの初期化:Terraformが管理するリソースを提供するクラウドプロバイダーの情報を初期化するための処理を行います。AWSやGCPなどが該当します。
  • モジュールの初期化:Terraformの外部モジュールを使用する場合、必要なモジュールを初期化するための処理を行います。
  • プラグインのインストール:Terraformが使用するプラグインをインストールするための処理を行います。プラグインには、プロバイダーや外部モジュールで必要なライブラリが含まれます。
  • Terraformのバージョンのチェック:Terraformのバージョンが古くなっていないかを確認するために、Terraformの最新バージョンを使用しているかどうかをチェックします。

"terraform init"コマンドによって、これらの初期化処理が実行され、設定値が反映されます。

また、初回実行時には、Terraformが管理するリソースの現在の状態が確認され、stateファイルが作成されます。

2回目以降の実行では、stateファイルが使用され、Terraformが管理するリソースの変更差分が計算されます。

 

したがって、「設定値の反映」という表現は、一定程度正しいと言えます。

ただし、「Terraformのプロジェクトを最新の状態にするコマンド」という表現は、

"terraform init"コマンドだけでなく、

他のコマンド(例:terraform plan、terraform apply)も必要になる場合があるため、正確ではありません。

 

tsファイルを更新するしないにもかかわらず、更新されている場合もあるのでterraform initは毎回、実行した方がいいコマンドという認識で間違いないでしょうか?

一般的に、Terraformのコードを変更していない場合は、"terraform init"コマンドを毎回実行する必要はありません。"terraform init"は、プロジェクトを初期化するためのコマンドであり、Terraformのプロバイダーやモジュール、プラグインの初期化を行うために必要です。

 

ただし、以下のような状況では、"terraform init"コマンドを実行する必要があります。

  • Terraformのバージョンを変更した場合
  • バックエンドを変更した場合
  • 新しいプロバイダーやモジュールを使用する場合
  • セキュリティパッチがリリースされた場合

 

これらの場合には、"terraform init"コマンドを実行して、Terraformが必要な初期化処理を行う必要があります。

また、Terraformのコードを変更した場合には、"terraform plan"や"terraform apply"を実行する前に、"terraform init"を実行する必要があります。これにより、変更されたコードの反映や、新しく追加されたモジュールの初期化などが行われます。

したがって、Terraformのコードを変更していない場合には、毎回"terraform init"を実行する必要はありませんが、Terraformのバージョンを変更した場合など、必要な場合には実行する必要があります。

記事タイトル検索