【发布时间】:2020-08-07 10:52:49
【问题描述】:
对 Terraform 世界很陌生,想了解通过 terraform 将 dns 区域数据批量导入 aws_route53 的最佳方法。
我实际上是想看看如何通过 Terraform 在route53 中复制Import Zone File 功能
例如,假设区域数据是由dig axfr ... 生成的一个相当大的文件,如下所示:
; <<>> DiG 9.10.6 <<>> axfr zonetransfer.me @nsztm1.digi.ninja.
;; global options: +cmd
zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600
zonetransfer.me. 301 IN TXT "google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA"
zonetransfer.me. 7200 IN MX 0 ASPMX.L.GOOGLE.COM.
zonetransfer.me. 7200 IN MX 10 ALT1.ASPMX.L.GOOGLE.COM.
zonetransfer.me. 7200 IN MX 10 ALT2.ASPMX.L.GOOGLE.COM.
zonetransfer.me. 7200 IN MX 20 ASPMX2.GOOGLEMAIL.COM.
zonetransfer.me. 7200 IN MX 20 ASPMX3.GOOGLEMAIL.COM.
zonetransfer.me. 7200 IN MX 20 ASPMX4.GOOGLEMAIL.COM.
zonetransfer.me. 7200 IN MX 20 ASPMX5.GOOGLEMAIL.COM.
zonetransfer.me. 7200 IN A 5.196.105.14
zonetransfer.me. 7200 IN NS nsztm1.digi.ninja.
zonetransfer.me. 7200 IN NS nsztm2.digi.ninja.
_acme-challenge.zonetransfer.me. 301 IN TXT "6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI"
... (and much more)
在配置文件中逐个创建这些资源看起来很痛苦/容易出错:
//main.tf
resource "aws_route53_zone" "example" {
name = "zonetransfer.me."
}
resource "aws_route53_record" "A" {
zone_id = aws_route53_zone.example.zone_id
name = aws_route53_zone.example.name
type = "A"
ttl = "7200"
records = ["5.196.105.14"]
}
resource "aws_route53_record" "MX" {
//
}
// all records here
理想情况下,我想使用类似的东西:
//main.tf
resource "aws_route53_zone" "example" {
name = "zonetransfer.me."
}
resource "aws_route53_record" "all_records" {
file = "<path_to_zone_data_file.txt>"
}
任何有关如何处理此问题的建议/指针将不胜感激
【问题讨论】:
-
你不能在 Terraform 中这样做。你必须使用你的第一个选项。您可以查看github.com/dtan4/terraforming 或github.com/GoogleCloudPlatform/terraformer 之类的工具来大量导入大量现有资源。
标签: terraform amazon-route53 terraform-provider-aws