Terraform 设置 Route53 NS 记录永远不会完成

Posted

技术标签:

【中文标题】Terraform 设置 Route53 NS 记录永远不会完成【英文标题】:Terraform setting Route53 NS record never completes 【发布时间】:2021-12-29 19:04:28 【问题描述】:
resource "aws_route53_record" "fix-ns" 
  zone_id = aws_route53_zone.main.zone_id
  name    = var.domain_name
  type    = "NS"
  ttl     = "30"
  records = ["ns-1999.awsdns-57.co.uk", "ns-1031.awsdns-00.org", "ns-688.awsdns-22.net", "ns-325.awsdns-40.com"]

我希望我的 Route53 NS 记录与一组已知的 DNS NS 记录匹配,因此我添加了上述资源。我的自动化 IAM 用户拥有AmazonRoute53FullAccess。我们到达aws_route53_record.fix-ns: Creating... 好的,它没有抛出任何错误,但它永远不会完成。

关于为什么的建议?

编辑:我突然想到,我从未看到此资源的 Still creating... 消息,它只会阻止进一步的资源创建。

【问题讨论】:

【参考方案1】:

在黑暗中有点刺,但是......

我怀疑它实际上对你来说是失败的,但是the default retry count max_retries = 25 启动并且你看不到错误消息。那里的重试机制有指数回退(这有利于其他原因),所以25 重试需要几分钟才能结束。

尝试将max_retries 设置为12 并观察结果(我猜这将是一个错误)。

【讨论】:

很高兴知道这是一个选项,但遗憾的是仍然没有显示我的错误。在收到任何错误消息之前,我必须对问题资源执行apply target【参考方案2】:

我需要将allow_overwrite = true 添加到资源中。

resource "aws_route53_record" "fix-ns" 
  allow_overwrite = true
  zone_id = aws_route53_zone.main.zone_id
  name    = var.domain_name
  type    = "NS"
  ttl     = "30"
  records = ["ns-1999.awsdns-57.co.uk", "ns-1031.awsdns-00.org", "ns-688.awsdns-22.net", "ns-325.awsdns-40.com"]

奇怪的是,我通过有针对性的部署 terraform apply -target=aws_route53_record.fix-ns 解决了这个问题。资源失败,但错误未在完整应用运行中出现,目标运行允许错误出现。感觉就像一个错误报告:o

【讨论】:

您描述的症状(即“全局”应用和目标应用之间的不一致)确实让我认为这可能是一些 Terraform 错误。或者 AWS 端的事情不是确定性的。我的意思是 - 他们服务器端的错误可能会来来去去。

以上是关于Terraform 设置 Route53 NS 记录永远不会完成的主要内容,如果未能解决你的问题,请参考以下文章

Terraform - 找不到匹配的 Route53Zone

terraform - 如何为 DNS 创建 Route53?

为啥我使用 terraform 资源 aws_route53_record 创建的 Route53 记录无法公开解析?

使用 terraform 的 Route 53 故障转移策略

Terraform 与 A​​PI-Gateway、Route53 和 SSL 认证相互依赖问题

使用 terraform 在 route53 上获取托管域的 zone_id