terraform允许我们覆盖变量吗
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
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”的错误消息检查这个我已经发布了整个场景