Terraform 除了某个属性外,如何忽略对ec2实例的所有更改?

Terraform 除了某个属性外,如何忽略对ec2实例的所有更改?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在为已经部署的EC2实例创建地形配置。我想单独更改此实例的实例类型。我想要这样的东西: resource "aws_instance" "ec2" { ami = "ami-09a4a9ce71ff3f20b" instance_type = "t2.micro" lifecycle { ignore_changes = [ <everything except instance_type> ] } }

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

 resource "aws_instance" "ec2" {
  ami           =  "ami-09a4a9ce71ff3f20b"
  instance_type = "t2.micro"
  lifecycle {
    ignore_changes = [
      <everything except instance_type> 
    ]
  } 
} 
资源“aws\u实例”“ec2”{
ami=“ami-09a4a9ce71ff3f20b”
实例_type=“t2.micro”
生命周期{
忽略更改=[
]
} 
} 

如何忽略ec2实例中除某个属性之外的所有更改?

不幸的是,当资源的状态与现有状态不匹配时,我似乎找不到这样做的方法。但是我已经测试过这是可能的,但是你需要分阶段进行操作。。。从告诉terraform ec2实例的当前状态开始,并从那里开始工作

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

我会结合手动输入(是的,我知道这很乏味)和使用

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

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

一旦它们相等,则只需将
aws\u实例
资源块更新为所需的
instance\u类型

第3步。以有针对性的方式将更改应用于EC2实例

为了确保只应用对此实例的更改,可以使用命令专门针对该资源应用目标。这将使计划中的任何其他资源更新无效

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


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

不幸的是,当资源的状态与现有状态不匹配时,我似乎找不到这样做的方法。但是我已经测试过这是可能的,但是你需要分阶段进行操作。。。从告诉terraform ec2实例的当前状态开始,并从那里开始工作

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

我会结合手动输入(是的,我知道这很乏味)和使用

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

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

一旦它们相等,则只需将
aws\u实例
资源块更新为所需的
instance\u类型

第3步。以有针对性的方式将更改应用于EC2实例

为了确保只应用对此实例的更改,可以使用命令专门针对该资源应用目标。这将使计划中的任何其他资源更新无效

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


一旦资源现在与您想要的实例匹配。继续并修改资源块的其余部分以反映未来的状态变化。

而不是通过使用
地形平面图来手动输入每个属性,我列出了terraform
aws_instance
除实例类型外所采用的属性列表,并将它们添加到lifecycle块的
忽略更改
中。您对这种方法有何看法?我没有使用
terraform plan
手动输入每个属性,而是列出了terraform
aws_instance
除实例类型外所采用的属性,并将它们添加到生命周期块的
忽略更改
中。你认为这种方法怎么样?