我正在使用AzureKeyVault
任务从密钥保管库中检索机密。密钥的名称是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
因此,它似乎确实解决了内部变量,但仍然失败。
我也努力完成这项工作,这对我有用:
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: ${{ parameters.azureSubscription }}
KeyVaultName: ${{ parameters.azureKeyVaultName }}
SecretsFilter: '*'
RunAsPreJob: true
- bash: |
#I can now use ${GCP_CREDS}
displayName: GCP auth
env:
GCP_CREDS: $(${{ parameters.azureKeyVaultCredentailsKey }})
尝试使用:
--account-key $(StorageAccountKey)
从"Azure 密钥保管库任务"文档:
值以字符串形式检索。例如,如果存在名为 connectionString 的机密,则会使用从 Azure 密钥保管库提取的相应机密的最新值创建任务变量 connectionString。然后,此变量在后续任务中可用。
因此,如果访问 Azure 密钥保管库中名为"StorageAccountKey"的机密,则 Azure DevOps 会从此位置创建名为"StorageAccountKey"的变量。