tf-summarize
tf-summarize copied to clipboard
Add an option to have an empty output
Loving the tool,
I'm looking to add an option in order to know if the plan is empty and either output a preset message (no changes in current plan
), putting out an empty plan or exiting with a specific error code (terraform already does this with the -detailed-exitcode
flag).
What do you think?
Thanks for trying out the tool @xocasdashdash .
Today, we have to run terraform plan -out=tfplan
and use the output to tf-summarize
. We can use the -detailed-exitcode
for terraform plan and not continue if there is no diff exit code.
Thoughts ?
Is the command something like this?
terraform plan -detailed-exitcode -out planfile
status=$?
if [[ "$status" == "0" ]]; then
echo "no changes"
elif [[ "$status" == "1" ]]; then
echo "terraform threw an error"
elif [[ "$status" == "2" ]]; then
echo "diff detected, running tf-summarizer"
status=0
tf-summarizer planfile
else
echo "terraform threw an unknown error"
fi
rm -f planfile
exit $status
I also have the same query. I use Terragrunt which generates lot of Terraform plans. After the json plans are generated, I iterate through all the json files, and print the path to reference the terraform module/source (see below PATH:) and call tf-summarize for each plan. However when the plan are empty, then tf-summarize will return nothing but I am still display the module path with no changes (example PATH: components/worker/event-bus/). It would be much better if I could test tf-summarize invocation to know if it has detected changes so I can avoid print the path when there are no detected changes.
Example:
TERRAFORM SUMMARY
------------------------
PATH: components/worker/event-bus/
PATH: components/worker/kinesis-to-s3/
|---aws_kinesis_firehose_delivery_stream
| |---extended_s3_stream(~)
PATH: components/worker/sqs/eventbus-dlq/
PATH: components/worker/sqs/mpgs-transactions/
PATH: components/org-service/sqs/external-merchant-provisioner/
PATH: components/provisioning-api/acm/v2/
PATH: components/provisioning-api/ssm/
PATH: components/shared/rds/groups/postgres13/
PATH: components/shared/rds/groups/postgres15/
|---aws_db_parameter_group
| |---main(~)
PATH: components/shared/rds/instance/
PATH: components/shared/redis/cluster/
Desired output:
TERRAFORM SUMMARY
------------------------
PATH: components/worker/kinesis-to-s3/
|---aws_kinesis_firehose_delivery_stream
| |---extended_s3_stream(~)
PATH: components/shared/rds/groups/postgres15/
|---aws_db_parameter_group
| |---main(~)
Thank you very much for your assistance.