Использование ansible с парольной аутентификацией и разными именами пользователей
Мы находимся в состоянии поддерживать несколько серверов баз данных, которые имеют одну из двух учетных записей администратора и которые используют аутентификацию по паролю. Допустим, две учетные записи - это "db_admin" и "db_user". Пароли одинаковы для всех примеров каждого имени пользователя, но различаются между двумя именами пользователей, т. Е. Пароль для всех хостов, где имя пользователя db_admin - это "пароль1", а пароль для всех хостов, где имя пользователя - db_user, - "пароль2",
Как я могу запустить playbooks (или даже специальные команды) против всех хостов. Я могу установить ansible_ssh_user в инвентаре и использовать -k в командной строке, но это запрашивает только один раз для пароля, который поэтому будет неправильным для половины хостов. Конечно, я мог бы повторить ANSIB, каждый раз указав новую группу хостов, но я бы хотел сделать это за один проход.
В сторону: Пожалуйста, я бы предпочел аутентификацию на основе ключей - в настоящее время это не вариант. Я также хотел бы (используя, конечно, Ansible) отредактировать /etc/{passwd,shadow,group} и изменить имя пользователя, чтобы оно было одинаковым на всех хостах, но это невозможно (и может нарушить другие вещи, на которые полагается, например, "scp файл db_user@host", а не "scp db_admin@host"). В-третьих, я хотел бы вернуться назад во времени и, во-первых, предотвратить расхождение, но пока ни один из этих вариантов не подходит.
2 ответа
Определите пользователя и пароль в host_vars для каждого хоста или group_vars для группы хостов.
Вам необходимо определить соответствующие параметры, перечисленные здесь, а именно:
ansible_user
Имя пользователя ssh по умолчанию для использования.
ansible_ssh_pass
Пароль ssh для использования.
В соответствии с указаниями вы должны зашифровать значения с помощью 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
на задачи запускаются от имени администратора.
Таким образом, понятно, кто запускал игру, и вам не нужно менять общие учетные данные.