Timur
Или не стоит пытаться делать этим юзером то, что требует повышения прав с помощью sudo
𝕀𝕘𝕠𝕣
ансибловому юзеру нельзя ограничивать права
так я хочу дать юзеру права только на установку рпм и рестарт сервиса
Timur
Тогда никакого become делать не надо
Timur
У юзера должны быть права на это без sudo
𝕀𝕘𝕠𝕣
передавать по ссш рута или привелигерованного пользователя не хотелось бы
Timur
Рута не надо
Timur
Просто дайте права юзеру на рестарт сервиса без sudo
Timur
И уберите все become
Timur
Будет работать тогда
𝕀𝕘𝕠𝕣
а из мат части, тот синтаксис который я написал рабочий?
Timur
Если become убрать - то да
𝕀𝕘𝕠𝕣
сейчас проверю то же самое на руте
⚓️Damir
Можно сделать raw: sudo systemctl restart nginx become: yes И все должно быть ок при текущих настройках
⚓️Damir
хотелось бы по понятием с модулем)
Кажется нет внятного способа ограничить права на уровне sudoers🤷‍♂
𝕀𝕘𝕠𝕣
Кажется нет внятного способа ограничить права на уровне sudoers🤷‍♂
печаль конечно, я с ансибл не очень пока хорошо знаком, но это логично ограничвать права учётке для установки по и рестарта сервиса
Stepan T.
Кажется нет внятного способа ограничить права на уровне sudoers🤷‍♂
Есть, но способ так сказать уникальный авторский
Stepan T.
То есть костыльный
Stepan T.
Связкой FreeIPA + AWS
Stepan T.
Сколько это будет стоить по затратам времени и сил - не знаю.
Timur
хотелось бы по понятием с модулем)
Что мешает просто дать нужные права юзеру?
Stepan T.
Нужные это рут для запуска питона?
Timur
Нет, это права на перезапуск сервисов
Timur
Хоть питоном, хоть как
Stepan T.
Права на перезапуск сервисов ансиблом?
𝕀𝕘𝕠𝕣
проверил, с рутом прокатывает, проблема в правах
𝕀𝕘𝕠𝕣
Без sudo
проще тогда через комманд или шелл так понимаю
Timur
дал, через суду)
Ансиблу пофиг ваш sudo. Он копирует питоновскую прогу на хост под своим юзером. Потом запускает ее под ним же. Если есть вызов become, то переключается на рута для запуска. Если указан специальный юзер - переключается на него. И запускает всю директиву от этого юзера. Ансибл не делает просто sudo systemctl. Это не баш.
Timur
Через systemd? Policy kit?
Да, как вариант
Timur
под каким юзером он копирует свою прогу?
Под тем, которым вы подключаетесь к хосту
⚓️Damir
Да, как вариант
Настраивали когда-нибудь?
𝕀𝕘𝕠𝕣
Timur
Питоновский модуль для перезапуска сервиса никакое sudo не вызывает
Timur
Это не косяк
Timur
Это просто вы не понимаете, как работает ансибл, и хотите странного :)
Timur
Вам сказали, как можно решить проблему
𝕀𝕘𝕠𝕣
с устаноской рпм через модуль юма прокатило суду
Timur
Либо давайте соответствующие права ансибловому юзеру без sudo
Timur
Либо тому юзеру, на которого делается sudo
Stepan T.
Я буду благодарен за ссылку на объяснения как работает ансибл
Timur
А еще лучше - просто дать права ансибловому юзеру делать sudo на рута
𝕀𝕘𝕠𝕣
А еще лучше - просто дать права ансибловому юзеру делать sudo на рута
не хотелось бы передавать по сети такого юзера
Timur
Тогда сделайте другого юзера с соответствующими правами и переключайтесь с помощью become на него
Stepan T.
Погодите, ансибл работает из под пользователя, под которым подключился по ссш, с правами, соответственно, этого пользователя
Timur
так понимаю проще всего вызывать через комманд
Ну, если вам это проще, то и ансибл не нужен тогда :)
Timur
У юзера, которым вы подключаетесь, нет нужных прав
Timur
Чтобы получить нужный доступ, нужно переключиться на соответствующего юзера с нужными правами
Stepan T.
Если пользователю дать права выполнять sudo systemctl но не дать выполнять, предположим, sudo apt, то пользователь сможет управлять службами, но не сможет ставить софт модулями ансибл?
Timur
Timur
Если у пользователя есть право сделать sudo systemctl, то он просто становится рутом на время исполнения этой команды
Stepan T.
Права на запуск тех или иных программ, я это так формулирую. По сути обе команды - это программы =)
Timur
Но это работает только для этой конкретной команды
Timur
К правам на запуск питона это не относится :)
Stepan T.
Чудесно. То есть если пользователю не давать права на запуск питона из под рута, то ансибл подключающийся к хостам с учётной записью пользователя будет работать в части модулей и программ которые ограниченны теми правилами, которые расписаны в политике sudo?
Stepan T.
Написал конечно как насрал, но эти бесконечные авторизации и права доступа требуют такой вот казёнщины
Timur
Чудесно. То есть если пользователю не давать права на запуск питона из под рута, то ансибл подключающийся к хостам с учётной записью пользователя будет работать в части модулей и программ которые ограниченны теми правилами, которые расписаны в политике sudo?
Если у пользователя, под которым подключился ансибл, нет права эскалировать привилегии любым способом (не только sudo), то ансибл будет выполняться только от этого юзера с его родными правами. Политики sudo для этого юзера ансиблу параллельны
Timur
Ансибл - это не баш
𝕀𝕘𝕠𝕣
но нафига тогда асибл агитирует использовать бикам, хотя бикам тоже не сработал с этой окмандой без суду
Timur
Вы неправильно использовали become, потому что
Timur
become нужно использовать для переключения на юзера, у которого есть права на выполнение нужных действий (например, перезапуск сервиса)
Timur
А вы переключались с помощью become на своего же собственного юзера, и удивлялись, что у вас ничего не работает
𝕀𝕘𝕠𝕣
Вы неправильно использовали become, потому что
там не только бикам, там еще бикам метод, как можно неправильно использовать суду) и почему рпм в данной конфигурации с биками прокатывает суду?
Sasha
Подскажите, пожалуйста, в документации добавление нескольких ключей для пользователя выглядит так: - name: Set up multiple authorized keys authorized_key: user: deploy state: present key: '{{ item }}' with_file: - public_keys/doe-jane - public_keys/doe-john А если есть список пользователей и каждому надо несколько ключей прописать, как тогда код выглядеть будет?
Timur
Почему rpm у вас работает - я не знаю. Может, права у юзера есть соответствующие без sudo
Timur
а нет под рукой ссылки на эти подробности?
https://docs.ansible.com/ansible/2.7/user_guide/become.html
⚓️Damir
а нет под рукой ссылки на эти подробности?
Можно просто вызвать плейбук с -vvvv и увидеть команды которые выполняет ансибл
Timur
Питоновский код там не увидишь :)