Я пытаюсь найти самый чистый и / или самый безопасный способ управления средой с несколькими серверами (Linux) в AWX / Tower / Ansible.
Я видел несколько сообщений по этой теме, но, похоже, нет четкого ответа о том, какой подход является наиболее безопасным.
Допустим, я хочу использовать единый шаблон / playbook для 20 различных серверов Linux, все с разными пользователями и паролями / паролями sudo.
Я могу придумать несколько вариантов;
Выделенный "доступный" пользователь, созданный на каждом хосте, с сервером AWX или локальный сервер с информацией о закрытом ключе. Я думаю, что в большинстве случаев это будет нормально, однако при попытке выполнить операции, требующие root, возникнут проблемы с паролями sudo, если только у «доступного» пользователя один и тот же пароль на каждом сервере. Можно настроить доступ к sudo NOPASSWD, но это кажется неправильным.
Сохраните текущую ситуацию с разными комбинациями пользователя и пароля для каждого хоста, но потенциально укажите учетные данные в зашифрованном (хранилище) файле vars.
] Имейте отдельный шаблон для каждого хоста, каждый из которых имеет правильный набор учетных данных для этого хоста. Это также кажется немного неправильным и очень громоздким / сложным в обслуживании.
Пожалуйста, позвольте мне, упускаю ли я что-то очевидное.
Я реализовал это, имея закрытый ключ для пользователя ansible
для входа в систему и указав специфичный для системы ansible_become_pass
в host_vars/< хост>/vault.yml
. Пользователь
ansible
естественно принадлежит к группе sudo
.
Таким образом, обеспечивается безопасность ключа SSH для самой учетной записи пользователя и уникальный пароль для каждого хоста, сгенерированный Ansible при первой инициализации системы.
Дополнительно можно отключить аутентификацию по паролю для пользователя ansible
.