【发布时间】:2019-08-14 18:35:21
【问题描述】:
我正在尝试在我的 bash 脚本中使用 terraform destroy,以便我可以从当前状态文件中自动销毁我的资源。但是我不想在销毁时再次询问用户变量,我希望它自动从当前状态文件中获取变量并销毁它。如何实现?
【问题讨论】:
标签: terraform
我正在尝试在我的 bash 脚本中使用 terraform destroy,以便我可以从当前状态文件中自动销毁我的资源。但是我不想在销毁时再次询问用户变量,我希望它自动从当前状态文件中获取变量并销毁它。如何实现?
【问题讨论】:
标签: terraform
假设您实际上并不关心状态值,因为您只是破坏那里的东西,并且没有任何变量像通常那样依赖于破坏事物,那么您实际上不需要读取状态,只需设置这些必需变量的一些虚拟值。
您可以为通常在命令行上提示输入的每个未设置变量设置虚拟值:
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
这将在您的目录中的所有.tf 文件中找到所有未设置的变量(假设您已将它们定义为variable "foo" {},因为terraform fmt 将输出)。然后它将排除 .terraform 目录中的匹配项,因此它不会对可能已拉入的子模块执行任何操作。然后它会找到双引号内的变量键,然后对它们进行重复数据删除。
找到所有未设置的所需变量后,将exports these Terraform variables as environment variables 设置为TF_VAR_$variable=dummy,以便设置每个变量。
【讨论】: