Ansible中长时间运行的命令以失败状态结束,主机不可访问
我必须在Ansible中运行一个命令,大约需要30多分钟才能完成。该命令必须以串行方式执行。我正在运行的命令是Cassandra中的nodetool repair,如果我们并行启动它,它将在所有机器中传递进程。因为卡桑德拉的维修不能在所有机器上并行运行 所以,我们正在连续运行它们。但是,该命令有时需要很长时间才能完成 由于命令执行时间很长,我的Ansible playbook在等待一段时间后即将死亡,无法访问消息节点 {“changed”:false,“msg”:“未能通过ssh连接到主机。”,“unreachable”:true} 有没有一种方法可以让我等待流程完成Ansible中长时间运行的命令以失败状态结束,主机不可访问,ansible,ansible-playbook,Ansible,Ansible Playbook,我必须在Ansible中运行一个命令,大约需要30多分钟才能完成。该命令必须以串行方式执行。我正在运行的命令是Cassandra中的nodetool repair,如果我们并行启动它,它将在所有机器中传递进程。因为卡桑德拉的维修不能在所有机器上并行运行 所以,我们正在连续运行它们。但是,该命令有时需要很长时间才能完成 由于命令执行时间很长,我的Ansible playbook在等待一段时间后即将死亡,无法访问消息节点 {“changed”:false,“msg”:“未能通过ssh连接到主机。”,
我正在为主机使用
serial:1
,并在下面运行任务
任务:
为此,您应使用:
- name: Execute nodetool repair
command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4
async: 3600
poll: 10
这将在异步模式下运行命令最多3600秒(1h),并检查命令是否每10秒完成一次(默认情况下)。如果命令在1h后仍未完成,任务将失败。Hi Strahinja,我在尝试连接问题后使用了async。最终,我做了完全相同的事情,但投票时间为1分钟。我接受这一点,因为这将有助于其他人谁尝试类似的。非常感谢。这不会多次运行同一个命令,对吗?它运行命令并保持运行,然后每x秒重新连接一次并进行检查,对吗?
- name: Execute nodetool repair
command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4
async: 3600
poll: 10