我有一个大型复杂的Ansible配置设置,> 100个角色,> 30个库存组等...这是按照推荐的方式组织的:顶级剧本,/roles
文件夹,/group_vars
文件夹等......
有时这会在中途失败,我想使用--start-at-task
命令行开关从失败的地方重新启动它。
但是,我有几个始终需要运行的任务。这些动态地将主机添加到库存中,设置稍后需要的变量等等......
有没有办法强制执行任务始终运行 - 或者始终的角色应用,即使使用--start-at-task
?
我知道always
代码,但我认为这只会在使用--tag
过滤任务时运行,而不是--start-at-task
- 除非有人知道不同?
或者,是否有其他方法来构建可以避免--start-at-task
的问题的事情?
答案 0 :(得分:3)
不幸的是,这是不可能的。
目前你要么必须使用标签,要么咬住子弹,依靠幂等性,让所有任务重新运行。
有PRs和discussions添加了这样的功能,但它们从未进入正式的Ansible版本。
还有一个open issue要求此功能,并提出一个建议,always_run
应该在与--start-at-task
一起使用时启用运行任务,但讨论也消失了更多比一年前。
答案 1 :(得分:1)
techraf
提到的问题的结论是,最好的方法是实施自定义策略:https://github.com/ansible/ansible/issues/12565#issuecomment-834517997
一个已经实现了 there(但我还没有让它与 ansible-test
一起工作)
无论如何,这是实施可行解决方案的良好开端,也是唯一可行的方法,因为 Ansible 开发人员不会修补 --start-at-task