各位!这里需要帮助。
问题陈述-我们有一个项目,我们从TF代码创建AWS基础设施。我们通过Azure DevOps管道触发它,创建基础设施,并将状态文件存储在S3存储桶中。这太完美了。
现在,我们在本地运行一些Gradle测试来测试AWS infra,它使用相同的TF文件,状态文件进入相同的bucket。这就是我们的问题所在。
Need-我希望如果我运行本地测试,TF状态文件必须转到另一个S3存储桶。例如。Azure DevOps管道-桶A。本地Gradle AWS基础测试-Bucket B
问题-
- 这可能吗
- terraform如何根据本地或ADO调用来决定将状态文件存储在哪里
状态定义位于backend
块中。假设您在backend.tf
文件中有这个定义,并且Bucket B是状态源。您可以将另一个backend.tf
文件(以bucket A作为状态源)存储在子文件夹中,这意味着它将不会自动读取。然后,在ADO管道中,您可以用这个文件切换状态文件(覆盖主backend.tf
文件)。
我不知道两个不同bucket(可能是权限)背后的原因,但您也可以使用工作区(例如default
和ado
)和:
- 只允许本地用户访问包含
default
工作空间的特定对象(状态文件) - git ADO运行程序对与
ado
工作区关联的特定对象(状态文件)的权限
更多信息:
- https://developer.hashicorp.com/terraform/language/state/workspaces