azure - 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']}}
通过已组合的键名检索变量的正确语法是什么?
解决方案
在 IISWebAppManagementOnMachineGroup 任务中,您只需要使用$(xxx)
获取一个变量作为普通变量。
${{}}
是编译时语法。您需要首先运行 Azure Key Vault 任务以使变量在环境中生成。
若要在以下任务中使用 Azure Key Vault 机密,只需使用 $(secret_name)。
secret_name 是您在 Azure Key Vault 中创建的名称。
另请查看此博客中的详细示例:在管道中使用 Azure Key Vault 中的机密
推荐阅读
- nginx - Nginx - 在路径中使用空格设置根位置
- reactjs - 反应排序-hoc。onClick 事件
- css - CSS 动画在 safari 上不起作用,但在 chrome 上很好
- flutter - 在容器中包装文本而不在 Flutter 中使用固定宽度
- bash - shell脚本运行多个文件
- android - API 21/22 及以下的 RadioButton 中断的自定义可绘制对象
- unity3d - 如何从天空盒获取光照信息?
- php - .htaccess 中的查询字符串不返回双正斜杠
- maven - 在 intelijIdea 中运行 jmockit
- c# - 将日期从日历传递到存储过程但将日期设为 NULL