如何使用AzureResourceManagerTemplateDeployment将azure-pipelines.yml变量传递给ARM模板

时间:2020-01-21 19:25:47

标签: azure azure-devops azure-resource-manager

我开始使用Azure,并尝试了以下步骤:

  • 我向Azure Vault添加了一个秘密。
  • 我将服务主体链接到我的Azure DevOps管道。
  • 我创建了一个与保管库链接的变量组。
  • 我创建了一个包含一些变量的变量组。
  • 我创建了一个azure-pipelines.yaml,其变量为:group:group1 group:group2 part
  • 我有- task: AzureResourceManagerTemplateDeployment@3,其模板带有参数。如何满足变量组中的参数?

2 个答案:

答案 0 :(得分:7)

您可以尝试使用 overrideParameters 参数执行任务,以用变量组中定义的变量覆盖ARM模板的参数。检查here以获得有关此任务的更多参数。

- task: AzureResourceManagerTemplateDeployment@3
      inputs:
        azureResourceManagerConnection: <connection>

        overrideParameters: -storageAcctName azurerg -Username $(vmusername) -azureKeyVaultName $(fabrikamFibre)

要访问AzureKeyVault,您还可以使用Azure Key Vault task在构建管道中获取秘密,或如@Daniel Mann所指出的那样将KeyVault集成到ARM模板中。查看here以获得Microsoft官方教程。

答案 1 :(得分:-1)

变量组不打算与YAML管道一起使用。在您的管道中添加一个AzureKeyVault步骤,以便从密钥库中检索秘密。

或将您的ARM模板直接链接到密钥库; ARM模板具有对keyvault参数的本地支持:

"adminPassword": {
        "reference": {
          "keyVault": {
          "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
          },
          "secretName": "ExamplePassword"
        }
      }

或者编写您的应用程序以在运行时直接从密钥库中检索机密。