TerraformでRoute 53の設定をインポートするときに、aws_route53_record
のドキュメントを読んでいた。このドキュメントにはRoute 53のゾーンを作るときに自動で作られるNSレコードとSOAレコードの管理方法について記述がある。しかし、コード例にはNSレコードについての記載しかない。
また、
Enabling the allow_overwrite argument will allow managing these records in a single Terraform run without the requirement for terraform import
とあるが、ゾーン作成時に一緒に作成されたNS/SOAレコードをインポートしたいだけのときは合わないユースケースに見えた(自分が把握できていないユースケースがあるのかもしれない)。
これらのNS/SOAレコードをTerraformで管理するには、あらかじめaws_route53_record.example_ns
とaws_route53_record.example_soa
(名前は例)をインポートする。
$ terraform import aws_route53_record.example_ns XXXXXXXXXXXXX_example.com_NS $ terraform import aws_route53_record.example_soa XXXXXXXXXXXXX_example.com_SOA
そのうえで、リソースを次のように定義して、terraform plan
で差分が出ないようにする。
resource "aws_route53_zone" "example" { name = "example.com" } resource "aws_route53_record" "example_ns" { zone_id = aws_route53_zone.example.id name = "example.com" records = [ "${aws_route53_zone.example.name_servers[0]}.", "${aws_route53_zone.example.name_servers[1]}.", "${aws_route53_zone.example.name_servers[2]}.", "${aws_route53_zone.example.name_servers[3]}.", ] ttl = 86400 type = "NS" } resource "aws_route53_record" "example_soa" { zone_id = aws_route53_zone.example.id name = "example.com" records = [ "${aws_route53_zone.example.primary_name_server}. awsdns-hostmaster.amazom.com 1 7200 900 1209600 86400" ] ttl = 900 type = "SOA" }