执行特定的长时间运行任务时,Ansible任务失败

时间:2018-01-24 10:08:05

标签: linux ssh ansible devops

在一次运行所有任务时,Ansible在运行任务之间断开了SSH会话,该任务花了26个小时才完成,但在6小时执行后ansible断开了SSH会话。目标服务器SSH配置以使会话保持如下:

var freshRates = [1.6,1.7,2.0]
var oldRates = [1.5,1.4,1.9]
var difference: [Double] = zip(freshRates, oldRates).map({ $0.0 - $0.1 })

Ansible任务:

ClientAliveInterval 172000
ClientAliveCountMax 10

找到下面的错误日志:

- name: Executing script
  remote_user: "{{admin_user}}"
  become: yes
  shell: sudo -u test bash ./customscript.sh  > /log_dir/customscript.log 2>&1
  args:
    chdir: "deployment_source/common"
  tags:
     - custom-test

请告知,断开连接的问题是什么?怎么解决呢?

1 个答案:

答案 0 :(得分:2)

你永远不应该期望网络连接能够长时间保持稳定。

Ansible中有async机制可以处理长时间运行的工作。

将您的代码重构为:

- name: Executing script
  remote_user: "{{admin_user}}"
  become: yes
  shell: sudo -u test bash ./customscript.sh  > /log_dir/customscript.log 2>&1
  args:
    chdir: "deployment_source/common"
  async: 180000
  poll: 60
  tags:
     - custom-test

允许您的任务执行多达50小时,并且每60秒检查一次完成。