Terraform导入海量记录

时间:2019-08-19 18:45:38

标签: terraform amazon-route53 terraform-provider-aws

我正在构建从未有过的Terraform基础设施。我有300条Route53记录。我使用terraform import命令导入状态,直到我意识到对每个记录进行操作都是不明智的,因为其中有很多记录。

我尝试了一个名为terraforming的工具,但看起来状态没有得到很好的更新。导入后,当我执行terraform plan时,会看到很多东西会被创建。这是错误的。

我有类似的方块:

resource "aws_route53_record" "examplerecord" {
   zone_id = "zone_id"
   name    = "name"
   type    = "NS"
   records = [""]
resource "aws_route53_zone" "examplezone" {
   name       = "name"
   comment    = "comment"
   tags {
   }
}

如何实现一次将所有记录导入Terraform状态?有任何想法吗?谢谢。

2 个答案:

答案 0 :(得分:1)

我对terraforming不熟悉,但是用原始的terraform做您想做的事已经很痛苦,因为您需要在.tf文件中创建空白资源条目。

假设这是一次性的事情,那么我将编写一个简短的程序,该程序使用AWS API来获取所有相关记录,然后将它们重新格式化为terraform配置。像

r = boto3.client('route53')
for hz in r.list_hosted_zones()['HostedZones']
  # ... output an "aws_route53_zone" record
  for rrs in r.list_resource_record_sets(HostedZoneId=hz['HostedZoneId']):
    for rr in rrs['ResourceRecordSets']:
      # ... output an aws_route53_record" 

您明白了。你可以告诉我我已经做过了:)

答案 1 :(得分:1)

看看terraformer

它可以将所有r53记录导入到您的状态并同时生成Terraform代码。