我在main.tf中有一个托管区域:
provider "aws" {
region = "us-east-1"
}
resource "aws_route53_zone" "zone" {
}
然后我可以导入现有资源,并在其他资源中使用其参数:
terraform import aws_route53_zone.zone <ZoneId>
检查状态文件我看到所有参数都在那里,包括域名。但是当我要apply
时,它说找不到name
:
Error: aws_route53_zone.zone: "name": required field is not set
我不想在.tf
文件中指定名称,因为它会降低我的.tf
的可移植性,但是指定占位符会更改托管区域本身。
是否可以忽略导入资源的参数或将其指定为“保持原样”?
我可以添加一个变量,并在每次terraform
调用中从状态文件中填充该变量,但我希望有一些简单的方法。
答案 0 :(得分:0)
导入资源时,Terraform不会(尚未)自动为您生成Terraform代码,而是必须编写资源,然后检查计划。
通常情况下,模式是像完成操作一样创建骨架资源,导入资源,然后填写所有必填字段,运行计划,然后调整资源配置,以免进行任何不必要的更改。
从那时起,Terraform将能够正常管理资源,将您对配置所做的任何更改应用到配置中,或将在Terraform之外完成的更改还原为在Terraform代码中完成的更改。