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

Необязательные роли и обработчики - не удается заставить обработчики роли работать

Мне нужно настроить Apache/mod_wsgi в Centos 6.5, чтобы мой основной файл YAML был таким:

---
- hosts: dev
  tasks:
    - name: Updates yum installed packages
      yum: name=* state=latest


- hosts: dev
  roles:
    - { role: apache }

Это должно обновить все установленные yum пакеты, а затем выполнить роль apache.

Роль apache настроена на установку Apache/mod_wsgi, установка Apache для запуска во время загрузки и перезапуск. Ниже приведено содержимое roles/apache/tasks/main.yml:

---
- name: Installs httpd and mod_wsgi
  yum: name={{ item }} state=latest
  with_items:
    - httpd
    - mod_wsgi
  notify:
    - enable httpd
    - restart httpd

И обработчики в roles/apache/handlers/main.yml:

---
- name: enable httpd
  service: name=httpd enabled=yes

- name: restart httpd
  service: name=httpd state=restarted

Обработчики, похоже, не запускаются, поскольку при выполнении playbook отображается следующий вывод:

PLAY [dev] ******************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [dev.example.com]

TASK: [Updates yum installed packages] **************************************** 
ok: [dev.example.com]

PLAY [dev] ******************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [dev.example.com]

TASK: [apache | Installs httpd and mod_wsgi] ********************************** 
ok: [dev.example.com] => (item=httpd,mod_wsgi)

PLAY RECAP ******************************************************************** 
dev.example.com            : ok=4    changed=0    unreachable=0    failed=0 

И когда я vagrant ssh в виртуальную машину, sudo service httpd status показывает, что httpd остановлен, а sudo chkconfig --list показывает, что он не был включен для запуска init.

Я только начинаю с Ansible, так что есть что-то очевидное, чего я не могу потерять?

4b9b3361

Ответ 1

Хорошо, чтобы ответить на мой собственный вопрос, я понял, что есть тонкая точка, которую я пропустил:

http://docs.ansible.com/playbooks_intro.html#handlers-running-operations-on-change

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