gpt4 book ai didi

ansible - 如何处理来自 ansible 角色的错误

转载 作者:行者123 更新时间:2023-12-01 13:15:31 25 4
gpt4 key购买 nike

我一直在调用具有多个角色的剧本,每个角色都代表一个测试用例。如果角色之一在执行过程中失败,我需要运行剧本而不会失败。我正在使用 ignore_errors: yes .但是,这确实忽略了错误,我需要在最后打印失败的角色的名称?是否可以 ?

- 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 }

问题:如何执行整个剧本并最终打印失败的角色?

最佳答案

一个选项是使用 Blocks 的救援部分
创建 include_role.yml

    - name: include role
block:
- include_role:
name: "{{ item_my_role }}"
rescue:
- set_fact:
failed_roles: "{{ failed_roles|default([]) + [ item_my_role ] }}"
并循环 include_tasks。不可能循环块。
      vars:
my_roles:
- CHECK_CONNECTION
- CHECK_CPU
- CHECK_MEM
tasks:
- include_tasks: include_role.yml
loop: "{{ my_roles }}"
loop_control:
loop_var: item_my_role
- debug:
var: failed_roles|default([])
使用 loop_control loop_var并创建唯一变量,例如item_my_role,避免包含的角色内部的潜在冲突。如果在包含的角色中使用该变量,则以下救援部分会将错误的项目添加到列表中。

关于ansible - 如何处理来自 ansible 角色的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55521078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com