Ansible |使重试任务在多个服务器上异步运行

时间:2017-02-23 23:03:38

标签: ansible ansible-2.x

我有一个运行并重试shell命令的任务,直到某个字符串不在日志文件的最后一行。它每秒重试500次。

满足条件时,它会关闭服务器。使用serial: 1一次运行一台服务器时,此功能非常有用。

但是,我想一次在多台服务器上运行它。问题是它会在关闭所有服务器之前等待所有服务器满足条件。

我喜欢它以异步方式运行并在服务器满足条件时关闭每台服务器。

我已尝试过async: truepoll: 0,但在任务中使用retry: true时,这似乎无效。

这是一个代码片段,可以让您了解我正在做的事情。

- name: "Checking for inactivity on the server before shutdown"
  shell: "tail -1 serverlogs.log | egrep 'STRING1|STRING2' ||:"
  args:
    chdir: "/path/to/log/"
  register: check_inactivity
  until: '"STRING1" not in check_inactivity.stdout and "STRING2" not in check_inactivity.stdout'
  retries: 500
  delay: 1



- name: Debug message
  debug:
    msg: "Shutting down the server | {{ inventory_hostname }}"
  when: 'check_inactivity | changed'

这就是我想要实现的目标

- name: "Checking for inactivity on the server before shutdown"
  shell: "tail -1 serverlogs.log | egrep 'STRING1|STRING2' ||:"
  args:
    chdir: "/path/to/log/"
  register: check_inactivity
  until: '"STRING1" not in check_inactivity.stdout and "STRING2" not in check_inactivity.stdout'
  retries: 500
  delay: 1
  async: 45
  poll: 0


- name: Debug message
  debug:
    msg: "Shutting down the server | {{ inventory_hostname }}"
  when: 'check_inactivity | changed'

这可能吗?

0 个答案:

没有答案