我确实使用 Azure、Terraform、Ansible、GIT 和 Visual Studio Team Service (VSTS) 设置了基础架构即代码 (IAC) 构建管道。我还在本地计算机上设置了一个 VSTS 代理,该代理与在线 VSTS 同步。目前,该设置可以无缝运行,每当我在本地 Ubuntu 计算机上更改 Terraform 基础设施规范并将更改提交到我的 GIT 存储库时,它都会自动更新 Azure 中的 VM 定义。
问题
如上所示,我有一些应用程序变量,例如 Azure 订阅 ID、用户名、密码等,我不想将其提交到我的公共(public)存储库。因此,我将它们定义为 VSTS 中的组变量,并且需要将它们下载/同步到 terraform.tfvars 文件中的本地 Linux 代理。
请问我怎样才能做到这一点。
最佳答案
我们使用多种技术将敏感数据移出脚本。一些例子:
- 环境变量中的 Terraform 后端凭据(有关列表,请参阅 https://www.terraform.io/docs/providers/azurerm/index.html#testing)
- 使用 key_vault_secret 从 Key Vault 中提取密码、 key 和证书
- 从不同的锁定存储库中提取的
terraform.tfvars
文件中的变量;这对于接受多个输入工件的发布管道来说是微不足道的。您还可以使用一点 Powershell 即时生成此文件
只需确保管道在自行清除所有这些 secret 即可:VSTS 不会为您执行此操作。
关于git - 从在线 VSTS 进程或组变量填充本地 VSTS Linux 代理上的 terraform.tfvars 文件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738088/