【问题标题】:Pull Azure DevOps Variable Into ARM Template将 Azure DevOps 变量拉入 ARM 模板
【发布时间】:2020-04-21 15:48:20
【问题描述】:

我正在尝试对所有部署使用 1 个 ARM 模板,所以我想我可以使用 Azure DevOps 管道变量来对资源名称进行一些字符串替换,就像这样。

myapi-dev-appserviceplan myapi-prod-appserviceplan

“dev”和“prod”是发布管道中的变量,但我不确定如何在 ARM 模板中引用它们?

【问题讨论】:

    标签: azure azure-devops devops arm-template


    【解决方案1】:

    您可以使用token replace task(如果您选择此选项,您需要在文件中定义标记,然后在管道中定义用于替换这些标记的变量。您可以定义变量组来保存每个环境的变量并在它们之间切换版本的变量),但对于您的情况,我建议在每个环境中使用参数文件。以这种方式,您将只是在部署时更改环境文件。

    取自docs

    要部署到不同的环境,创建多个参数 文件。命名参数文件时,添加一种标识其用途的方法。 例如,使用 azuredeploy.parameters-dev.json 和 azuredeploy.parameters-prod.json

    然后你可以使用AzureResourceGroupDeployment@2来选择合适的参数文件(如果下面是WebSite.parameters.json

    - task: AzureResourceGroupDeployment@2
      displayName: 'Deploy template'
      inputs:
        deploymentScope: 'Resource Group'
        ConnectedServiceName: 'demo-deploy-sp'
        subscriptionName: '01234567-89AB-CDEF-0123-4567890ABCDEF'
        action: 'Create Or Update Resource Group'
        resourceGroupName: 'demogroup'
        location: 'Central US'
        templateLocation: 'URL of the file'
        csmFileLink: '$(artifactsLocation)WebSite.json$(artifactsLocationSasToken)'
        csmParametersFileLink: '$(artifactsLocation)WebSite.parameters.json$(artifactsLocationSasToken)'
        overrideParameters: '-_artifactsLocation $(artifactsLocation) -_artifactsLocationSasToken "$(artifactsLocationSasToken)"'
        deploymentMode: 'Incremental'
    

    【讨论】:

    • 好的。所以第一部分说你怎么做。您应该使用令牌替换任务。
    【解决方案2】:

    只是放弃使用 YAML Pipelines 与经典构建和发布管道的替代方案。

    这将允许您在同一管道中构建和部署,并且可以通过在变量组、变量 YAML 文件或特定管道运行的变量中定义它们来从管道中读取变量(https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多