Wel*_*ing 8 dns google-cloud-platform terraform terraform-provider-gcp
我正在尝试让 terraform 将“A”记录添加到 GCP 中的 dns 区域。这样做会导致错误:“未设置更新服务器”。此处描述了类似的错误。所以我从那里发表的评论中收集到,我需要在我的 dns 提供程序中更新项目。我尽职尽责地试图提供。
provider "dns" {
update {
server = "xxx.xxx.x.x"
}
}
Run Code Online (Sandbox Code Playgroud)
除了我不知道那里有什么 IP,而且我的第一次尝试失败了。
我需要其他设置吗?
我在文档中注意到以下格式...
provider "dns" {
update {
server = "192.168.0.1"
key_name = "example.com."
key_algorithm = "hmac-md5"
key_secret = "3VwZXJzZWNyZXQ="
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白这些设置从何而来。
更新:
马丁的建议(下面接受的答案)很有魅力。
在接下来的拥有这个挣扎,诀窍是使用google_dns_record_set代替dns_a_record_set。
该dns供应商正在实施中定义的标准DNS更新协议RFC 2136:在域名系统动态更新,这往往是由自托管DNS服务器软件等进行安装BIND。在这种情况下,凭据将由 BIND 操作员在服务器端配置,然后您又将给定的凭据传递给提供程序。
不幸的是,由于 DNS 趋向于成为各种供应商为您提供的托管服务,这些供应商中的大多数选择忽略 RFC 2136 并实现他们自己的专有 API。因此,Terraformdns提供商的管理功能与大多数托管 DNS 产品不兼容。
相反,我们使用特定于供应商的提供程序来管理这些。就您而言,由于您显然在使用 Google Cloud DNS,因此您可以使用googleTerraform 提供商的资源类型来管理您的 DNS 区域和记录。具体来说:
google_dns_managed_zone 对于区域本身google_dns_record_set 对于区域内的记录集这是一个入门的最小示例:
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
}
Run Code Online (Sandbox Code Playgroud)
这些供应商使用特定于供应商的 API 的一个主要优势是管理操作与用于其其余 API 的身份验证机制集成,因此只要您的 Google Cloud Platform 提供商拥有具有足够权限的凭据来管理这些对象,您就应该不需要任何额外的提供者配置。
Terraform 为许多不同的托管 DNS 供应商提供了供应商支持,因此不使用 Google Cloud DNS 的人们希望通过浏览可用的供应商,发现他们选择的供应商也以类似的方式得到支持。
| 归档时间: |
|
| 查看次数: |
2465 次 |
| 最近记录: |