terraform apply/plan 只刷新有什么作用?

What does terraform apply/plan refresh-only do?

所以我对 terraform plan refresh-only 给我的结果有点困惑。本质上,只有 terraform plan 它说它检测到 terraform 之外的变化(那是我)并且它试图“纠正”这些变化,遗憾的是纠正这些变化需要重新创建资源。但是,如果我在计划后添加“仅刷新”,它会删除该娱乐活动,现在表示它将更新 tfstate 以匹配我手动完成的更改。

我的理解是否正确,或者我是否遗漏了什么?

“正常”地形规划包括两个主要行为:

  1. 更新之前的状态 运行 反映在 Terraform 之外所做的任何更改。这在 Terraform 术语中称为“刷新”。
  2. 将更新后的状态与配置描述的所需状态进行比较,如果存在任何差异,则会生成一组建议的操作来更改实际远程对象以匹配所需状态。

当您创建“refresh-only”计划时,您将禁用其中的第二个,但仍会执行第一个。 Terraform 将更新状态以匹配在 Terraform 外部所做的更改,然后询问您是否要将该结果作为新的状态快照提交以用于将来的运行。通常,refresh-only 计划的 desired 结果是 Terraform 报告在 Terraform 之外没有变化,尽管 Terraform 允许您将结果作为新的状态快照提交如果您愿意,例如,如果更改从用作 data 资源的更新对象级联并且您想要保存这些新结果。

一个 refresh-only 计划阻止 Terraform 提出任何会改变实际基础设施的行动 对于该特定计划 ,但它不会避免需要处理任何未来计划的差异。如果 Terraform 提议的更改不可接受,那么要继续前进,您将需要更改配置以匹配您实际所需的状态(例如,匹配您不想替换的对象的当前状态)或更改真正的基础架构(在 Terraform 之外),因此它会匹配您的配置。