从我所知道的来看,只有在任务级别上才能进行error handling,这对于我所希望能够做到的事情来说是不够的。
具体来说,我的用例是一个普通的部署,所以我需要做的是:
除了我希望的error handling方法之外,所有这一切都很好,很花哨。
- include: deploy.yml ignore_errors: yes register: deploy - include: rollback.yml when: deploy | failed
……不。
现在,我可以理解为什么包含任务只是testing是否可以包含文件,而不是包含的文件是否可以运行完成。 我已经用这个和平了。
不幸的是,这让我陷入了一片腌制。 每个操作的自动错误检查,结合高级操作库,是我使用完全的理由。 但是,在没有成熟的恢复机制的情况下,失败的通知不再有用。
任何人都有(理智的)解决方法? 我可以添加一个处理程序, include每个单一的任务,并试图使其工作,但…真的吗? 这不可能是解决办法 – 或者说,我不能继续对人类有信心, 并允许这是一个解决办法。
http://www.ansible.com/blog/ansible-2.0-launch
块将exception处理的概念引入到了剧本中,并且是以Python(和许多其他语言)的try / except / finally结构为模型的。 这简化了剧本和任务的开发,任务失败可以比以前更简单地在单个剧本中捕捉和处理。