Ansible sudo root hop

Моя проблема:

Поскольку обычно использование пользователя root для подключения к удаленному компьютеру через ssh считается плохой практикой, я использую конкретную непривилегированную учетную запись для подключения к серверам.

Но для меня также плохая практика выполнять все действия как пользователь root. Я предпочитаю использовать прикладных пользователей, когда могу.

С помощью ansible я могу стать пользователем root и выполнять привилегированные команды с помощью директивы стать. Но есть ли способ стать любым пользователем с повышением привилегий root?

т.е. ssh с ssh-user => стать root => стать любым другим пользователем

Другие средства, которые я вижу, меня не полностью удовлетворяют:

  • станьте пользователем root, используйте модуль cmd и используйте su (которое отображает следующее устаревшее сообщение [ПРЕДУПРЕЖДЕНИЕ]: рассмотрите возможность использования «стать», «стать_методом» и «стать_пользователем» вместо запуска su):

    cmd: su -c "my_command" app_user become: True become_user: root

  • добавить разрешение sudoers моему ssh-пользователю, чтобы он стал напрямую всеми прикладными пользователями

Мне не хватает способа сделать это более аккуратно?


person E. Lemaillet    schedule 28.06.2017    source источник


Ответы (2)


Вы можете запустить свой playbook с параметром --ask-стать-pass, например:

ansible-playbook -i ../inventories/production.ini service_install.yml --ask-стать-пройти

И в вашем инвентаре, который называется production.ini, добавьте своего информационного пользователя для группы ansible:

[group1]
182.26.5.159
182.26.5.160
182.26.5.161
...
[group1:vars]
ansible_connection=ssh
ansible_user=appuser                                   # insert your app user here
ansible_ssh_pass=passuser                              # insert your pass here

Затем вы можете зашифровать файл инвентаря, чтобы сохранить свой пароль в секрете, и передать пароль для расшифровки своим ОП / командам системных администраторов.

ansible-vault encrypt ../inventories/production.in

Последняя сохраненная команда будет:

ansible-playbook -i ../inventories/production.ini service_install.yml --ask-стать-pass --ask-vault-pass

Тогда в вашей игре вам просто нужно будет выбрать опцию пользователя «стать: да», чтобы вызвать вашу задачу:

cmd: "my_command" app_user
become: yes
person s.daden    schedule 28.06.2017
comment
Спасибо за подробности, на самом деле это почти то, что я использую (я подключаюсь с помощью ключей ssh), но, как я уже сказал, использование su в командном модуле устарело, поэтому я ищу другое решение. - person E. Lemaillet; 28.06.2017
comment
Хорошо, я думаю, это хорошее решение, но это означает, что вы должны предоставить вашим пользователям ssh права на sudo для любых пользователей. Думаю, это не имеет значения ... - person E. Lemaillet; 29.06.2017

Только что отредактировал свой ответ, задача исправлена. Обычно он должен работать без команды su.

cmd: "my_command" app_user становится: да

person s.daden    schedule 28.06.2017