Terraform 除了某个属性外,如何忽略对ec2实例的所有更改?
我正在为已经部署的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> ] } }
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步。根据需要进行进一步调整
一旦资源现在与您想要的实例匹配。继续并修改资源块的其余部分以反映未来的状态变化。而不是通过使用
地形平面图来手动输入每个属性,我列出了terraformaws_instance
除实例类型外所采用的属性列表,并将它们添加到lifecycle块的忽略更改
中。您对这种方法有何看法?我没有使用terraform plan
手动输入每个属性,而是列出了terraformaws_instance
除实例类型外所采用的属性,并将它们添加到生命周期块的忽略更改
中。你认为这种方法怎么样?