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

Long running command in Ansible ending in failed status with host unreachable

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

因此,我们正在 运行 将它们串联起来。但是,该命令有时需要很长时间才能完成。

由于命令耗时较长,我的 Ansible 剧本在等待一段时间后快要死了,消息节点无法访问。

{"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}

有没有办法让我可以等待该过程完成?


我正在为主机使用 serial: 1,运行正在执行以下任务

任务:

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

为此您应该使用 async

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

这将 运行 异步模式下的命令最长 3600 秒 (1h),并检查命令是否每 10 秒完成一次(反正这是默认设置)。如果命令在 1 小时后仍未完成,任务将失败。