如何防止 Terraform 资源在计划差异中出现后被部署?

How to prevent a terraform resource from being deployed after it shows up in the planned diff?

前几天训练时我运行遇到了这种情况。

假设我和另一个人在 terraform 基础设施上工作,我们共享状态(当然)。

他创建了一个资源并更新了状态,但没有部署该资源。

之后我编写了一个重要的资源并想部署它,但我不希望其他人对 apply 所做的更改与我的资源一起应用。

什么是理想的解决方案?

我认为在这种情况下,因为只有一个状态文件并且有多个开发人员参与,所以最好使用工作区。这样两者都将获得正在部署的资源的工作会话。请注意,如果您决定采用工作区路线,则需要将默认工作区迁移到新工作区。 guide 可以提供帮助。

这是不可能的:

"He creates a resource and updates the state but doesn't deploy that said resource."

状态文件跟踪部署的内容。如果资源未部署,如何使用该资源更新状态?

What would be the ideal solution for this?

Seperate workspace?

如果你们都在处理属于同一环境的资源,那么这可能不是正确的解决方案。

Taint his resource?

污染资源会导致已部署的资源被删除并重新部署。这对您描述的情况有何帮助?

Remove his resource from the state file?

切勿直接修改状态文件。


您是否将 Terraform 模板文件(.tf 文件)与 Terraform 状态文件混淆了?


我猜你用错了一些术语,你的意思是资源是在 Terraform 模板中定义的,现在你需要部署一些新的东西而不包括其他资源。在这种情况下,您将需要使用 -target argument 来仅部署某些资源。