我必须在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
答案 0 :(得分:3)
您应该使用async:
- name: Execute nodetool repair
command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4
async: 3600
poll: 10
这将以异步模式运行命令最长3600秒(1h)并检查命令是否每10秒完成一次(无论如何都是默认值)。如果命令在1小时后没有完成,则任务将失败。