Ответная роль не может запустить Apache через обработчик
У меня есть эта простая роль для Apache (в CentOS7):
Роли / апач / задачи / main.yml
---
- name: Add epel-release repo
yum:
name: epel-release
state: present
- name: Install Apache2
yum:
name: httpd
state: present
- name: Insert Index Page
copy:
src: index.html
dest: /var/www/html/index.html
Роли / Apache / обработчики / main.yml
---
- name: Start Apache
service: name=httpd state=started
- name: verify that the web service is running
command: systemctl status httpd
register: status_result
- name: debug
debug: var=status_result
with-role.yml - playbook того же уровня, что и каталог 'role'
---
- name: Install apache2 in CentOS 7
hosts: 1.23.4.56
become: true
roles:
- apache
Затем я запускаю playbook следующим образом:
$ ansible-playbook -u root --private-key ~/.ssh/this_key.ppk with-roles.yml -i "1.23.4.56" -vvvv
Вот хвостовая часть подробного вывода на экран:
...
...
"mode": "0644",
"owner": "root",
"path": "/var/www/html/index.html",
"size": 11,
"state": "file",
"uid": 0
}
META: ran handlers
META: ran handlers
PLAY RECAP *******************************************************************************************************************
1.23.4.56 : ok=4 changed=0 unreachable=0 failed=0
но когда я вошел в 1.23.4.56, на машине установлен httpd, но он остановлен (что означает, что обработчик не работал). Что я делаю неправильно?
2 ответа
Обработчик выполняется только тогда, когда он уведомлен.
Ответ оказывается в https://serverfault.com/questions/617548/always-trigger-handler-execution-in-ansible согласно подсказкам Рене Пийя.
В частности, мне пришлось добавить это в конец ролей /apache/tasks/main.yml
...
...
- name: Apache Starter
command: /bin/true
notify: Start Apache