【问题标题】:Extract Key/Values from Terraform Map Variable从 Terraform 地图变量中提取键/值
【发布时间】: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 而不是密钥。

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    您可以为此使用keysvalues 函数:

    # 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+。在那种情况下,我需要在一行中进行替换,而不是为每一行编写。有什么方法可以将其推广到偶数/奇数的许多值。我按照同样的方式更新了我的问题。请检查一次。
    猜你喜欢
    • 2020-05-09
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多