【问题标题】:Efficient way to manage terraform state with Azure storage contianer per pipeline使用每个管道使用 Azure 存储容器管理 terraform 状态的有效方法
【发布时间】:2021-10-23 07:42:55
【问题描述】:

作为我们通过 Terraform 实施的 IaC 工作流程的一部分,对于我们为用户提供的一些公共资源,我们希望创建一个集中的远程状态存储。我们使用的是 Azure 云,因此默认选择是使用 Azure Blob 存储。我们最初考虑为每个管道创建一个存储容器并将状态存储在那里。但是还有另一种想法,即创建一个容器并为每个管道创建目录结构并将状态存储在那里。我理解 Blob 存储默认是平面文件系统。但 Azure 存储还提供了一个选项,可以使用 ADLS2 启用分层文件结构。是否有人尝试通过在 Azure 中启用分层文件系统结构来存储 terraform 状态?那是一个有效的选择吗?另外,任何人都可以建议在我的场景中推荐的方法是什么?

谢谢 廷图

【问题讨论】:

  • 分层命名空间更像是一种数据湖功能,但您可以在文件/文件夹级别管理权限。也有一些限制:docs.microsoft.com/en-us/azure/storage/blobs/…。我确实认为这取决于您要如何管理它:取决于您拥有多少状态文件,允许部署谁等。

标签: azure terraform azure-storage


【解决方案1】:

从未尝试过使用 ADLS2 的分层功能。但是由于您的要求是将状态文件保存在同一个容器中但在不同的文件夹中,您可以尝试在 backend.tf 中配置后端时指定不同的文件夹结构

terraform init backend-config "key=$somePath/<tfstate-file-name>.tfstate" 

并从不同的 backend.tfvars 文件传递​​不同的 somePath 值。

我希望这能回答你的问题!

【讨论】:

  • 我知道我们可以传递目录前缀。但我也在目录级别查看 RBAC,因此其他人不会意外访问该状态
  • 是的,您可以使用 ADLS2 访问控制模块产品。在我看来,使用 RBAC 或 ACL 会是一个更好的选择,这样您就可以根据尝试访问状态文件的用户/服务主体提供访问权限。但在这里,您必须在 Azure Active Directory 中注册用户身份。并且还必须为特定状态文件配置您希望允许或拒绝访问的不同角色。
猜你喜欢
  • 2020-03-24
  • 2022-06-24
  • 2021-10-25
  • 2021-10-23
  • 2020-05-10
  • 2017-12-17
  • 2022-01-25
  • 2016-02-22
  • 1970-01-01
相关资源
最近更新 更多