У меня есть набор ролей, которые мне нужно установить с помощью ansible-galaxy.
- src: 'https://gitlab.private/role-openstack-net.git'
scm: 'git'
version: '1.0.0'
name: 'role-openstack-net'
- src: 'https://gitlab.private/role-openstack-subnet.git'
scm: 'git'
version: '1.0.0'
name: 'role-openstack-subnet'
На самом деле у меня около 20 ролей.
Все роли являются частными, поэтому, когда я запускаю:
ansible-galaxy install -f -c -r galaxy.yml
он запрашивает у меня пользователя / пароль для каждой роли, что немного беспокоит
Вручную делаю:
git config --global credential.helper store
Я ввожу свои учетные данные один раз, а затем он запоминает их навсегда
Но как мне поступить в Jenkins Job?
Я видел здесь способ поставить токен:
https://github.com/ansible/ansible/pull/34621
но это не похоже на работу.
Есть идеи ?
Ответ 1 · рейтинг 6 · Steve E.
В настоящее время нет поддержки передачи параметров учетных данных в ansible-galaxy во время выполнения.
Можно добавить учетные данные в requirements.yml, но, как правило, добавление учетных данных в код не является идеальным из-за легкости, с которой другие могут однажды воспользоваться ими.
Решение состоит в том, чтобы обновить requirements.yml во время выполнения.
Создайте токен личного доступа Gitlab, просмотрев свой профиль и обновив настройки: https://private.gitlab/profile/personal_access_tokens
Используйте диспетчер секретов по вашему выбору, чтобы установить переменную PAT_TOKEN с токеном во время выполнения.
В вашем сценарии Jenkins используйте sed для обновления requirements.yml до ansible-galaxy install
sed -i "s#https://gitlab.private/#https://oauth2:[email protected]/#g requirements.yml
Если вы использовали Gitlab-ci вместо Jenkins, можно использовать существующий токен ci:
sed -i "s#https://gitlab.private/#https://gitlab-ci-token:[email protected]/#g requirements.yml