在基于角色的剧本中使用 Ansible 的救援选项



我有一个基本上由角色组成的剧本:

- hosts: master
gather_facts: True
environment:
http_proxy: "{{ lookup('env','http_proxy') }}"
https_proxy: "{{ lookup('env','https_proxy') }}"
roles:
- { role: watchdog, status: 'disabled' }
- { role: use-my-version }
- { role: services-action, action: 'stopped', acme_services: "{{stop_services_before_install}}", become: yes }
... more roles being called ...
- { role: watchdog, status: 'enabled' }

现在,其中一个角色可能会失败,这意味着我们无法进行启用看门狗的调用。我希望即使剧本在任何时候都失败,也能启用看门狗。我看到了rescue,但那是针对block的,但那只是针对tasks的。你建议怎么做?

一个选项是向您感兴趣的角色添加一个标签:

{ role: watchdog, status: 'enabled', tags: 'enable_watchdog' }

如果第一次执行失败,则再次执行带有该标记的剧本(在执行中添加-t enable_watchdog。避免覆盖剧本执行的日志,这样您就有办法解决原始问题。

最新更新