我开始使用 Azure 并尝试了以下步骤:
- task: AzureResourceManagerTemplateDeployment@3
带有参数的模板。我如何满足变量组的参数?您可以尝试使用 overrideParameters 参数来使用变量组中定义的变量覆盖 ARM 模板的参数。在这里查看有关此任务的更多参数。
- task: AzureResourceManagerTemplateDeployment@3
inputs:
azureResourceManagerConnection: <connection>
overrideParameters: -storageAcctName azurerg -Username $(vmusername) -azureKeyVaultName $(fabrikamFibre)
要访问 AzureKeyVault,您还可以使用 Azure Key Vault 任务 在您的构建管道中获取您的秘密,或者将 KeyVault 集成到您的 ARM 模板中,正如@Daniel Mann 指出的那样。查看这里微软官方教程
在一些有限的场景中,将变量组与 YAML 管道结合使用是有意义的,即如果您有一个秘密不在您需要安全存储的密钥库中。
但是,有更好的方法来管理这种情况。请记住,管道变量(包括变量组)应该用于 pipeline 值,not 应用程序配置。将您的持续交付平台与您的应用程序配置紧密耦合只会让您更难在本地复制您的部署过程或在未来迁移到不同的持续交付提供商。
也就是说,这里有一些推荐的替代方案:
在您的管道中添加一个
AzureKeyVault
步骤,以便从密钥库中检索秘密。
将您的 ARM 模板直接链接到密钥库; ARM 模板原生支持 keyvault 参数:
“管理员密码”:{ “参考”: { “钥匙库”:{ “id”:“/subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/” }, "secretName": "示例密码" } }
编写您的应用程序以在运行时直接从密钥库中检索秘密。