Мы занимаемся обслуживанием нескольких серверов баз данных, которые имеют одну из двух учетных записей администратора и используют аутентификацию по паролю. Допустим, это две учетные записи: «db_admin» и «db_user». Пароли одинаковы для всех примеров каждого имени пользователя, но разные для двух имен пользователей - т.е. пароль для всех хостов, где имя пользователя - db_admin, - «password1», а пароль для всех хостов, где имя пользователя - db_user, - «password2» .
Как я могу запускать playbook (или даже специальные команды) для всех хостов. Я могу установить ansible_ssh_user в инвентаре и использовать -k в командной строке, но это запрашивает пароль только один раз, что, следовательно, будет неправильным для половины хостов. Конечно, я мог бы повторить запуск ansible, каждый раз указывая другую группу хостов, но я бы хотел сделать это за один проход.
В сторону: пожалуйста, я бы предпочел аутентификацию на основе ключей - в настоящее время это не вариант. Я также хотел бы (используя, конечно, Ansible) отредактировать / etc / {passwd, shadow, group} и изменить имя пользователя, чтобы оно было одинаковым на всех хостах, но это невозможно (и может нарушить другие функции, на которые полагаются, например, "scp файл db_user @ host", а не "scp db_admin @ host"). В-третьих, я хотел бы вернуться в прошлое и в первую очередь предотвратить расхождение, но ни один из этих вариантов пока не доступен.
Определите пользователя и пароль в host_vars для каждого хоста или group_vars для каждой группы хостов.
Вам необходимо определить соответствующие параметры перечислено здесь, то есть:
ansible_user
Используемое имя пользователя ssh по умолчанию.
ansible_ssh_pass
Используемый пароль ssh. ** Требуется sshpass
Согласно руководству вы должны зашифровать значения с помощью Ansible Vault.
Создайте личного непривилегированного пользователя для себя или того, кто управляет этими играми. Используйте те же учетные данные, например, настройте аутентификацию для каталога или разверните ключ ssh.
Установите правила sudo, чтобы этот личный пользователь мог запускать команды как db_admin или db_user.
Устанавливать become_user
в host_vars или в инвентаре для db_admin или db_user в зависимости от ситуации. Устанавливать ansible_user
вашему личному пользователю на глобальном уровне (playbook vars или group_vars / all). Устанавливать become: True
на задачах запускаются от имени администратора.
Таким образом, ясно, кто запускал игру, и вам не нужно менять общие учетные данные.