plan, applyはなんとなく想像がつく。providerに応じてAPIを叩いているのだろう。 stateファイルもなんとなく想像がつく。applyしたときのリソースの状態を記述するのだろう。
initって何やってるの?たまに-migrate-state
とか-reconfigure
とか何やってるか理解せずにコマンドを叩いてるから本当に不安。そのうち事故るだろうから今のうちに理解しておきたい。
https://developer.hashicorp.com/terraform/docs ソースコードを読むのはちょっと重たいので公式ドキュメントを読む。
Command: init
https://developer.hashicorp.com/terraform/cli/commands/init
- いろいろやられるコマンドだが、とりあえず最初に実行されるべきコマンドである
- 冪等性がある
- このコマンドによって現存するstateやconfigurationが削除されることはない
行われること
普段の使用で意識するべきは次の2点だろうか。
- backendが初期化される
- 子モジュール、プラグインがインストールされる
backendが初期化される
ドキュメントを読んでも、結局何がされてるのかよくわからなかった。 冒頭に挙げたフラグについては次のような説明がされていた。
-migrate-state
は既存のstateファイルを新しいbackendにコピーする-reconfigure
は既存の設定を無視する
ここでいう「設定」configuration が何なのかが分からない。これ以上はソースを読むしかないか...?
以下、自分の勝手な想像による認識。
なんかいろいろインストールされる
これはなんとなくわかる。ローカルの.terraform
ディレクトリにいろいろ入ってくるからそこにモジュールやプラグインがダウンロードされているのだろう。パブリッククラウドのAPIを叩くときのソースコードだったりするのだろう。