如何忽略对 ec2 实例除特定属性之外的所有内容的更改?



我正在为已部署的 EC2 实例创建地形配置。我想单独更改此实例的实例类型。我想要这样的东西:

resource "aws_instance" "ec2" {
ami           =  "ami-09a4a9ce71ff3f20b"
instance_type = "t2.micro"
lifecycle {
ignore_changes = [
<everything except instance_type> 
]
} 
} 

如何忽略对 ec2 实例除特定属性之外的所有内容的更改?

不幸的是,当资源的状态与现有状态不匹配时,我似乎找不到一种方法来做到这一点。但是我已经测试过这是可能的,但是您需要分阶段进行操作......首先告诉 Terraform 该 EC2 实例的当前状态是什么,然后从那里开始工作。

步骤 1:为 ec2 实例创建当前存在的资源块

我会结合手动输入(是的,我知道很乏味(和利用地形导入来做到这一点。

您可以多次运行terraform plan,直到它显示资源上没有更改,这将表明资源现在与资源的当前状态匹配。

第 2 步。使用新实例类型更新块

一旦它们相等,只需将aws_instance资源块更新为您想要的instance_type即可。

第 3 步。有针对性地将更改应用于 EC2 实例

若要确保仅应用对此实例的更改,可以依靠 terraform apply -target 命令来专门针对此资源应用的目标。这将使计划中更新的任何其他资源无效。

第 4 步。根据需要进行进一步调整

一旦资源现在与所需的实例匹配。继续修改资源块的其余部分以反映未来的状态更改。

相关内容

  • 没有找到相关文章

最新更新