Подтвердить что ты не робот

Не удалось перезапустить перезапуск службы

У меня возникли проблемы с перезапуском SSH-демона с помощью Ansible.

Я использую новейшее программное обеспечение от 11 мая 2015 г. (Ansible 1.9.1/Vagrant 1.7.2/VirtualBox 4.3.26/Host: OS X 10.10.1/Гость: убунту /trusty 64)

tl; dr: похоже, что-то не так с тем, как я вызываю синтаксис службы.

Проблема с исходным случаем использования (обработчик)

Playbook

- hosts: all
- remote_user: vagrant
- tasks:

  ...

  - name: Forbid SSH root login
    sudo: yes
    lineinfile: dest=/etc/ssh/sshd_config regexp="^PermitRootLogin" line="permitRootLogin no" state=present
    notify:
      - restart ssh

  ...

- handlers:
  - name: restart ssh
    sudo: yes
    service: name=ssh state=restarted

Выход

NOTIFIED: [restart ssh] 

failed: [default] => {"failed": true}

FATAL: all hosts have already failed -- aborting

Обработчик nginx успешно завершил работу с почти идентичным синтаксисом.

Задача также сбой

Playbook

- name: Restart SSH server
  sudo: yes
  service: name=ssh state=restarted

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

Специальная команда также не работает

Shell

> ansible all -i ansible_inventory -u vagrant -k -m service -a "name=ssh state=restarted"

Инвентаризация

127.0.0.1:8022

Выход

127.0.0.1 | FAILED >> {
    "failed": true,
    "msg": ""
}

Команда командной строки в поле работает

Когда я вхожу в SSH и запускаю обычную команду, все работает нормально.

> vagrant ssh
> sudo service ssh restart
ssh stop/waiting
ssh start/running, process 7899
> echo $?
0

Командная задача также работает

Выход

TASK: [Restart SSH server] ****************************************************
changed: [default] => {"changed": true, "cmd": ["service", "ssh", "restart"], "delta": "0:00:00.060220", "end": "2015-05-11 07:59:25.310183", "rc": 0, "start": "2015-05-11 07:59:25.249963", "stderr": "", "stdout": "ssh stop/waiting\nssh start/running, process 8553", "warnings": ["Consider using service module rather than running service"]}

Как мы видим в предупреждении, мы должны использовать сервисный модуль, но я до сих пор не уверен, где это зацепка.

4b9b3361

Ответ 1

Как указано выше, это проблема Ansible, которая, по-видимому, будет исправлена ​​в версии 2.0.

Я только что изменил обработчик, чтобы использовать модуль command и переехал:

- name: restart sshd
  command: service ssh restart