Ansible-重试任务,直到文件包含日志行

tur*_*enh 4 ansible ansible-playbook ansible-2.x

我有一个可执行文件,可以说/ tmp / foo

我想尝试运行此二进制文件(最多5次),直到在日志文件中看到一行:可以说/tmp/start.log

我需要这样的戏剧:

- block:
    - shell: /tmp/foo

    - pause: seconds=30

    - name: Check if started successfully
      shell: grep 'started successfully' /tmp/start.log
      register: grep
  retry: 5
  until: grep.stdout 
Run Code Online (Sandbox Code Playgroud)

但是不幸的是Ansible块不支持retry-until

我该如何实现?

Kon*_*rov 5

我会用单个命令射击:

- shell: /tmp/foo; sleep 30; grep 'started successfully' /tmp/start.log
  register: cmd_result
  retries: 5
  until: cmd_result | success
Run Code Online (Sandbox Code Playgroud)