理系学生日記

おまえはいつまで学生気分なのか

特定の順序で Terraform を実行したい

Terraform で State を分割すると、たくさんの root module ができます。 ある root module が別 module の remote state 参照を持つとき、module 間に依存関係が生じます。 僕たちはこの依存順に terraform を apply しなければなりませんし、その逆順に destroy していかないといけない。

手動でそれを記憶するのが大変だるい感じになってきたのでどうしたものかなと思った時に思った簡単な解決策は、その依存順をテキストファイルで表現しておくというものでした。

$ cat dependency.dat
module1
module2
module3

上記のように依存順をそのまま書き下した dependency.dat を用意しておいて、 xargs に食わせる。

$ cat dependency.dat | xargs -I% sh -c 'echo === % ===; cd %; terraform apply -auto-approve'

destroy するときは逆順での適用が必要ですが、我々には tac コマンドがある。

$ tac dependency.dat | xargs -I% sh -c 'echo === % ===; cd %; terraform destroy -auto-approve'