Ansible 任务的可解析条件处理程序?
仅供参考,我正在“拉模式”而不是“推模式”下运行我的Ansible playbook。因此,我的节点将通过Hipchat发布其任务的结果 话虽如此,我有一个安装RPM的任务。安装成功后,节点通过Hipchat通知任务已成功运行。现在,在任务失败的情况下,我强制它通过“-force handlers”参数通知hipchat。我的问题是,有没有一种方法可以根据任务的结果调用特定的处理程序 任务 处理者Ansible 任务的可解析条件处理程序?,ansible,Ansible,仅供参考,我正在“拉模式”而不是“推模式”下运行我的Ansible playbook。因此,我的节点将通过Hipchat发布其任务的结果 话虽如此,我有一个安装RPM的任务。安装成功后,节点通过Hipchat通知任务已成功运行。现在,在任务失败的情况下,我强制它通过“-force handlers”参数通知hipchat。我的问题是,有没有一种方法可以根据任务的结果调用特定的处理程序 任务 处理者 在本例中,我使用多个处理程序。请参见以下示例: 文件site.yml 使用命令 ansible-p
在本例中,我使用多个处理程序。请参见以下示例: 文件site.yml 使用命令
ansible-playbook -c local -i "localhost," site.yml
注意:使用jinja2中添加的测试过滤器2.8
您可以在处理程序中使用“when”、“with_items”等。条件句会给你你想要的吗?从您的解释和示例代码来看,我不太确定您想要做什么……文档的这一部分可能会有所帮助:您可以忽略失败,然后根据失败还是成功来做不同的事情。
- name: announce_hipchat
local_action: hipchat
from="deployment"
token={{ hipchat_auth_token }}
room={{ hipchat_room }}
msg="[{{ ansible_hostname }}] Successfully installed RPMs!"
validate_certs="no"
- hosts: all
gather_facts: false
force_handlers: true
vars:
- cmds:
echo: hello
eccho: hello
tasks:
- name: echo
command: "{{ item.key }} {{ item.value }}"
register: command_result
with_dict: "{{ cmds }}"
changed_when: true
failed_when: false
notify:
- "hipchat"
handlers:
- name: "hipchat"
command: "/bin/true"
notify:
- "hipchat_succeeded"
- "hipchat_failed"
- name: "hipchat_succeeded"
debug:
var: "{{ item }}"
with_items: "{{ command_result.results | selectattr('rc', 'equalto', 0) | list }}"
- name: "hipchat_failed"
debug:
var: "{{ item }}"
with_items: "{{ command_result.results | rejectattr('rc', 'equalto', 0) | list }}"
ansible-playbook -c local -i "localhost," site.yml