编写和调试Ansible剧本时,典型的工作流如下:
ansible-playbook ./main.yaml
理想情况下,我希望继续执行失败的任务,有库存和以前的任务收集的所有事实。有可能吗?如何使剧本的编写/调试更快?
发布于 2015-04-28 06:11:06
看看执行用于故障排除的剧本。如果您想在特定任务中开始执行您的剧本,可以使用--start-at-task
选项来执行:
ansible-playbook playbook.yml --start-at-task="install packages"
以上内容将开始在一个名为“install”的任务中执行您的剧本。
或者,看一下前面的答案如何在“ansible剧本”中只运行一个任务?
最后,当一出戏失败时,它通常会给你一些大致如下的内容:
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/user/site.retry
使用该--limit
命令,它应该从失败的任务重试。
发布于 2017-08-04 11:47:43
未来读者:
在这种情况下,--limit @/home/user/site.retry
不会有帮助,.retry
只存储失败的主机,而不存储更多的内容,因此将只对失败的主机执行所有任务。
如果您使用的是最新版本(Ansible 2.x),则--start-at-task
不适用于在roles
中定义的任务。
您只需使用--step
标志(例如:ansible-playbook playbook.yml --step
)就可以达到类似的效果。该步骤在执行每个任务之前要求您继续执行,您可以选择(N)o/(y)es/(c)ontinue
。
使用这种方法,您可以在需要时选择性地执行任务,并且在修复之后,从失败点继续执行任务。
发布于 2018-12-05 22:02:31
未来读者:
从Anble2.4.2.0开始,--start-at-task
适用于我创建的角色中定义的任务。
不可容忍的球队不愿意解决这个问题,他们建议你保持你的角色幂等,并重播整个剧本,我没有时间这样做。在我的角色中,我没有使用@JeremyWhiting这样的大量事实,所以对我来说,我可以使用这个--start-at-task
特性。
然而,这仍然是一项手动任务,因此我编写了一些ansible rpm,并添加了一个“简历”功能,遵循以下基本步骤:
ansible团队不愿意创建这个基本的(并且非常有用)特性,所以唯一的选择就是通过一些bash脚本将它合并在一起。
https://stackoverflow.com/questions/29900096
复制相似问题