DevOps Azure проверяют, существует ли пароль в KeyVault внутри следующего сценария bash (конвейер yml) - PullRequest
0 голосов
/ 06 ноября 2019

Например, passwordKey = dbPassword это может быть или не быть в Azure KeyVault.

Проблема в том, как я могу ссылаться на секретную переменную, используя ее имя, которое является другой переменной?

$(!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

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 06 ноября 2019

При использовании задачи AzureKeyVault значения извлекаются в виде строк. Например, если существует секрет с именем connectionString, создается переменная задачи connectionString с последним значением соответствующего секрета, извлеченным из хранилища ключей Azure. Эта переменная затем доступна в следующих задачах, таких как $ (connectionString)

https://docs.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).

...