我是ansible的新手,我有一个场景,我的ansible脚本应该完全执行,即使发生了一些条件故障。在执行结束时,我想检查有多少条件失败了,因为失败了计数。
PLAY RECAP **********************************************************************************************************************************************************************************************
10.0.*.*** : ok=0 changed= unreachable=0 failed=0 skipped=0 rescued=0 ignored=0以下是我尝试过的:
我正在运行一部名为“角色”的游戏。
- name: Checking access
hosts: cluster
tasks:
- name: role call
include_role:
name: url_access如果一个条件在剧本中失败,它应该继续执行,但是最后,失败的计数应该显示失败的数量。
角色的main.yml如下:
- name: Access to google.com
shell: >
curl -s -o /dev/null -w "%{http_code}" google.com
ignore_errors: yes
register: access1
- debug:
msg: "Access Failed to google.com"
when: access1.stdout!="200"
- debug:
msg: "Access Successful to google.com"
when: access1.stdout=="200"
- name: Access to redhat.com
shell: >
curl -s -o /dev/null -w "%{http_code}" redhat.com
ignore_errors: yes
register: access2
- debug:
msg: "Access Failed to redhat.com"
when: access2.stdout!="301"
- debug:
msg: "Access Successful to redhat.com"
when: access2.stdout=="301"这是我得到的输出
TASK [url_access : Access to google.com] ************************************************************************************************************************************************
changed: [10.0.*.***]
changed: [10.0.*.***]
TASK [url_access : debug] *******************************************************************************************************************************************************************************
skipping: [10.0.*.***]
skipping: [10.0.*.***]
TASK [url_access : debug] *******************************************************************************************************************************************************************************
ok: [10.0.*.***] => {
"msg": "Access Successful to google.com"
}
ok: [10.0.*.***] => {
"msg": "Access Successful to google.com"
}
TASK [url_access : Access to redhat.com] ************************************************************************************************************************************************
changed: [10.0.*.***]
changed: [10.0.*.***]
TASK [url_access : debug] *******************************************************************************************************************************************************************************
ok: [10.0.*.***] => {
"msg": "Access Failed to redhat.com"
}
ok: [10.0.*.***] => {
"msg": "Access Failed to redhat.com"
}
TASK [url_access : debug] *******************************************************************************************************************************************************************************
skipping: [10.0.*.***]
skipping: [10.0.*.***]
PLAY RECAP **********************************************************************************************************************************************************************************************
10.0.*.*** : ok=2 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
10.0.*.*** : ok=2 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0我使用了“ignore_errors:是的”,所以我的剧本将被完全执行,但最终,跳过了计数,而我希望失败计数。
有没有办法让我的脚本完全执行,跳过失败,但最终我得到了失败计数而不是跳过的
发布于 2020-07-13 13:48:09
问:“有没有办法让我的脚本完全执行,跳过失败,但最终,我得到失败计数而不是跳过?”
答:使用区块,计算救援部分的错误数量。例如
shell> cat playbook.yml
- hosts: localhost
tasks:
- block:
- command: /bin/true
rescue:
- set_fact:
errs: "{{ errs|default(0)|int + 1 }}"
- block:
- command: /bin/false
rescue:
- set_fact:
errs: "{{ errs|default(0)|int + 1 }}"
- block:
- command: /bin/false
rescue:
- set_fact:
errs: "{{ errs|default(0)|int + 1 }}"
- debug:
var: errs|default(0)|int给出
errs|default(0)|int: '2'https://stackoverflow.com/questions/62875688
复制相似问题