【问题标题】:How to slice 1st element in nested list in terraform如何在terraform的嵌套列表中切片第一个元素
【发布时间】:2020-05-28 05:23:13
【问题描述】:

我想将var.domain_names 传递为list(list(string)),例如:

domain_names = [
  ["foo.com",".*foo-1.com",".*foo-2.com"],
  ["bar.com",".*bar-1.com"],
  ...
]

因此它应该为 foo.com、bar.com ... 创建证书,但将 .*foo-1.com ... 等其他证书添加到 subject_alternative_names。

请帮我解决这个问题,使用 terraform 0.12.18

resource "aws_acm_certificate" "certificate" {
  domain_name               = var.domain_names[count.index]
  subject_alternative_names = slice(var.domain_names, 1, length(var.domain_names))
  validation_method         = var.validation_method

  tags = {
    Name      = var.domain_names[count.index]
    owner     = "xx"
    terraform = "true"
  }

  lifecycle {
    create_before_destroy = true
  }
}

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    您可以使用mapfor_each 循环来完成此操作。例如:

    variable "domain_names" {
      type = map(list(string))
      default = {
        "foo.com" = ["foo.com", ".*foo-1.com", ".*foo-2.com"]
        "bar.com" = [".*bar-1.com"]
      }
    }
    
    resource "aws_acm_certificate" "certificate" {
      for_each                  = var.domain_names
      domain_name               = each.key
      subject_alternative_names = each.value
      validation_method         = var.validation_method
    
      tags = {
        Name      = each.key
        owner     = "xx"
        terraform = "true"
      }
    
      lifecycle {
        create_before_destroy = true
      }
    }
    

    有关循环和条件的更多信息,请参阅this blog post

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2014-11-06
      • 2018-05-30
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多