DazmaLab
@DazmaLab

Как перезапустить конкретные сервисы linux через Ansible?

Здравствуйте.
Раньше c дебианом не работал. Столкнулся с проблемой перезапуска сервисов.

В Ansible использую следующую структуру:
- name: Reload service teleport, in all cases
  become: yes
  become_method: sudo
  ansible.builtin.systemd:
    name: teleport
    state: restarted


Получаю ошибку:
fatal: [teleport.kgsu.ru]: FAILED! => {
    "msg": "Missing sudo password"
}

Явно не хватает прав для выполнения команды.
На Debian установил sudo, В sudoers написал правила для запуска определенных сервисов без пароля:

my_user ALL=(root) NOPASSWD: /bin/systemctl restart teleport.service
my_user ALL=(root) NOPASSWD: /bin/systemctl status teleport.service


Если выполнять перезапуск в консоли из-под юзера, то сервис перезапускается, через Ansible та же самая ошибка о недостаточности прав.
sudo service teleport restart

В переменных пароль от рута хранить не хочу.
Что можно сделать?
  • Вопрос задан
  • 702 просмотра
Решения вопроса 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Потому что Ансибл при использовании модулей не пишет в терминале systemctl restart. У него все телодвижения происходят через врапперы, запускаемые местным питоном (см.).

Кривая альтернатива - делать перезапуск не через systemd, а через shell/command. Тогда точечные правила в судоерс проканают.

Почему бы не разрешить ансибловому пользователю запускать всё подряд через sudo без пароля? Главное, его SSH-ключ храните понадёжнее и всё.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы