从 Terraform 地图变量中提取键/值
Posted
技术标签:
【中文标题】从 Terraform 地图变量中提取键/值【英文标题】:Extract Key/Values from Terraform Map Variable 【发布时间】:2020-05-10 09:59:30 【问题描述】:我正在尝试从 terraform 地图变量中提取左值和右值,但无法提取左值。下面是我的代码:-
variables.tf
variable "notebook"
type = "map"
default =
"01" = "a@a.com"
"02" = "b@a.com"
"03" = "c@a.com"
"04" = "d@a.com"
......
下面是我在 main.tf 中的模块
module "instance"
instance_ip = ["1.1.1.x", "1.1.2.y", "1.1.1.z","1.1.2.p"]
dns = ["x", "y", "z","p"]
name = ["a", "b", "c", "d"]
输出应该如下:-
module "instance"
instance_ip = ["1.1.1.01", "1.1.2.02", "1.1.1.03","1.1.2.04" and so on]
dns = ["01", "02", "03","04" and so on]
name = ["a@a.com", "b@a.com", "c@a.com", "d@a.com and so on]
任何建议。我尝试查找变量,但只得到 a@a.com 而不是密钥。
【问题讨论】:
【参考方案1】:您可以为此使用keys
和values
函数:
# terraform 0.12
module "instance"
instance_ip = ["1.1.1.$keys(var.notebook)[0]", "1.1.1.$keys(var.notebook)[1]", "1.1.1.$keys(var.notebook)[2]"]
dns = keys(var.notebook)
name = values(var.notebook)
# terraform 0.11
module "instance"
instance_ip = ["1.1.1.$keys(var.notebook)[0]", "1.1.1.$keys(var.notebook)[1]", "1.1.1.$keys(var.notebook)[2]"]
dns = ["$keys(var.notebook)"]
name = ["$values(var.notebook)"]
【讨论】:
感谢@Matt,但在我的情况下,值将超过 10/20+。在那种情况下,我需要在一行中进行替换,而不是为每一行编写。有什么方法可以将其推广到偶数/奇数的许多值。我按照同样的方式更新了我的问题。请检查一次。以上是关于从 Terraform 地图变量中提取键/值的主要内容,如果未能解决你的问题,请参考以下文章