我们如何从terraform状态文件中自动加载变量?

时间:2019-08-14 06:33:49

标签: terraform

我正在尝试在bash脚本中使用terraform destroy,以便可以自动销毁当前状态文件中的资源。但是我不想在销毁时再次询问用户变量,而是希望它自动从当前状态文件中获取变量并销毁它。如何实现?

1 个答案:

答案 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,以便设置每个变量。