terraform允许我们覆盖变量吗

terraform允许我们覆盖变量吗,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,terraform是否提供了覆盖变量值的功能?假设我声明了下面给出的两个变量 variable "foo" {} variable "bar" { default = "false"} foo是必需的,并且bar指定了默认值false。在terraform中是否有任何可用的resoruce,我可以在其中重新分配或覆盖条值?我是从资源的角度来问这个问题的。我知道我可以使用地形模块来实现这一点 我尝试过使用null\u资源,但没有得到预期的结果。它仍然返回默认值 resource "null_re

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

variable "foo" {}
variable "bar" { default = "false"}
foo
是必需的,并且
bar
指定了默认值false。在terraform中是否有任何可用的
resoruce
,我可以在其中重新分配或覆盖
值?我是从
资源
的角度来问这个问题的。我知道我可以使用
地形模块
来实现这一点

我尝试过使用
null\u资源
,但没有得到预期的结果。它仍然返回默认值

resource "null_resource" "this" {
  provisioner "local-exec" {
    command = "echo ${var.env} > ${var.newvar}"
  }
}
我还想在命令属性中运行
curl
。我需要用翻译吗。如果是这样,那么它的价值是什么

解释器=[“shell”,“?”]
local exec
provisioner中执行
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
[回答关于覆盖的第一个问题…]

有几种方法可以解决这个问题。我不知道您的具体使用情况,因此您的里程数可能会有所不同

  • 您可以导出具有要使用的值的环境变量。例如,您可以使用
    export TF_var\u bar=newvalue
    bar
    var设置为新值,然后在该会话中运行
    terraform
    。或者将它们组合在同一行:
    TF\u VAR\u bar=newvalue terraform apply

    参考:

  • 使用覆盖文件。例如。:
    override.tf
    可以包含
    变量“bar”{default=“newvalue”}
    或任何其他tf代码。它是最后装的

    参考:

  • 将代码放入TF模块,然后可以调用该模块并传递所需的
    bar
    值。如果您一直在重复使用相同的代码,并且希望使用不同的参数为某些资源集提供不同的实例,这一点尤其有用

    参考:


  • 你好@muneeb-这是两个问题。请把第二个问题(关于“卷曲”)放到它自己的问题里。谢谢!对不起,我不清楚-我是说它自己的StackOverflow问题。我不确定我是否理解你想要什么。检查这个,然后。不确定您的用例,但这可能有助于澄清。感谢您的回答,用例是我想提供一个具有给定区域的EC2实例,并使用EFS装载该实例。现在的问题是,EFS在某些地区不可用,这可能会导致资源调配时出现问题。因此,使用一些变量值作为计数,我想确定EFS是否存在。您可以尝试以下操作:
    count=“${var.EFS_exists==”true”?1:0}“
    。您可以通过一些外部机制(shell脚本等)设置efs_exists的值。这正是我想要实现的。我正在使用
    外部
    数据源
    执行bash脚本。如果我只返回JSON,它就会成功执行。但是如果我使用
    curl-lshttps://elasticfilesystem.us-east-1.amazonaws.com
    然后尝试返回它给我一条“无法解析JSON”的错误消息检查这个我已经发布了整个场景