在陆地进口之前,我已经定义了:
# instance.tf
resource "aws_instance" "appserver" {
}
然后我运行:terraform import aws_instance.appserver <instance-id>
并顺利运行,通过terraform可以看到导入的ec2资源。然而,对我来说,神秘的是将这个现有的terraform状态“转换”到terraform (上面的instance.tf)中,这样我就可以将它作为一个代码来管理(或者至少我是这样理解它的)。我添加了ami和instance_type键及其相应的值,但是每次我发出terraform plan
时,terraform似乎都想“替换”我现有的实例。
1)为什么terraform想要替换该实例?
2)如何将实例的terraform状态“转换”到配置中?(这有可能吗?)
3)对于你们这些经验丰富的老兵来说,你们是如何管理现有的地形aws基础设施的?
发布于 2020-02-29 09:06:27
首先,terraform想要替换您的实例,因为terraform没有执行您期望的资源配置和当前现有实例之间的“链接”。
Terraform正式文档(https://www.terraform.io/docs/import/index.html)
当前Terraform的实现只能将资源导入状态。它不生成配置。未来版本的Terraform也将生成配置。
因此,在运行terraform导入之前,必须手动为资源编写资源配置块,将导入的对象映射到该资源。
虽然这看起来很乏味,但它仍然为Terraform用户提供了导入现有资源的途径。未来版本的Terraform将完全生成配置,大大简化了这一过程。
在理解了上面所写的内容之后,我将使用以下步骤:
资源"aws_instance“”示例“{# ...instance配置…}
terraform import aws_instance.example i-abcd1234
,以便将现有基础设施导入到状态,并将其附加到上面创建的资源配置中。https://stackoverflow.com/questions/60461575
复制相似问题