【发布时间】: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