我使用ansible 2.4.0并尝试使用ignore_errors
,具体取决于检查模式和with_items
的组合。
根据{{3}},您可以根据ansible是否在检查模式下运行来定义ignore_errors。如果没有with_items
指令,这种方法很有效,但是对于这两个元素,始终会忽略失败。
没有with_items
的工作示例:
# test_i.yml
- name: test without array and with ignore
hosts: all
gather_facts: no
tasks:
- fail: msg="I fail, but ignored in check mode"
ignore_errors: "{{ ansible_check_mode }}"
- debug: msg="Reachable only in check mode"
不工作的例子:
# test_ai.yml
- name: test with array and with ignore
hosts: all
gather_facts: no
tasks:
- fail: msg="I am always skipped"
ignore_errors: "{{ ansible_check_mode }}"
with_items: [ 1, 2 ]
- debug: msg="Always reached"
执行with和结果:
ansible-playbook test_i.yml --check
# ok=2, failed=0, but fail-task printed in red
ansible-playbook test_i.yml
# ok=0, failed=1, canceled after fail task
ansible-playbook test_ai.yml --check
# ok=2, failed=0, but fail-task items printed in red
ansible-playbook test_ai.yml
# ok=2, failed=0, same as with check
如果删除或注释掉ignore_errors,则任务会根据需要失败,但它也会在检查模式下执行。即使将check_mode
定义为false,它也能正常工作 - 但这不会有任何意义。是吧。
我错过了什么或者这可能是个错误吗?