我有一个带有以下任务和处理程序部分的剧本(只是一个片段):
tasks:
- name: 'Run legacy script and power off'
debug: msg="Preparing for reboot"
notify: Legacy sysprep
handlers:
- name: Enable Service1
service: name=service1 enabled=yes state=restarted
- name: Legacy sysprep
shell: /var/scripts/prep-reboot.sh
当我运行playbook时,我看到调用Legacy sysprep
处理程序的任务的调试消息,我看到Enable Service1
处理程序已执行,但Legacy sysprep
处理程序不是调用(它不会显示在playbook输出中,也不会在系统上运行)并且服务器不会重新启动(脚本的一部分)。
是的,我计划将prep-reboot.sh脚本迁移到Ansible playbook,但我很惊讶显然shell
模块似乎不起作用?还是我忽略了一个错误?使用-vvv
运行时不会报告任何意外情况。
在RHEL 6.8上运行的Ansible和Ansible-playbook版本2.1.1.0。
答案 0 :(得分:1)
谢谢,@ techraf你让我指出了正确的方向。我最终将changed_when: true
添加到调试行,并强制该播放注册一个更改,然后触发相应的处理程序。
这是我的实际测试手册供参考:
---
- name: Testing forced handler
hosts: testsys_only
gather_facts: True
tasks:
- name: 'Run legacy script and power off'
debug: msg="Preparing for reboot"
changed_when: true
notify: Legacy sysprep
handlers:
- name: Enable Service1
service: name=service1 enabled=yes state=restarted
- name: Legacy sysprep
shell: /var/scripts/prep-reboot.sh