0

我正在寻找一种使用 terraform 管理 cloudflare 区域和记录的方法,并在通过 terraform 管理的每个区域中创建一些默认记录(例如 MX),如下所示:

resource "cloudflare_zone" "example_net" {
  type   = "full"
  zone   = "example.net"
}

resource "cloudflare_zone" "example_com" {
  type   = "full"
  zone   = "example.com"
}

resource "cloudflare_record" "mxrecord"{
  for_each=cloudflare_zone.*
  name     = "${each.value.zone}"
  priority = "1"
  proxied  = "false"
  ttl      = "1"
  type     = "MX"
  value    = "mail.foo.bar"
  zone_id  = each.value.id
}

有没有人知道我如何实现这一点(如果这甚至可能......)?非常感谢!

4

1 回答 1

1

您可以创建一个负责区域资源的模块,例如:

# modules/cf_zone/main.tf
resource "cloudflare_zone" "cf_zone" {
  type   = "full"    
  zone = var.zone_name
}

resource "cloudflare_record" "mxrecord"{
  name     = "${cloudflare_zone.cf_zone.name}"
  priority = "1"
  proxied  = "false"
  ttl      = "1"
  type     = "MX"
  value    = "mail.foo.bar"
  zone_id  = "${cloudflare_zone.cf_zone.id}"
}

# main.tf

module "example_net" {
  source = "./modules/cf_zone"
  zone_name = "example_net"
}

module "example_com" {
  source = "./modules/cf_zone"
  zone_name = "example_com"
}

这将使您在创建每个区域的默认资源和设置(DNS 条目、安全设置、页面规则等)方面具有优势。将所有默认值保存在一个地方以供查看也是一种好方法。您可以在此处准备更多关于 terraform 模块的信息。

于 2021-02-02T15:10:10.237 回答