处理程序在任务后未被调用
Handlers not getting invoked after a task
我正在尝试使用 Ansible 自动执行一些任务。在我的剧本中,我有一个复制任务,然后我更改了文件的权限。我需要服务在此任务后重新启动。我包括通知并且还声明了我的处理程序,但奇怪的是这个处理程序从未被调用。
摘自我的剧本
- name: Configure Audit Log Purge Scheduler
copy:
src: "Scheduler-Log-Purge.config"
dest: "{{ crx_dir }}install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config"
become: true
tags: aem
- name: Change Permissions of the Log Purge Scheduler config File
file:
path: "{{ crx_dir }}install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config"
owner: crx
group: crx
become: true
notify: restart aem
tags: aem
- name: Pause the execution for cq5 to come up
pause:
minutes: 5
tags: aem
这是我的处理程序文件内容。
---
- name: restart aem
service: name=cq5 state=restarted
become: yes
运行 剧本
之后的 o/p
gparasha-macOS:TLTD gparasha$ ansible-playbook -i hosts tltd.yml --tags aem -v
No config file found; using defaults
PLAY [Run tasks on Author] **************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [35.169.196.183]
PLAY [Run AEM Specific Steps on Author] *************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [35.169.196.183]
TASK [publish : Configure Audit Log Purge Scheduler] ************************************************************************************************************************************
ok: [35.169.196.183] => {"changed": false, "checksum": "3a9d00ea8357fd217a9442b1c408065abf077dfc", "failed": false, "gid": 1005, "group": "crx", "mode": "0644", "owner": "crx", "path": "/mnt/crx/author/crx-quickstart/install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config", "secontext": "user_u:object_r:usr_t:s0", "size": 277, "state": "file", "uid": 1005}
TASK [publish : Change Permissions of the Log Purge Scheduler config File] **************************************************************************************************************
ok: [35.169.196.183] => {"changed": false, "failed": false, "gid": 1005, "group": "crx", "mode": "0644", "owner": "crx", "path": "/mnt/crx/author/crx-quickstart/install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config", "secontext": "user_u:object_r:usr_t:s0", "size": 277, "state": "file", "uid": 1005}
TASK [publish : Pause the execution for cq5 to come up] *********************************************************************************************************************************
Pausing for 300 seconds
(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
Press 'C' to continue the play or 'A' to abort
fatal: [35.169.196.183]: FAILED! => {"failed": true, "msg": "user requested abort!"}
但是当我运行这个剧本时,没有调用这个服务的重启。
为什么会这样?
能不能在文件模块中不使用notify?
任何帮助将不胜感激。
您可以将 notify
附加到任何模块。
但是 Ansible 只会在任务处于更改状态时通知处理程序 – 这是为了防止在后续 playbook 运行时执行不必要的处理程序(例如服务重启)。
您的日志摘录显示 "changed": false
有关任务,因此未触发处理程序执行。
另外请记住,处理程序是在 role/playbook 的最后执行的,除非它们被明确地用 meta 刷新,因此在您的场景中,处理程序将在 之后执行 Pause the execution for cq5 to come up
任务。
我正在尝试使用 Ansible 自动执行一些任务。在我的剧本中,我有一个复制任务,然后我更改了文件的权限。我需要服务在此任务后重新启动。我包括通知并且还声明了我的处理程序,但奇怪的是这个处理程序从未被调用。
摘自我的剧本
- name: Configure Audit Log Purge Scheduler
copy:
src: "Scheduler-Log-Purge.config"
dest: "{{ crx_dir }}install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config"
become: true
tags: aem
- name: Change Permissions of the Log Purge Scheduler config File
file:
path: "{{ crx_dir }}install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config"
owner: crx
group: crx
become: true
notify: restart aem
tags: aem
- name: Pause the execution for cq5 to come up
pause:
minutes: 5
tags: aem
这是我的处理程序文件内容。
---
- name: restart aem
service: name=cq5 state=restarted
become: yes
运行 剧本
之后的 o/pgparasha-macOS:TLTD gparasha$ ansible-playbook -i hosts tltd.yml --tags aem -v
No config file found; using defaults
PLAY [Run tasks on Author] **************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [35.169.196.183]
PLAY [Run AEM Specific Steps on Author] *************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [35.169.196.183]
TASK [publish : Configure Audit Log Purge Scheduler] ************************************************************************************************************************************
ok: [35.169.196.183] => {"changed": false, "checksum": "3a9d00ea8357fd217a9442b1c408065abf077dfc", "failed": false, "gid": 1005, "group": "crx", "mode": "0644", "owner": "crx", "path": "/mnt/crx/author/crx-quickstart/install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config", "secontext": "user_u:object_r:usr_t:s0", "size": 277, "state": "file", "uid": 1005}
TASK [publish : Change Permissions of the Log Purge Scheduler config File] **************************************************************************************************************
ok: [35.169.196.183] => {"changed": false, "failed": false, "gid": 1005, "group": "crx", "mode": "0644", "owner": "crx", "path": "/mnt/crx/author/crx-quickstart/install/com.adobe.cq.audit.purge.Scheduler-LogPurge.config", "secontext": "user_u:object_r:usr_t:s0", "size": 277, "state": "file", "uid": 1005}
TASK [publish : Pause the execution for cq5 to come up] *********************************************************************************************************************************
Pausing for 300 seconds
(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
Press 'C' to continue the play or 'A' to abort
fatal: [35.169.196.183]: FAILED! => {"failed": true, "msg": "user requested abort!"}
但是当我运行这个剧本时,没有调用这个服务的重启。 为什么会这样?
能不能在文件模块中不使用notify? 任何帮助将不胜感激。
您可以将 notify
附加到任何模块。
但是 Ansible 只会在任务处于更改状态时通知处理程序 – 这是为了防止在后续 playbook 运行时执行不必要的处理程序(例如服务重启)。
您的日志摘录显示 "changed": false
有关任务,因此未触发处理程序执行。
另外请记住,处理程序是在 role/playbook 的最后执行的,除非它们被明确地用 meta 刷新,因此在您的场景中,处理程序将在 之后执行 Pause the execution for cq5 to come up
任务。