例如passwordKey = dbPassword
它可能位于或不位于 Azure KeyVault 中。
问题是如何使用另一个变量的名称来引用 secret 变量?
$(!passwordKey)
不起作用:(
因为 bash 任务中的 var password
变为等于字符串“$(!passwordKey)”,而不是 dbPassword
var 的值。
- task: AzureKeyVault@1
inputs:
azureSubscription: 'dev'
KeyVaultName: '$(KeyVaultName)'
SecretsFilter: '*'
- task: Bash@3
displayName: 'Bash checks if $(passwordKey) exists'
env:
password: $(!passwordKey)
inputs:
targetType: 'inline'
script: env
感谢您的帮助!
最佳答案
使用 AzureKeyVault 任务时,值将以字符串形式检索。例如,如果有一个名为 connectionString 的 secret ,则会使用从 Azure key 保管库获取的相应 secret 的最新值创建任务变量 connectionString。然后,该变量可在后续任务中使用,例如 $(connectionString)
我能够访问密码:
steps:
- bash: |
# Write your commands here
echo "Hello World"
echo " vault value - $(amgartest)"
displayName: 'Bash Script'
编辑:添加环境变量:
steps:
- bash: |
echo "Db password is -$(passwordNameKey)-"
echo "Environment variable password = $password"
displayName: 'Bash Script'
env:
password: $(passwordNameKey)
如果KeyVault中存在passwordNameKey=dbPassword
键值对,则环境变量password
将设置为passwordNameKey
的值这是dbPassword
,否则环境变量password
将为$(passwordNameKey)
。
关于bash - Azure DevOps 检查以下 bash 脚本(yml 管道)内的 KeyVault 中是否存在密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58724790/