Azure ARM模板:使用变量设置参数值

时间:2020-07-22 09:41:40

标签: azure azure-pipelines azure-resource-manager

我正在尝试将环境参数传递给模板,然后传递给另一个模板(第webAppName: 'my-webapp-${{parameters.environment}}'行)

我得到错误:A template expression is not allowed in this context。不可能吗?

主管道(为清晰起见,仅提供必要的代码)

- stage: deploy
    displayName: 'Deploy Dev Stage'
    dependsOn: build
    condition: succeeded()
    jobs:
    - deployment: deploymentjob
      displayName: deployment job
      environment: dev  
      variables:         
        - template: variables/dev.yml
      strategy:
        runOnce:
   
          deploy:
            steps:
            - template: templates/pipeline-deploy/master.yml 
              parameters:              
                environment: 'dev'
               

master.yml

parameters: 
  environment: ''

  steps:
    - template: webapp.yml
      parameters:
        webAppName: 'my-webapp-${{parameters.environment}}' 
      

然后是webapp.yml

parameters: 
   webAppName: ''

steps: 
- task: AzureRmWebAppDeployment@4
  displayName: 'Deploy my app'
  inputs:
    azureSubscription: '(#some id)'
    WebAppName: ${{parameters.webAppName}}
    packageForLinux: '$(workFolder)/my-package.zip'

2 个答案:

答案 0 :(得分:1)

我认为您不允许在ARM模板参数中使用变量替换。但是您可以在变量中这样做。

因此,在master.yml中,定义一个变量部分,并将您的webAppName组成一个变量。然后将该变量传递到webapp.yml中,而不使用参数。

答案 1 :(得分:0)

问题是我的一个YAML文件出现缩进,这是不正确的。添加一个额外的标签即可解决该问题。