如何在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 标签)

如何在 terraform 中正确使用 for_each 中的 each.value?

如何获取使用 Terraform 部署的功能应用程序中的“功能网址”?