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'