将Azure DevOps变量拉入ARM模板

时间:2020-04-21 15:48:20

标签: azure azure-devops devops arm-template

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

myapi-dev-appserviceplan myapi-prod-appserviceplan

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

2 个答案:

答案 0 :(得分:0)

您可以使用token replace task(如果选择此选项,则需要在文件中定义令牌,然后在管道中定义将用于替换这些令牌的变量。您可以定义变量gorups来容纳每个环境变量,在发行版的变量之间切换),但对于您的情况,我建议您每次使用参数文件。以这种方式,您将只为部署环境更改文件。

取自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'

答案 1 :(得分:0)

与经典的构建和发布管道相比,只需抛出一种替代方法即可使用YAML Pipelines

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