bash - Azure DevOps 检查以下 bash 脚本(yml 管道)内的 KeyVault 中是否存在密码

标签 bash azure azure-devops azure-keyvault

例如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)

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-key-vault?view=azure-devops#arguments

我能够访问密码:

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/

相关文章:

c# - 如何为 Azure AD 创建和使用刷新 token

azure - 如何从 Microsoft Azure 转出域名?

selenium - NUnit 测试不会通过 DevOps 中的 VSTest 重新启动

azure - Azure Artifacts 是否支持 PyPi?

bash - 具有文件描述符的重复 IO

xcode - 将脚本文件添加到 Xcode 存档

linux - 要求用户输入文件然后修改该文件的 Bash Shell 脚本

asp.net-mvc - Azure 中的 ASP.NET MVC 路由

conda - 如何修改 conda 'source activate' ps1 行为

azure - 取消构建时执行任务 - Azure DevOps Pipelines