ナンモワカランアザラシ

技術的なアレコレを自分の言葉で書いて保管・公開しておくための静かなインターネット

terraformなんもわからん

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 が何なのかが分からない。これ以上はソースを読むしかないか...?

以下、自分の勝手な想像による認識。

  • backendはなんらかのストレージにあるファイル
  • initすることでbackendとして指定されたファイルを認識する?

なんかいろいろインストールされる

これはなんとなくわかる。ローカルの.terraformディレクトリにいろいろ入ってくるからそこにモジュールやプラグインがダウンロードされているのだろう。パブリッククラウドAPIを叩くときのソースコードだったりするのだろう。