You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不存入源代码仓库的前提下存储Terraform变量值的最佳方法

Terraform 变量存储方案(适配 GitHub+Azure DevOps 流水线场景)

针对你提出的「代码存GitHub、不提交变量明文、可被Azure DevOps流水线正常读取」的需求,以下是可落地的存储方案:

本地开发阶段的变量存储

  • 本地忽略型变量文件:在项目根目录创建terraform.tfvars或后缀为.auto.tfvars的文件,把这类文件规则加入.gitignore,确保永远不会提交到GitHub。本地调试用的非敏感变量、临时测试用的敏感值都可以存在这里。
  • 环境变量:Terraform原生支持读取前缀为TF_VAR_的系统环境变量,比如要传入azure_subscription_id,只需在本地配置名为TF_VAR_azure_subscription_id的环境变量即可,不需要存放到任何项目文件中,完全不会有泄露风险。

Azure DevOps 流水线生产级存储方案

这是你核心需要的正式环境方案,推荐按优先级选择:

1. Azure DevOps 内置变量组

这是最便捷的适配方案,操作逻辑如下:

  • 进入Azure DevOps项目的「管道」-「库」页面,新建变量组,把所有需要的Terraform变量(包括你提到的Azure订阅ID、服务主体密钥、租户ID等)都存在变量组中,敏感值勾选「保持机密」,存储后不会明文展示,流水线日志打印时也会自动替换为***。
  • 编写流水线YAML时直接引用该变量组,执行Terraform命令时直接传入变量即可,示例命令如下:
terraform plan -var "azure_subscription_id=$(azure_subscription_id)" -var "tenant_id=$(tenant_id)"
  • 支持按环境隔离变量组,比如开发、测试、生产环境各对应一个变量组,流水线执行时按需拉取,全程不需要把变量值提交到GitHub代码库。

2. Azure Key Vault 集成

如果你的变量都是高敏感的凭证,推荐使用这个更高安全等级的方案:

  • 把所有变量(包括普通变量和敏感凭证)都存到Azure Key Vault中,配置访问策略限制只有Azure DevOps的服务连接有权限读取。
  • 流水线执行时先拉取Key Vault中的所有变量值,再传递给Terraform执行,支持密钥自动轮转,适合企业级安全管控场景。

3. 流水线运行时手动输入

如果是临时使用、不固定的变量,可以在流水线YAML的variables块中配置为运行时可覆盖,执行流水线时手动输入变量值,适合临时变更场景。

注意事项

  • 必须在.gitignore中添加*.tfvars、*.auto.tfvars的忽略规则,避免误提交变量文件到GitHub。
  • 不要在Terraform代码、流水线日志中打印明文敏感值,避免泄露。

内容的提问来源于stack exchange,提问作者Richard Wolford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:09