我有一个运行并重试shell命令的任务,直到某个字符串不在日志文件的最后一行。它每秒重试500次。
满足条件时,它会关闭服务器。使用serial: 1
一次运行一台服务器时,此功能非常有用。
但是,我想一次在多台服务器上运行它。问题是它会在关闭所有服务器之前等待所有服务器满足条件。
我喜欢它以异步方式运行并在服务器满足条件时关闭每台服务器。
我已尝试过async: true
和poll: 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'
这可能吗?