Ansible:从失败的任务重新运行playbook

Ansible:从失败的任务重新运行playbook,ansible,ansible-playbook,Ansible,Ansible Playbook,我只在一台主机上执行playbook 我当前的任务执行流程是: 1) 执行任务 2) 如果任何任务在这段时间内失败,请清理所有内容 3) 从头开始重新运行 这听起来不是很有效。我非常想创建这样的流 1) 执行任务 2) 任务失败.. 3) 如果我们重新运行剧本,ansible应该执行失败任务中的任务。它不应该从一开始就重新运行 为了做到这一点,我试图在任务失败后实现这一点,我试图执行带有“-limit”的playbook,它抛出以下错误 root@centos:/etc/ansible# ans

我只在一台主机上执行playbook

我当前的任务执行流程是:
1) 执行任务
2) 如果任何任务在这段时间内失败,请清理所有内容
3) 从头开始重新运行

这听起来不是很有效。我非常想创建这样的流

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

为了做到这一点,我试图在任务失败后实现这一点,我试图执行带有“-limit”的playbook,它抛出以下错误

root@centos:/etc/ansible# ansible-playbook stack.yml --limit -vvvv
ERROR: provided hosts list is empty

root@centos:/etc/ansible# cat /root/stack.retry
10.17.10.150
我不确定这是否是重新运行剧本以实现此工作流程的正确方法。

使用选项--start at task=start\u at

这将在与给定名称匹配的任务处启动playbook。就你而言:

ansible-playbook stack.yml --start-at-task=START_AT
将“开始时间”更改为您将开始的任务的名称


您使用的--limit选项是将playbook限制为与模式匹配的主机,而不是限制任务

您应该真正使playbook幂等。如果它们是幂等的,那么从一开始重新运行的唯一问题就是时间。我正在尝试构建幂等playbook,我在playbook中使用“shell”和“command”模块的大多数地方,所以使其成为幂等的我正在借助“creates”参数。你提到的问题永远是。。我面临的另一个问题是。。一旦任务执行,如果任务失败,任务的输出将记录在文件中,并在下一次运行palybook时记录,ansible正在跳过成功执行的任务和失败的任务。
--start at task
不适用于角色中定义的任务。
--start at task
不会以失败的剧本状态继续。
--start at task
不会使用所有必需的预期已由前面的任务注册