首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态修改地图?

如何动态修改地图?
EN

Stack Overflow用户
提问于 2018-07-19 17:15:12
回答 0查看 1.3K关注 0票数 0

我需要在特定的HCL映射键/值对上迭代更多次,这些对需要基于特定变量的值。

我想到了修改当前map的想法--这样某些键/值就会被迭代更多次。

如果我们有这个地图-让我们称它为"map_domains":

代码语言:javascript
复制
key_1 = value_1
key_2 = value_2

我们已经设置了这些变量:

代码语言:javascript
复制
variable "domains" {
  type = "list"

  default = [
    "key_1",
    "key_2",
  ]
}

variable "domain_alt_names" {
  type = "map"

  default = {
    key_1    = "value_1, value_2"
    key_2    = "value_3, value_4, value_5"
  }
}

如何将"map_domains“映射修改为:

代码语言:javascript
复制
key_1 = value_1
key_1 = value_1
key_1 = value_1
key_2 = value_2
key_2 = value_2
key_2 = value_2
key_2 = value_2

我正在尝试通过DNS验证选项来验证几个AWS ACM证书-每个域都有几个域名替代名称,它们也需要在Route53中创建DNS记录,以便正确地验证域证书。

这是用于实现总体目标的代码-问题是Zone ID,它需要在前几次迭代中保持相同,然后在剩下的迭代中保持不变。

这一行:

代码语言:javascript
复制
  zone_id = "${lookup(local.hosted_zone_ids_zipmap, element(keys(local.hosted_zone_ids_zipmap), count.index))}"

完整的代码:

代码语言:javascript
复制
#
# EKS Worker Nodes Resources
#  * Issuing ACM certificates
#

resource "aws_route53_zone" "zones" {
  count = "${length(var.domains)}"

  name = "${element(var.domains, count.index)}"
}

locals {
  hosted_zone_ids_zipmap = "${zipmap(var.domains, aws_route53_zone.zones.*.zone_id)}"
}

resource "aws_acm_certificate" "cert" {
  count = "${length(var.domains)}"

  domain_name = "${element(keys(local.hosted_zone_ids_zipmap), count.index)}"

  subject_alternative_names = ["${
  lookup(var.domain_alt_names,
  "${element(var.domains, count.index)}")
  }"]

  validation_method = "DNS"

  tags {
    Domain = "${element(keys(local.hosted_zone_ids_zipmap), count.index)}"
  }
}

locals {
  dvo           = "${flatten(aws_acm_certificate.cert.*.domain_validation_options)}"
}

resource "aws_route53_record" "cert_validation" {
  count = "${length(var.domain_alt_names) + length(var.domains)}"

  zone_id = "${lookup(local.hosted_zone_ids_zipmap, element(keys(local.hosted_zone_ids_zipmap), count.index))}"
  name    = "${lookup(local.dvo[count.index], "resource_record_name")}"
  type    = "${lookup(local.dvo[count.index], "resource_record_type")}"
  records = ["${lookup(local.dvo[count.index], "resource_record_value")}"]
  ttl     = 60

  depends_on = ["aws_acm_certificate.cert"]
}

resource "aws_acm_certificate_validation" "cert" {
  count = "${length(var.domains)}"

  certificate_arn         = "${aws_acm_certificate.cert.*.arn[count.index]}"
  validation_record_fqdns = ["${aws_route53_record.cert_validation.*.fqdn[count.index]}"]

  depends_on = ["aws_acm_certificate.cert", "aws_route53_record.cert_validation"]
}
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51418735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档