terraform plan
コマンドはリソースの変更内容を、色付きで詳細に表示できますが、プロジェクトが大きくなると、リソース数が多くなりすぎ全体像を把握しにくくなります。
そんなとき便利なのが 1.0.1 から追加されていた terraform show
コマンド。planファイルをJSON形式に変換します。一度JSONに変換してしまえば、お好みのプログラミング言語で整形できます。
たとえば、これは追加・削除・変更されるリソースの名前だけを一覧表示するRubyのスクリプト。
# diff.rb
require 'json'
JSON.parse(STDIN.read)['resource_changes'].each do |c|
a = c['change']['actions'][0]
next if a == 'no-op'
op = {
'create' => '+',
'delete' => '-',
'update' => 'M'
}[a]
puts "#{op} #{c['address']}"
end
実行例
$ terraform plan -out=plan
$ terraform show -json plan | ruby diff.rb
M aws_db_subnet_group.private
- aws_subnet.public[0]
- aws_subnet.public[1]
+ module.public.aws_subnet.this["1a"]
+ module.public.aws_subnet.this["1c"]