gpt4 book ai didi

Ansible:使用 ignore_errors 时失败任务的播放回顾中的增量计数

转载 作者:行者123 更新时间:2023-12-05 07:35:01 25 4
gpt4 key购买 nike

我不仅尝试将 ansible 用作配置工具,而且还尝试能够轻松地跨一系列服务器执行大量验证检查。

因此,我在剧本的开头抓取了一堆不同的信息,然后对它们进行检查。

鉴于这些是验证检查而不是配置,我希望我的所有失败一次,而不是一次失败,剧本失败,必须解决它然后再次运行它,一遍又一遍地找到我的多个失败。

我可以通过在其中放置一个 ignore_errors 标志来继续运行剧本,但它不会增加剧本末尾的“失败”计数,我宁愿用户不必向上滚动所有输出以查找红色文本,或抓取日志以查看是否有错误,尤其是看到末尾有一个计数器作为完美的一目了然的引用。

我在 Ubuntu 版本 14.04 上使用版本 Ansible 2.4.2.0

这是我的剧本:

- name: Validates Preship configuration
hosts:
- active
- dr
become_user: root
become: true
become_method: su
roles:
- preShipValidation
ignore_errors: yes

然后在将任务导入 main.yml 文件并运行一个单独的任务来填充我的 host_vars 之后,我运行以下任务:

- name: BIOS Version Check for Equus or Seneca 2000/2100
assert:
that:
- '"2.0a" in dmidecode_bios_ver.stdout'
when: '"2000" in appliance_model and
"X10DRW" in motherboard_model'

运行时会得到以下输出(经过编辑以便于阅读)

TASK [preShipValidation : BIOS Version Check for Equus or Seneca 2000/2100] ******************************************************************************************************************
skipping: [server1] => {"changed": false, "skip_reason": "Conditional result was False"}
skipping: [server2] => {"changed": false, "skip_reason": "Conditional result was False"}
fatal: [server3]: FAILED! => {
"assertion": "\"2.0a\" in dmidecode_bios_ver.stdout",
"changed": false,
"evaluated_to": false
}
...ignoring
ok: [server4] => {
"changed": false,
"msg": "All assertions passed"
}

PLAY RECAP ***********************************************************************************************************************************************************************************
server1 : ok=11 changed=4 unreachable=0 failed=0
server2 : ok=12 changed=4 unreachable=0 failed=0
server3 : ok=10 changed=4 unreachable=0 failed=0
server4 : ok=11 changed=4 unreachable=0 failed=0

关于如何获取失败计数以显示它忽略的错误的任何想法?

最佳答案

在您忽略的每个任务中,使用 register 标记将输出保存到一个变量,并创建一个额外的任务,如果注册变量的失败选项为 True,则将变量递增 1。

例如:

- name: Yum update
yum:
name: "*"
state: latest
register: result
ignore_errors: True

- name: Increment variable
set_fact: failed_count={{ failed_count | int + 1 }}
when: result.failed

请注意,此 failed_count 变量应在 playbook 开头初始化为 0。

关于Ansible:使用 ignore_errors 时失败任务的播放回顾中的增量计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49805434/

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