地形是否允许我们覆盖变量



terraform是否提供这样的功能来覆盖变量值?假设我已经声明了下面给出的两个变量。

variable "foo" {}
variable "bar" { default = "false"}

foo是必需的,bar分配默认值false。地形中是否有任何resoruce可以重新分配或覆盖bar值?我从resource的角度问这个问题。我知道我可以使用terraform-modules来做到这一点。

我已经尝试过这种用法null_resource但没有得到预期的结果。它仍返回默认值。

resource "null_resource" "this" {
provisioner "local-exec" {
command = "echo ${var.env} > ${var.newvar}"
}
}

我还想在命令属性中运行curl。我需要使用"口译员"吗?如果是这样,那么它的价值会是什么?

interpreter = ["shell","?"]我应该传递哪组值才能在local-exec配置器中执行curl命令。

bash脚本

function check_efs() {
curl -ls https://elasticfilesystem.us-east-1.amazonsaws.com
if [ $? -eq 0 ]; then
output=1
else:
output=0
}
function produce_output() {
value=$(output)
jq -n 
--arg is_efs_exist "$value" 
'{"is_efs_exist":$is_efs_exist}'
}
check_efs
produce_output

[回答关于覆盖的第一个问题...]

有几种方法可以解决这个问题。我不知道您的确切用例,因此您的里程可能会有所不同。

  1. 您可以导出具有要使用的值的环境变量。例如,您可以使用export TF_VAR_bar=newvaluebarvar 设置为新值,然后在该会话中运行terraform。或者将它们组合在同一行上:TF_VAR_bar=newvalue terraform apply

    参考: https://www.terraform.io/docs/configuration/environment-variables.html

  2. 使用覆盖文件。例如:override.tf可能包含variable "bar" { default = "newvalue"}或任何其他 TF 代码。它是最后加载的。

    参考: https://www.terraform.io/docs/configuration/override.html

  3. 将代码放入 TF 模块中,然后可以调用该模块并传递所需的bar值。如果您继续重复使用相同的代码,并希望使用不同的参数预配某些资源集的不同实例,这将特别有用。

    参考: https://www.terraform.io/docs/configuration/modules.html

哼!

相关内容

  • 没有找到相关文章

最新更新