terraform plan 可以显示已更改资源的 json 差异吗?
Can terraform plan show me a json diff for a changed resource?
当我 运行 terraform plan
时,它显示了已更改的资源,恰好是 aws_s3_bucket_object
中的 JSON 数据。但是 JSON 很长,很难看出发生了什么变化。如何将其显示为差异?
https://github.com/coinbase/terraform-landscape 可以提供帮助。
gem install terraform_landscape
(在 macOS 上可能需要 sudo)
terraform plan | landscape
这表明 JSON 变化是差异。这是来自 github 站点的示例:
我写了一个 bash 脚本来格式化 terraforms 丑陋的策略输出:
#!/bin/bash
input=$( xclip -o )
old=$( echo "$input" | awk -F' => ' '{ print }' | sed 's/\n/\n\r/g' | sed 's/\"/"/g' | sed 's/"{/{/' | sed 's/}"/}/' )
new=$( echo "$input" | awk -F' => ' '{ print }' | 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
中)。
当我 运行 terraform plan
时,它显示了已更改的资源,恰好是 aws_s3_bucket_object
中的 JSON 数据。但是 JSON 很长,很难看出发生了什么变化。如何将其显示为差异?
https://github.com/coinbase/terraform-landscape 可以提供帮助。
gem install terraform_landscape
(在 macOS 上可能需要 sudo)terraform plan | landscape
这表明 JSON 变化是差异。这是来自 github 站点的示例:
我写了一个 bash 脚本来格式化 terraforms 丑陋的策略输出:
#!/bin/bash
input=$( xclip -o )
old=$( echo "$input" | awk -F' => ' '{ print }' | sed 's/\n/\n\r/g' | sed 's/\"/"/g' | sed 's/"{/{/' | sed 's/}"/}/' )
new=$( echo "$input" | awk -F' => ' '{ print }' | 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
中)。