下面是我的角色任务,它复制了 nginx conf,然后仅当 nginx -t 的 shell 命令输出包含“语法正常”时才重新加载服务
---
# tasks file for nginx
- name: Backup and update nginx configuration file
template:
src: templates/proxy.conf.j2
dest: "{{ nginx_conf }}"
backup: true
owner: root
group: root
mode: 0644
- name: Running nginx -t to validate the config
shell: 'nginx -t'
register: command_output
become: true
notify: Reload nginx
- debug:
var: command_output.stderr_lines
handlers:
- name: Reloading nginx service only if the syntax is ok
systemd:
name: nginx.service
state: reloaded'
when: command_output.stderr | regex_search("syntax is ok")
下面是进行语法检查时的错误消息,但如果我注释掉处理程序部分,它就可以正常工作。
ERROR! conflicting action statements: debug, handlers
The error appears to be in '/home/ansible/mint-ansible/nginx/tasks/main.yaml': line 20, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- debug:
^ here
答案1
处理程序属于角色中的自己的子目录
- rolename
|- tasks
| `- main.yml
`- handlers
`- main.yml