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

Azure ARM template : Setting parameter value using a variable

我正在尝试将环境参数传递给一个模板,然后再传递给另一个模板(第 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'

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

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

问题是我的一个 YAML 文件中的缩进不正确。添加一个额外的选项卡解决了它。