簡體   English   中英

使用 Terraform 創建多個 DNS Route53 A 記錄

[英]Create multiple DNS Route53 A record using Terraform

我使用 terraform 創建了一些 AWS EC2 實例,如下所示:

resource "aws_instance" "deploya"{
....
}
resource "aws_instance" "deployb"{
....
}
resource "aws_instance" "deployc"{
....
}

對於上面的aws_instances,我想創建route_53 A記錄。

我在當地人中有 A 記錄的名稱,如下所示。 它們也在腳本中的許多其他地方使用

locals {
    namea = "namea.aws.ra.com"
    nameb = "nameb.aws.ra.com"
    namec = "namec.aws.ra.com"
}   

我知道我可以為每個 aws_instance 創建 Route53 A 記錄,如下所示:

resource "aws_route53_record" "www" {
      allow_overwrite = true
      zone_id = data.aws_route53_zone.selected.zone_id
      name    = local.namea
      type    = "A"
      ttl     = "300"
      records = [aws_instance.deploya.private_ip]
    }

我在上面的手動方法中面臨的問題是代碼長度、重復和可維護性我想在這里使用一些迭代來保持代碼緊湊,我無法弄清楚它是 Terraform 的新手。此外,可能還有更多aws_instances。

這里的代碼如何保持緊湊?

您可以在創建資源時使用for_each

locals {
  instances = {
    namea = "namea.aws.ra.com"
    nameb = "nameb.aws.ra.com"
    namec = "namec.aws.ra.com"
  }
}
resource "aws_route53_record" "www" {
  for_each        = local.instances
  allow_overwrite = true
  zone_id         = data.aws_route53_zone.selected.zone_id
  name            = each.value
  type            = "A"
  ttl             = "300"
  records         = [aws_instance.deploya.private_ip]
}

回答我自己的問題。 如果有人想為 N 個 ec2 實例創建 N 個 A 記錄,請使用 map 來迭代鍵和值。

locals {
  host_names = {
    namea = "namea.aws.ra.com"
    nameb = "nameb.aws.ra.com"
    namec = "namec.aws.ra.com"
  }
  deploy_names = {
    deploya = aws_instance.deploya
    deployb = aws_instance.deployb
    deployc = aws_instance.deployc
  }
  host_deploy_names = zipmap(values(local.host_names),values(local.deploy_names))
}
resource "aws_route53_record" "www" {
  for_each        = local.host_deploy_names
  allow_overwrite = true
  zone_id         = data.aws_route53_zone.selected.zone_id
  name            = each.key
  type            = "A"
  ttl             = "300"
  records         = [each.value.private_ip]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM