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

问题描述 投票:0回答:2

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

  • 我向 Azure Vault 添加了一个秘密。
  • 我将服务主体链接到我的 Azure DevOps 管道。
  • 我创建了一个链接到我的保险库的变量组。
  • 我用一些变量创建了一个变量组。
  • 我创建了一个带有变量的 azure-pipelines.yaml: group: group1 group: group2 part
  • 我有
    - task: AzureResourceManagerTemplateDeployment@3
    带有参数的模板。我如何满足变量组的参数?
azure azure-devops azure-resource-manager
2个回答
12
投票

您可以尝试使用 overrideParameters 参数来使用变量组中定义的变量覆盖 ARM 模板的参数。在这里查看有关此任务的更多参数。

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

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

要访问 AzureKeyVault,您还可以使用 Azure Key Vault 任务 在您的构建管道中获取您的秘密,或者将 KeyVault 集成到您的 ARM 模板中,正如@Daniel Mann 指出的那样。查看这里微软官方教程


-4
投票

在一些有限的场景中,将变量组与 YAML 管道结合使用是有意义的,即如果您有一个秘密在您需要安全存储的密钥库中。

但是,有更好的方法来管理这种情况。请记住,管道变量(包括变量组)应该用于 pipeline 值,not 应用程序配置。将您的持续交付平台与您的应用程序配置紧密耦合只会让您更难在本地复制您的部署过程或在未来迁移到不同的持续交付提供商。

也就是说,这里有一些推荐的替代方案:

  1. 在您的管道中添加一个

    AzureKeyVault
    步骤,以便从密钥库中检索秘密。

  2. 将您的 ARM 模板直接链接到密钥库; ARM 模板原生支持 keyvault 参数:

    “管理员密码”:{ “参考”: { “钥匙库”:{ “id”:“/subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/” }, "secretName": "示例密码" } }

  3. 编写您的应用程序以在运行时直接从密钥库中检索秘密。

© www.soinside.com 2019 - 2024. All rights reserved.