我搜索了有关如何在不失败的情况下停止执行Ansible任务的示例。
一个简单的例子:
- name: check file
stat: path={{some_path}}
register: check_file_result
- name: if file exists, stop
**fail**: msg="file exists, stopping"
when: check_file_result.stat.exists
这就像停止执行一样,但失败了大量的红色文本可能阻止整个playbook运行更多任务。有没有办法停止执行,好像所有的都以“OK”结束?
注意:解决方法是简单地添加“when:check_file_result.stat.exists == false”,但这种扩展性很差。
答案 0 :(得分:18)
如果有多个任务你不想在check_file_result.stat.exists
时执行,那么我可能会将所有这些任务封装在一个单独的文件中,然后有条件include
该文件,例如
- name: check file
stat: path={{ some_path }}
register: check_file_result
- include: file_ops.yml
when: check_file_result.stat.exists
示例目录结构:
|- roles/
|- foo
|- tasks
|- main.yml
|- file_ops.yml
|- vars
|- main.yml
使用此方法是DRY: - )