在循环

时间:2017-10-16 19:58:58

标签: ansible ansible-2.x

我使用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,它也能正常工作 - 但这不会有任何意义。是吧。

我错过了什么或者这可能是个错误吗?

1 个答案:

答案 0 :(得分:2)

是的,这是一个错误。我已向31831提出了问题解释。