首页 > 解决方案 > Azure 管道模板中的动态变量

问题描述

我正在开发一个模板来帮助简化我们对本地 IIS 服务器的部署。用户名和密码存储在 Azure Key Vault 中,但是当我在 Web 应用程序管理任务中使用它们时,我无法访问它们。我在想我只是语法错误。

为了获取 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']}}

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

标签: azureyamlazure-pipelinesazure-keyvault

解决方案


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

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

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

secret_name 是您在 Azure Key Vault 中创建的名称。

另请查看此博客中的详细示例:在管道中使用 Azure Key Vault 中的机密


推荐阅读