2016-05-17 42 views
3

我只在一台主机上执行游戏手册。Ansible:从失败的任务中重新运行剧本

我目前的任务执行流程是:
1)执行任务
2)如果任何任务的失败之间,清理一切
3)从开始重新运行。

这听起来不太有效。我想创建流程非常喜欢这一点,

1)执行任务
2)任务失败..
3)如果我们重新运行游戏书,ansible应该从失败的任务执行任务。它不应该从一开始就重新运行。

为了做到这一点,我试图达到一旦任务失败,我试图用“ - 限制”执行游戏手册,它会引发以下错误。

[email protected]:/etc/ansible# ansible-playbook stack.yml --limit -vvvv 
ERROR: provided hosts list is empty 

[email protected]:/etc/ansible# cat /root/stack.retry 
10.17.10.150 

我不确定这是重新运行游戏手册以实现此工作流程的正确方法。

+0

你真的应该让你的剧本幂等。如果它们是幂等的,那么从一开始就重新运行的唯一问题就是时间。 – smiller171

+0

我正在尝试构建幂等剧本,大多数我在剧本中使用'shell'和'command'模块的地方,所以使它成为幂等的,我正在接受“创建”参数的帮助。 您提到的问题仍然是.. ..我正面临的另一个问题是.. 一旦任务执行,如果任务失败,输出任务将记录在文件中,并在下一次运行palybook,ansible是跳过成功执行的任务和失败的任务。 – tgcloud

回答

5

使用--start-在任务= START_AT

这将在任务开始你的剧本匹配给定名称的选项。在你的情况下:

ansible-playbook stack.yml --start-at-task=START_AT 

将“START_AT”更改为您将开始的任务名称。

你已经使用了--limit选项是将剧本限制模式匹配的主机而不是限制性的任务

+0

'--start-at-task'不适用于角色中定义的任务 –