6 ansible
我正在为 Ansible 角色编写一个处理程序来停止和启动 Docker。停止在handlers/main.yml中写如下
- name: stop docker
block:
- name: stop docker (Debian based)
block:
- name: stop service docker on debian, if running
systemd: name=docker state=stopped
- name: stop service docker.socket on debian, if running
systemd: name=docker.socket state=stopped
when: ansible_pkg_mgr == "apt"
- name: stop docker (CentOS based)
block:
- name: stop service docker on CentOS, if running
service:
name: docker
state: stopped
- name: stop service docker.socket on CentOS, if running
service:
name: docker
state: stopped
when: ansible_pkg_mgr == "yum"
Run Code Online (Sandbox Code Playgroud)
然后在我的任务/主文件中,我调用 stop docker
---
- name: test
command: echo "Stopping docker"
notify:
- stop docker
Run Code Online (Sandbox Code Playgroud)
我收到的错误是ERROR! Unexpected Exception, this is probably a bug: 'Block' object has no attribute 'notified_hosts'
如果我将其作为剧本中的任务运行,它就可以工作。
block有没有办法在 Ansible 处理程序中使用?
根据您的错误消息,Ansible 似乎不block提供handlers.
相反,你可以使用其他方法
handlers:
- name: Stop Docker
include_tasks: tasks/stop_docker.yaml
Run Code Online (Sandbox Code Playgroud)
并将逻辑放入单独的任务文件中。
更多信息
| 归档时间: |
|
| 查看次数: |
5188 次 |
| 最近记录: |