Terraform 资源级别的地形锁状态?

Terraform 资源级别的地形锁状态?,terraform,Terraform,我有一个tf文件,其中包含多个资源/模块,并且在s3中都使用一个远程状态文件 我经常以tf文件中的特定模块为目标 如果我有锁定设置,这是否意味着两个人不能同时进行更改,即使他们针对不同的模块 据我所知,Terraform似乎锁定了整个州文件。它支持资源级锁定吗?文档在这一点上我似乎并不清楚。你说得对,Terraform确实会锁定整个州文件,而不管你的目标是什么资源 此实现背后的思想是,资源之间可能存在引用。更准确地说,最初涉及一个资源(创建/更新/销毁)的事件可能会导致创建/更新/销毁其他资源。

我有一个tf文件,其中包含多个资源/模块,并且在s3中都使用一个远程状态文件

我经常以tf文件中的特定模块为目标

如果我有锁定设置,这是否意味着两个人不能同时进行更改,即使他们针对不同的模块


据我所知,Terraform似乎锁定了整个州文件。它支持资源级锁定吗?文档在这一点上我似乎并不清楚。

你说得对,Terraform确实会锁定整个州文件,而不管你的目标是什么资源

此实现背后的思想是,资源之间可能存在引用。更准确地说,最初涉及一个资源(创建/更新/销毁)的事件可能会导致创建/更新/销毁其他资源。因此,即使是
apply-target=resource\u one.ref\u name
也可能导致其他资源的更改。所有这些都应该在
地形平面图中显示

所有状态操作(包括锁定)都是在(S3、consor、TFE等)级别上实现的,它们之间的公共接口没有那么灵活,因为公共分母基本上是JSON(状态文件)的blob

如果您有两个或更多独立的基础设施部分,那么我建议您将它们拆分为不同的目录或目录。您可以在分割配置文件后利用它进行迁移

还可以使用引用从这些部件中暴露的任何输出

出于以下几个原因,我不建议在单个状态文件中管理基础架构的独立部分:

  • 它的伸缩性不太好。随着您开始添加更多资源,由于terraform必须检查每个资源的当前状态,完成
    地形规划
    应用
    所需的时间将增加
  • 所有关键地形命令的爆炸半径都比必要的要宽,这使得人为错误更加可怕。e、 g.事故
    地形破坏
    将摧毁一切,而不仅仅是你的基础设施的一部分

-target
标志用于特殊情况,而不是常规操作,正如。

您在运行Terraform操作时锁定整个状态文件是正确的,但我必须问,为什么您这样做,而不是将资源拆分到单独的文件夹中?我几乎可以理解偶尔想要应用一个特定的资源(虽然这是一个坏习惯),但是你应该觉得应用整个文件夹很舒服,或者你应该拆分它。