Ansible中的长时间运行命令以主机无法访问的状态结束

时间:2017-01-04 01:48:36

标签: ansible ansible-playbook

我必须在Ansible中运行命令,大约需要30多分钟才能完成。该命令必须以串行方式执行。我正在运行的命令是Cassandra中的nodetool修复,如果我们将它并行启动,它将在所有机器中处理该进程。由于Cassandra的修复无法在所有机器中并行运行。

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

由于命令花了很长时间,我的Ansible手册在等待一段时间后即将死亡,消息节点无法访问。

  

{"更改":false," msg":"无法通过ssh连接到主机。","无法访问" :true}

有没有办法,我可以等待这个过程完成?

我正在使用serial: 1作为主机并在任务

下运行

任务:

- name: Execute nodetool repair
  command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4

1 个答案:

答案 0 :(得分:3)

您应该使用async

- name: Execute nodetool repair
  command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4
  async: 3600
  poll: 10

这将以异步模式运行命令最长3600秒(1h)并检查命令是否每10秒完成一次(无论如何都是默认值)。如果命令在1小时后没有完成,则任务将失败。