我一直在呼叫具有多个角色的剧本,每个角色都表示一个TESTCASE。如果角色之一在执行过程中失败,则我需要运行剧本而不使其失败。我正在为此使用ignore_errors: yes
。但是,这确实忽略了错误,我需要在最后打印失败的ROLES的名称?有可能吗?
- hosts: WEB
gather_facts: no
vars:
roles:
- { role: CHECK_CONNECTION, ignore_errors: yes, tags: always }
- { role: CHECK_CPU,ignore_errors: yes, tags: always }
- { role: CHECK_MEM,ignore_errors: yes, tags: always }
问题:如何执行整个剧本,最后打印失败的角色?
答案 0 :(得分:1)
一种选择是使用Blocks
的 rescue 部分创建 include_role.yml
- name: include role
block:
- include_role:
name: "{{ item }}"
rescue:
- set_fact:
failed_roles: "{{ failed_roles|default([]) + [ item ] }}"
并循环 include_tasks 。无法循环块。
vars:
my_roles:
- CHECK_CONNECTION
- CHECK_CPU
- CHECK_MEM
tasks:
- include_tasks: include_role.yml
loop: "{{ my_roles }}"
- debug:
var: failed_roles|default([])