在使用Azure Vault存储我的机密和使用.properties文件存储机密名称(因此它不在管道中进行硬编码)并稍后从Azure DevOps管道访问它时,我遇到了一个问题: .properties文件:
...
SERVER_ADMIN_SECRET_NAME=server-password-test
...
我正在使用模板管道,该管道读取文件并将所有key = values导出为$(property),并将相应的值导出为全局属性(##vso[task.setvariable variable=$KEY]$VAL
)。
当我调用Azure Key Vault时,它将返回密钥名称和导出变量$(server-password-test)
,以便以后使用。但是,我无法访问它,因为变量名是另一个变量$(SERVER_ADMIN_SECRET_NAME)
的值。解决方案应该在变量$($(SERVER_ADMIN_SECRET_NAME))
中使用变量,但是在Azure Pipelines中不起作用。
我的管道如下所示:
...
- template: read_properties.yml
parameters:
file: config.properties
- task: AzureKeyVault@1
inputs:
azureSubscription: 'vault-service-connection'
KeyVaultName: 'test-playground'
SecretsFilter: '$(SERVER_ADMIN_SECRET_NAME)'
# TODO : How to fix this??
- task: CmdLine@2
inputs:
script: |
echo $($(SERVER_ADMIN_SECRET_NAME))
...
答案 0 :(得分:1)
对于此问题,管道中尚不支持嵌套变量的值(如$($(SERVER_ADMIN_SECRET_NAME))
)。您可以参考此case来了解这一点。
我能想到的解决方法是将Variable Toolbox任务添加到构建步骤的顶部。
在此任务中,您可以为变量设置嵌套变量值。
您可以参考此case来完成此任务。