我的生产环境配置为具有指向负载均衡器的域名。这已经可以使用Route53进行配置了。
我正在使用Terraform部署基础结构,包括Route53记录。
Route53记录是手动设置的。
我希望Terraform在后续部署中管理Route53记录。但是,当我运行更新以更新基础结构并包括Route53记录时,出现此错误:
Error: Error applying plan:
1 error(s) occurred:
* module.asg.aws_route53_record.www: 1 error(s) occurred:
* aws_route53_record.www: [ERR]: Error building changeset:
InvalidChangeBatch: [Tried to create a resource record set
[name='foo.com.', type='A'] but it already exists]
首先,此错误是有道理的,因为该资源已存在。但是,鉴于此,如何在不造成停机的情况下解决此问题?
我尝试手动编辑状态文件以包括route53记录,但是失败并出现相同的错误...
如有必要,我很乐意提供更多信息。欢迎您提出任何建议。谢谢。
答案 0 :(得分:1)
您必须使用terraform import
命令将记录导入到Terraform状态。 您不应该手动编辑状态!
有关如何导入记录的更多信息,请参见资源Docs。
答案 1 :(得分:1)
您可以使用terraform导入将现有Route53资源导入到您当前的terraform基础结构中。步骤如下:
通过Terraform初始化使用所需的工作空间来初始化terraform。
定义aws_route53_record与您现有的资源完全相同
资源“ aws_route53_record”“ www” { //您的代码在这里 }
导入所需资源
地形导入aws_route53_record。wwwZONEID_RECORDNAME_TYPE_SET-IDENTIFIER
例如:
terrain import aws_route53_record.www Z4KAPRWWNC7JR_dev.example.com_CNAME
成功导入后,这将保存现有资源的状态。
答案 2 :(得分:0)
将其保留在此处以吸引新访客。
在更高版本的aws provider(〜3.10)中,它们提供了一个参数allow_overwrite
,默认为false。
无需编辑状态文件(不建议)或进行Terraform导入。
allow_overwrite-(可选)允许在Terraform中创建此记录以覆盖现有记录(如果有)。这不会影响在Terraform中更新记录的能力,也不会阻止Terraform中的其他资源或Terraform之外的手动Route 53更改覆盖该记录。默认为false。不建议在大多数环境中使用此配置。