Azure管道模板中的动态变量

时间:2020-05-05 16:12:11

标签: azure yaml azure-pipelines azure-keyvault

我正在研究一个模板,以帮助简化我们到本地IIS服务器的部署。用户名和密码存储在Azure密钥保管库中,但是当我在Web App管理任务中使用它们时,无法访问它们。我想我只是语法错误。

要在Azure Key Vault中获取密钥,我正在使用以下任务。这样做的原因是找到了密钥,并且没有给我错误。

- task: AzureKeyVault@1
  inputs:
    azureSubscription : '_MyServiceConnectionHere_'
    KeyVaultName : '_MyVaultNameHere_'
    SecretsFilter : '${{ parameters.websiteName }}-AppPoolUsername,${{ parameters.websiteName }}-AppPoolPassword'

这就是我在IIS Web App管理任务中使用它们的方式。 (我在相关部分中缩写了以下内容。)

- task: IISWebAppManagementOnMachineGroup@0
  displayName: Update Website and App Pool
  inputs:
    AppPoolNameForWebsite: ${{ parameters.websiteName }}
    DotNetVersionForWebsite: 'No Managed Code'
    AppPoolIdentityForWebsite: 'specificUser'
    AppPoolUsernameForWebsite: ${{variables['${{parameters.websiteName}}-AppPoolUsername']}}
    AppPoolPasswordForWebsite: ${{variables['${{parameters.websiteName}}-AppPoolPassword']}}
    AppPoolName: ${{ parameters.websiteName }}

此处,用户名和密码无法解析。如您所见,我正在尝试使用以下语法检索它们:

${{variables['${{parameters.websiteName}}-AppPoolUsername']}}

通过已组成的键名检索变量的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

在IISWebAppManagementOnMachineGroup任务中,您只需要使用$(xxx)即可将变量作为普通变量获取。

${{}}是编译时语法。您需要首先运行Azure Key Vault任务以使变量在环境中生成。

要在以下任务中使用Azure Key Vault机密,只需使用$(secret_name)。

secret_name是您在Azure Key Vault中创建的一个。

也请查看此博客中的详细示例:Using secrets from Azure Key Vault in a pipeline