Mun*_* A. 5 terraform terraform-provider-aws
terraform 是否提供此类功能来覆盖变量值?假设我声明了下面给出的两个变量。
variable "foo" {}
variable "bar" { default = "false"}
Run Code Online (Sandbox Code Playgroud)
foo
是强制性的,并bar
分配有默认值false。terraform 中是否有resoruce
可用的值可以重新分配或覆盖该bar
值?我是从resource
角度来问这个问题的。我知道我可以使用terraform-modules
.
我尝试过这种用法null_resource
,但没有得到预期的结果。它仍然返回默认值。
resource "null_resource" "this" {
provisioner "local-exec" {
command = "echo ${var.env} > ${var.newvar}"
}
}
Run Code Online (Sandbox Code Playgroud)
我还想curl
在命令属性中运行。我需要使用“口译员吗?” 如果是这样,那么它的价值是什么?
interpreter = ["shell","?"]
我应该传递哪些值来curl
在配置程序中执行命令local-exec
。
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
Run Code Online (Sandbox Code Playgroud)
[回答关于覆盖的第一个问题...]
有几种方法可以解决这个问题。我不知道你的确切用例,所以你的里程可能会有所不同。
您可以导出具有您想要使用的值的环境变量。例如,您可以将bar
var 设置为新值export TF_VAR_bar=newvalue
,然后terraform
在该会话中运行。或者将它们组合在同一行:TF_VAR_bar=newvalue terraform apply
参考:https: //www.terraform.io/docs/configuration/environment-variables.html
使用覆盖文件。例如:
override.tf
可以包含variable "bar" { default = "newvalue"}
或任何其他 TF 代码。它是最后加载的。
参考:https: //www.terraform.io/docs/configuration/override.html
将您的代码放入 TF 模块中,然后您可以调用该模块并传递bar
您想要的值。如果您继续重复使用相同的代码并希望使用不同的参数配置某些资源集的不同实例,这尤其有用。
参考:https: //www.terraform.io/docs/configuration/modules.html
哈!
归档时间: |
|
查看次数: |
15605 次 |
最近记录: |