当我运行terraform plan
时,它会显示已更改的资源,恰好是aws_s3_bucket_object
中的JSON数据。但JSON很长,很难看出改变了什么。如何将其显示为差异?
答案 0 :(得分:9)
答案 1 :(得分:0)
我写了一个bash脚本来格式化terraforms丑陋的策略输出:
#!/bin/bash
input=$( xclip -o )
old=$( echo "$input" | awk -F' => ' '{ print $1 }' | sed 's/\\n/\n\r/g' | sed 's/\\"/"/g' | sed 's/"{/{/' | sed 's/}"/}/' )
new=$( echo "$input" | awk -F' => ' '{ print $2 }' | sed 's/\\n/\n\r/g' | sed 's/\\"/"/g' | sed 's/"{/{/' | sed 's/}"/}/' )
echo "----------------------------------------------------------------------------------------------"
echo "old:"
echo "$old" | jq '.'
echo "----------------------------------------------------------------------------------------------"
echo "new:"
echo "$new" | jq '.'
echo "----------------------------------------------------------------------------------------------"
echo "diff:"
diff -u --color <( echo "$old" | jq '.' ) <( echo "$new" | jq '.' )
echo "----------------------------------------------------------------------------------------------"
它显示三个输出块,旧的,新的,然后是差异。它使用xclip
,jq
和diff
。用法(在Linux上)突出显示terrafrom输出,然后调用脚本(我称其为tf-diff
,它位于~/bin
中)。