使用存储在Azure Pipelines中另一个变量中的变量名

时间:2019-12-19 11:00:33

标签: azure-devops azure-pipelines azure-pipelines-tasks

我正在使用AzureKeyVault任务从Key Vault中检索秘密。机密的名称为StorageAccountKey。此名称存储在变量KeyName中。我就是这样

- task: AzureKeyVault@1
  displayName: 'Get key'
  name: GetKey
  inputs:
    azureSubscription: '${{ parameters.azureSubscription }}'
    KeyVaultName: '$(KeyVaultName)'
    SecretsFilter: '$(KeyName)'

现在,在后续任务中,我想访问该秘密。 假设秘密名称本身存储在变量中,我该怎么做?以下似乎不起作用

- task: Bash@3
  displayName: Create container
  inputs:
    targetType: 'inline'
    script: |
      az storage container create \
          --name raw \
          --account-name storageaccountname \
          --account-key $($(dataLakeAccountKeyKeyName))
    failOnStderr: true

我遇到错误

/mnt/azp/azp-linux1_5/_temp/6719378a-b3ee-45d8-aad8-4f6a5e8b581e.sh: line 1: StorageAccountKey: command not found
ERROR: az storage container create: error: argument --account-key: expected one argument

因此,它似乎可以解析内部变量,但仍然失败。

1 个答案:

答案 0 :(得分:0)

尝试使用--account-key $ {StorageAccountKey)

来自“ Azure Key Vault任务”文档。

“值将作为字符串检索。例如,如果存在一个名为connectionString的机密,则会使用从Azure密钥保管库获取的相应机密的最新值创建任务变量connectionString。然后,此变量可用于后续任务。 “

因此,如果您访问在天蓝色的密钥保管库“ StorageAccountKey”中命名的机密,则Azure DevOps从该位置变量创建“ StorageAccountKey”。

我从未使用过Azure Key Vault,但希望它能对您有所帮助:)