我正在尝试在bash脚本中使用terraform destroy
,以便可以自动销毁当前状态文件中的资源。但是我不想在销毁时再次询问用户变量,而是希望它自动从当前状态文件中获取变量并销毁它。如何实现?
答案 0 :(得分:1)
假设您实际上并不关心状态值,因为您只是破坏状态,而通常情况下都不依赖任何变量来破坏状态,那么您实际上不需要读取状态,只需设置这些必需变量的一些虚拟值。
您可以为通常在命令行上提示输入的每个未设置变量设置虚拟值:
for variable in $(grep -R -I 'variable .* {}' path/to/terraform/files/directory | grep -v -F .terraform/ | cut -d'"' -f2 | sort -u); do
export TF_VAR_$variable=dummy
done
这将在目录中的所有variable "foo" {}
文件中找到所有未设置的变量(假设您已将terraform fmt
定义为.tf
并将其输出)。然后,它将排除.terraform
目录中的匹配项,因此它对可能已插入的子模块不做任何事情。然后,它找到双引号内的变量键,然后对它们进行重复数据删除。>
找到所有未设置的必需变量后,将其exports these Terraform variables as environment variables设为TF_VAR_$variable=dummy
,以便设置每个变量。