【问题标题】:How to add a DNS record in GCP using Terraform?如何使用 Terraform 在 GCP 中添加 DNS 记录?
【发布时间】:2020-05-02 16:13:01
【问题描述】:

我正在尝试让 terraform 将“A”记录添加到 GCP 中的我的 dns 区域。这样做会导致错误:“未设置更新服务器”。 here 描述了一个类似的错误。所以我从那里的 cmets 收集到我需要在我的 dns 提供程序中更新项目。我尽职尽责地尝试提供。

provider "dns" {
  update {
    server = "xxx.xxx.x.x"
  }
}

除了我不知道里面有什么 IP,而且我的第一次尝试失败了。

我需要其他设置吗?

我注意到in the documentation下面的格式...

provider "dns" {
  update {
    server        = "192.168.0.1"
    key_name      = "example.com."
    key_algorithm = "hmac-md5"
    key_secret    = "3VwZXJzZWNyZXQ="
  }
}

我不明白这些设置是从哪里来的。

更新:
马丁的建议(下面接受的答案)就像一个魅力。

对于下一个为此苦苦挣扎的人,诀窍是使用 google_dns_record_set 而不是 dns_a_record_set

【问题讨论】:

  • 一年后发现自己阅读一个奇怪熟悉的 SO 问题总是很有趣。才发现是你发的。再次感谢@Martin。我在这里是因为我遇到了同样的问题。再次。这次是 dns_ns_record_set。解决方案是相同的。 google_dns_record_set。

标签: google-cloud-platform dns terraform terraform-provider-gcp


【解决方案1】:

dns 提供商正在实施RFC 2136: Dynamic Updates in the Domain Name System 中定义的标准 DNS 更新协议,该协议往往由 BIND 等自托管 DNS 服务器软件实施。在这种情况下,凭据将由 BIND 操作员在服务器端配置,然后您将给定的凭据传递给提供程序。

不幸的是,由于 DNS 倾向于成为各种供应商为您提供的托管服务,因此这些供应商中的大多数选择忽略 RFC 2136 并实现自己的专有 API。因此,Terraform 的 dns 提供程序的管理功能与大多数托管 DNS 产品不兼容。

相反,我们使用供应商特定的提供商来管理这些。在您的情况下,由于您显然使用的是 Google Cloud DNS,因此您将使用来自 google Terraform 提供商的资源类型来管理您的 DNS 区域和记录。具体来说:

这是一个开始的最小示例:

resource "google_dns_managed_zone" "example" {
  name     = "example"
  dns_name = "example.com."
}

resource "google_dns_record_set" "example" {
  managed_zone = google_dns_managed_zone.example.name

  name    = "www.${google_dns_managed_zone.example.dns_name}"
  type    = "A"
  rrdatas = ["10.1.2.1", "10.1.2.2"]
  ttl     = 300
}

这些供应商使用特定于供应商的 API 的一个关键优势是管理操作与用于其其余 API 的身份验证机制集成在一起,因此只要您的 Google Cloud Platform 提供商拥有具有足够权限的凭据来管理这些 API您不应该为此需要任何额外的提供者配置的对象。

Terraform 为许多不同的托管 DNS 供应商提供了提供商支持,因此不使用 Google Cloud DNS 的人有望通过浏览the available providers 发现他们选择的供应商也以类似的方式得到支持。

【讨论】:

  • 马丁,你的回答简直完美。非常感谢!
  • @Martin 如果我们选择的供应商不在该列表中,该怎么办?我们实际上使用easydns。请你看看这个问题:stackoverflow.com/questions/64853533/…
  • 如果您想使用的供应商没有可用的提供程序,那么不幸的是,我认为您的选择并不理想:您可以要求供应商开发一个 Terraform 提供程序,您可以自己开发一个 Terraform 提供程序,您可以使用 Terraform 以外的其他方式进行管理,或者您可以选择其他 DNS 供应商。
猜你喜欢
  • 2020-07-28
  • 1970-01-01
  • 2020-02-21
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
相关资源
最近更新 更多