【问题标题】:Variable inside variable Azure Pipelines变量 Azure Pipelines 中的变量
【发布时间】:2020-06-09 06:32:30
【问题描述】:

我在使用 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))
...

图表:

【问题讨论】:

    标签: azure azure-devops


    【解决方案1】:

    这对我有用,请参阅最后一行以获取线索:

    variables:
      azureSubscription: 'my-subscription'
      azureKeyVault: 'my-keyvault'
      testkv: $(SERVER_ADMIN_SECRET_NAME)
    
    jobs:
    
    - job: TestKeyVault
      displayName: Key Vault access
      continueOnError: true
      steps:
      - task: AzureKeyVault@1
        inputs:
          azureSubscription: ${{ variables.azureSubscription }}
          KeyVaultName: ${{ variables.azureKeyVault }}
          SecretsFilter: ${{ variables.testkv }}
          RunAsPreJob: true
    
      - task: CmdLine@2
        inputs:
          script: 'echo $(${{ variables.testkv }}) > secret.txt'
    

    【讨论】:

      【解决方案2】:

      对于这个问题,管道中尚不支持嵌套变量的值(如$($(SERVER_ADMIN_SECRET_NAME)))。你可以参考这个case看到这一点。

      我能想到的解决方法是将Variable Toolbox 任务添加到构建步骤的顶部。

      在此任务中,您可以为变量设置嵌套变量值。

      你可以参考这个case来完成这个任务。

      【讨论】:

      • 看来这个解决方案有效,非常感谢! :)
      • 完成了这项任务:jessehouwing.jessehouwing-vsts-variable-tasks.vsts-variable-set.VariableSetTask@1
      猜你喜欢
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多