Ansible中长时间运行的命令以失败状态结束,主机不可访问

Ansible中长时间运行的命令以失败状态结束,主机不可访问,ansible,ansible-playbook,Ansible,Ansible Playbook,我必须在Ansible中运行一个命令,大约需要30多分钟才能完成。该命令必须以串行方式执行。我正在运行的命令是Cassandra中的nodetool repair,如果我们并行启动它,它将在所有机器中传递进程。因为卡桑德拉的维修不能在所有机器上并行运行 所以,我们正在连续运行它们。但是,该命令有时需要很长时间才能完成 由于命令执行时间很长,我的Ansible playbook在等待一段时间后即将死亡,无法访问消息节点 {“changed”:false,“msg”:“未能通过ssh连接到主机。”,

我必须在Ansible中运行一个命令,大约需要30多分钟才能完成。该命令必须以串行方式执行。我正在运行的命令是Cassandra中的nodetool repair,如果我们并行启动它,它将在所有机器中传递进程。因为卡桑德拉的维修不能在所有机器上并行运行

所以,我们正在连续运行它们。但是,该命令有时需要很长时间才能完成

由于命令执行时间很长,我的Ansible playbook在等待一段时间后即将死亡,无法访问消息节点

{“changed”:false,“msg”:“未能通过ssh连接到主机。”,“unreachable”:true}

有没有一种方法可以让我等待流程完成


我正在为主机使用
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