
Например, если Bash Shell находится в контейнере Docker, запущенном на Gitlab, как мне получить пароль для передачи?
Когда я вхожу в систему с помощью этого:
$ vault login -method=ldap username=myusername
Он запрашивает у меня пароль.
Как сделать так, чтобы запрос не останавливался и пароль передавался в качестве переменной?
Я планирую использовать переменные Gitlab для передачи своего пароля.
решение1
Вам следует рассмотреть возможность использования JWT (JSON Web Token)взаимная аутентификациямежду Gitlab и Vault. Таким образом, нет необходимости сохранять какие-либо пароли где-либо (включая переменные), то есть вы сначала получаете временный токен Vault через JWT Auth, например так:
export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=builder jwt=$CI_JOB_JWT)"
И тогда вы сможете получить доступ к необходимым секретам, например:
export VCENTER_USER="$(vault kv get -field=username /kv/builder/vcenter-auth)"
export VCENTER_PASSWORD="$(vault kv get -field=password /kv/builder/vcenter-auth)"
А когда закончите, вы можете отозвать этот временный токен следующим образом:
vault token revoke -self
решение2
Поскольку автор явно запросил метод userpass, я предлагаю в качестве ответа сделать это следующим образом:
vault login -method=userpass username=myusername password=$userpass
где $userpass — ваша переменная gitlab.
Согласно официальной справке утилиты CLI, vault auth help userpass
в ней нет опции, с которой вы, возможно, знакомы по другим инструментам, например:echo $password | docker login ghcr.io -u myusername --password-stdin