【问题标题】:Terraform import of ec2_instance is in replaced mode during terraform plan在 terraform 计划期间,ec2 实例的 Terraform 导入处于替换模式
【发布时间】:2021-11-17 21:19:34
【问题描述】:

我正在尝试将现有资源映射到 terraform。我在 terraform 中映射了大部分 ec2_instances。运行 terraform plan 后,我看到所有 ec2_instances 都处于“就地更新”(这很好),除了两个处于“替换”模式的实例(不需要,因为它会删除并重新创建 2 个 ec2_instances)。在检查了这两个实例的计划后,我发现了以下消息:

      ~ user_data   = "d54655a7756575775f42548868" -> (known after apply) #forces replacement  
    
      - launch_template {# forces replacement
          - id  = "lt-0232332a4645b24" -> null
          - name = "dtt_app_server" -> null
        }

我尝试使用:

lifecycle {
   ignore_changes = [ user_data ]
}

在我的资源文件 (.tf) 中,它适用于 user_data 删除强制替换。

如何删除启动模板的强制替换?

我不想使用生命周期 ignore_changes = all 因为它会忽略所有属性。

任何建议将不胜感激。谢谢

【问题讨论】:

  • 为什么不为这两个实例分配当前的user_data 值以避免重新创建?
  • 感谢您的建议。如果我为两个实例分配 user_data 值,则只有 user_data 强制替换消息正在消失,但 launch_template {# force replacement 仍在导致实例删除并重新创建。你知道如何摆脱 plan 中的 launch_template (# force replacement) 消息吗?请告诉我。
  • 如果这两个实例是从启动模板创建的,这是否意味着它们来自自动缩放组?
  • 不,它们不是来自自动缩放组。

标签: terraform


【解决方案1】:

也许你需要import the existing launch template

例如类似:

terraform import module.mymodule.aws_launch_template.mypet lt-0232332a4645b24

那么你需要让你的代码也使用模板(见docs)。

【讨论】:

  • 嗨 mhvelplund,以上建议很有帮助...谢谢。
  • @PrakashS 如果你这么认为,那就给答案投票吧 ;)
猜你喜欢
  • 1970-01-01
  • 2021-08-29
  • 2018-06-19
  • 2020-03-10
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多