terraform cloudflare 循环记录

发布于 2025-01-17 07:17:17 字数 859 浏览 2 评论 0原文

我使用以下配置设置了 terraform cloudflare Push:

locals {
    ResourceRecordSets= [
        {
            Name =  "example.com.",
            Type =  "A",
            TTL =  60,
            ResourceRecords =  [
                {
                    Value =  "1.2.3.4"
                }
            ]
        }

使用此 locals 值,我将 DNS 记录推送为:

resource "cloudflare_record" "com_records" {
  count = length(local.ResourceRecordSets)

  zone_id = cloudflare_zone.site.id
  name    = local.ResourceRecordSets[count.index].Name
  value   = local.ResourceRecordSets[count.index].ResourceRecords.value
  type    = local.ResourceRecordSets[count.index].Type
  proxied = false
  ttl     = 1
}

我唯一遇到的问题是 value 部分。有时它可能是 ResourceRecords 下具有多个值的 MX 记录。我应该使用什么类型的循环?

I have a setup of terraform cloudflare push with below configuration:

locals {
    ResourceRecordSets= [
        {
            Name =  "example.com.",
            Type =  "A",
            TTL =  60,
            ResourceRecords =  [
                {
                    Value =  "1.2.3.4"
                }
            ]
        }

Using this locals value I am pushing DNS records as:

resource "cloudflare_record" "com_records" {
  count = length(local.ResourceRecordSets)

  zone_id = cloudflare_zone.site.id
  name    = local.ResourceRecordSets[count.index].Name
  value   = local.ResourceRecordSets[count.index].ResourceRecords.value
  type    = local.ResourceRecordSets[count.index].Type
  proxied = false
  ttl     = 1
}

The only thing I am struggling with is the value section. sometime it can be a MX records with multiple values under ResourceRecords. What type of loop should I use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

要走就滚别墨迹 2025-01-24 07:17:17

您必须展平您的ResourceRecordSets,例如

  FlatResourceRecordSets = merge([
    for idx, ResourceRecordSet in local.ResourceRecordSets:
      {
        for ResourceRecord in ResourceRecordSet.ResourceRecords:
            "${idx}-${ResourceRecord.Value}" => {
              ResourceRecordSet = ResourceRecordSet
              ResourceRecord =  ResourceRecord["Value"]
          }
      }
    ]...) # please do NOT remove the dots   

resource "cloudflare_record" "com_records" {
  for_each = local.FlatResourceRecordSets

  zone_id = cloudflare_zone.site.id
  name    = each.value["ResourceRecordSet"].Name
  value   = each.value["ResourceRecord"]
  type    = each.value["ResourceRecordSet"].Type
  proxied = false
  ttl     = 1
}

You have to flatten your ResourceRecordSets, for example:

  FlatResourceRecordSets = merge([
    for idx, ResourceRecordSet in local.ResourceRecordSets:
      {
        for ResourceRecord in ResourceRecordSet.ResourceRecords:
            "${idx}-${ResourceRecord.Value}" => {
              ResourceRecordSet = ResourceRecordSet
              ResourceRecord =  ResourceRecord["Value"]
          }
      }
    ]...) # please do NOT remove the dots   

then

resource "cloudflare_record" "com_records" {
  for_each = local.FlatResourceRecordSets

  zone_id = cloudflare_zone.site.id
  name    = each.value["ResourceRecordSet"].Name
  value   = each.value["ResourceRecord"]
  type    = each.value["ResourceRecordSet"].Type
  proxied = false
  ttl     = 1
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文