两个不同S3桶中的2个地形状态文件,相同的代码,可能吗



各位!这里需要帮助。

问题陈述-我们有一个项目,我们从TF代码创建AWS基础设施。我们通过Azure DevOps管道触发它,创建基础设施,并将状态文件存储在S3存储桶中。这太完美了。

现在,我们在本地运行一些Gradle测试来测试AWS infra,它使用相同的TF文件,状态文件进入相同的bucket。这就是我们的问题所在。

Need-我希望如果我运行本地测试,TF状态文件必须转到另一个S3存储桶。例如。Azure DevOps管道-桶A。本地Gradle AWS基础测试-Bucket B

问题-

  1. 这可能吗
  2. terraform如何根据本地或ADO调用来决定将状态文件存储在哪里

状态定义位于backend块中。假设您在backend.tf文件中有这个定义,并且Bucket B是状态源。您可以将另一个backend.tf文件(以bucket A作为状态源)存储在子文件夹中,这意味着它将不会自动读取。然后,在ADO管道中,您可以用这个文件切换状态文件(覆盖主backend.tf文件)。

我不知道两个不同bucket(可能是权限)背后的原因,但您也可以使用工作区(例如defaultado)和:

  • 只允许本地用户访问包含default工作空间的特定对象(状态文件)
  • git ADO运行程序对与ado工作区关联的特定对象(状态文件)的权限

更多信息:

  • https://developer.hashicorp.com/terraform/language/state/workspaces

最新更新