解析 terraform 计划输出以检查模块与资源块的使用情况
Parsing terraform plan output to check for module vs resource block usage
我想对现有的 Terraform 构建和部署管道添加检查,以检查开发人员编写的配置格式是否正确并符合公司语法
具体来说,我想检查以确保他们没有在他们的配置中使用普通资源块,而不是模块块
例如我想我想确保他们正在使用
Module “eks_dev_wus2_app_cluster”
而不是
Resource “aws_kubernetes_cluster” “eks_dev_wus2_App_cluster”
当前方法
据我了解,我需要先转换为 json 才能解析它
terraform show -no-color -json output.tfplan > output.json
然后我应该使用 jq 工具来解析这篇文章的输出
https://linuxconfig.org/how-to-parse-a-json-file-from-linux-command-line-using-jq
关于如何专门检查 terraform 配置中的块以确认它们是资源还是模块有点模糊。
谁能指出我正确的方向?
有没有更好的获取输出值的方法?不需要完整的解决方案,只是想澄清解决这个问题的一些模糊之处
在输出格式下,有一个名为resource_changes
的列表。每个更改都有一个 address
字段。为了满足您的要求,每个地址都应以 module
开头。这使得开发人员只对他们使用此 terraform 计划更改的模块负责。
假设您已经准备好 output.json,您可以这样做:
LIST=$(cat output.json| jq -r ".resource_changes[].address")
for ADDRESS in $LIST
do
if [[ $ADDRESS != "module."* ]]; then
echo "$ADDRESS is outside of a module"
exit 1
fi
done
我想对现有的 Terraform 构建和部署管道添加检查,以检查开发人员编写的配置格式是否正确并符合公司语法
具体来说,我想检查以确保他们没有在他们的配置中使用普通资源块,而不是模块块
例如我想我想确保他们正在使用
Module “eks_dev_wus2_app_cluster”
而不是
Resource “aws_kubernetes_cluster” “eks_dev_wus2_App_cluster”
当前方法
据我了解,我需要先转换为 json 才能解析它
terraform show -no-color -json output.tfplan > output.json
然后我应该使用 jq 工具来解析这篇文章的输出 https://linuxconfig.org/how-to-parse-a-json-file-from-linux-command-line-using-jq
关于如何专门检查 terraform 配置中的块以确认它们是资源还是模块有点模糊。
谁能指出我正确的方向?
有没有更好的获取输出值的方法?不需要完整的解决方案,只是想澄清解决这个问题的一些模糊之处
在输出格式下,有一个名为resource_changes
的列表。每个更改都有一个 address
字段。为了满足您的要求,每个地址都应以 module
开头。这使得开发人员只对他们使用此 terraform 计划更改的模块负责。
假设您已经准备好 output.json,您可以这样做:
LIST=$(cat output.json| jq -r ".resource_changes[].address")
for ADDRESS in $LIST
do
if [[ $ADDRESS != "module."* ]]; then
echo "$ADDRESS is outside of a module"
exit 1
fi
done