如何从失败的地方继续执行剧本?

时间:2019-01-10 07:17:11

标签: ansible angular6

我正在运行一个用于部署节点的剧本。假设由于电源故障或其他异常之类的问题,执行某些任务后执行失败。因此,我尝试从失败的地方恢复执行,下次我运行剧本时。

从一开始就为所有任务运行剧本是很耗时的,是否有可能实现解决方案?

3 个答案:

答案 0 :(得分:0)

您可以使用--start-at-task =“ task name”函数,它将从特定的任务名称运行整个剧本,并从此继续。但请注意,如果您之前在任务中注册了任何变量,然后再使用了它们,则从该任务开始不会注册它们,因此游戏将不会使用它们。在这种情况下,您可以将标记“始终”赋予注册变量的任务

答案 1 :(得分:0)

失败的ansible-playbook运行的输出实际上告诉您如何执行此操作(假设您在配置中将“ retry_files_enabled”设置为true,这是默认设置):

  

要重试,请使用:--limit @ / some / path / to / a / retry / file

在失败的情况下,Ansible将创建一个重试文件,该文件用于您所请求的特定目的。因此,只需将'--limit'语句附加到用于运行剧本的命令上,然后再次将其启动。

编辑:公平地说,您的控制机电源故障的具体情况不会在此范围内,但是Ansible处理的任何故障(即多数故障)都可以使用此方法。

答案 2 :(得分:0)

执行如下:

ansible-playbook --forks=10 myscript.yml --start-at-task='install java'

(限制为:ansible-playbook --forks=10 myscript.yml --limit limit1 --start-at-task='install java'