如何在Terraform 11中使用列表中的条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Terraform 11中使用列表中的条件相关的知识,希望对你有一定的参考价值。
我需要在terraform 11中创建一个条件,在该条件下,我检查本地列表变量是否存在,是否存在该列表变量,然后使用该列表,如果不使用其他列表变量。
例如,我有:
var.localList = ["apples", "oranges"]
var.remoteList = ["bananas", "carrots"]
现在我想做这样的事情(不起作用):
myVar = ["${length(var.localList) > 0 ? var.localList : var.remoteList}"]
因此,如果var.localList
不为空,则将该列表分配给myVar
,否则使用var.remoteList
。
不确定在Terraform 11中是否可行。
编辑:忘记提及我正在使用Terraform 11。
答案
您可以使用Local Values:
variable "local_list" {
default = ["foo"]
}
variable "remote_list" {
default = ["bar"]
}
locals {
myvar = length(var.local_list) > 0 ? var.local_list : var.remote_list
}
# myvar value is "foo"
output "myvar" {
value = local.myvar
}
另一答案
我在这里https://github.com/hashicorp/terraform/issues/18259找到了答案
目前基本上是一种解决方法
myVar = "${split(",", length(var.localList) > 0 ? join(",", var.localList) : join(",", var.remoteList))}"
另一答案
[coalescelist
函数似乎完全可以满足您的要求。
来自the docs
coalescelist接受任意数量的列表参数,并返回第一个不为空的参数。
所以您会写类似
myVar = coalescelist(var.localList, var.localList)
以上是关于如何在Terraform 11中使用列表中的条件的主要内容,如果未能解决你的问题,请参考以下文章
如果满足条件,则将额外元素添加到 terraform 中的列表
如何使用 Terraform 创建没有代入角色策略的 AWS IAM 角色?
如何从 terraform 中的 EC2 实例列表中提取 ID 以在 ALB 中使用?
Terraform - 如何将列表转换为地图(如何使用 terraform 获取 AMI 标签)