Parallel processing 如何使用异步运行Ansible并行任务并检查日志是否成功/失败

Parallel processing 如何使用异步运行Ansible并行任务并检查日志是否成功/失败,parallel-processing,ansible,uri,Parallel Processing,Ansible,Uri,我正在尝试使用ansible playbook并行启动两个作业。 我必须发布到http才能开始工作;一旦作业排队,完成作业可能需要1-3分钟。我需要在后台并行启动两个作业,然后轮询日志中的成功消息或失败消息,并且还需要超时。我确实有对SERVERNAME的ssh访问权,因此regex搜索部分几乎可以正常工作;然而,当它在日志中发现startedfailed时,我并没有找到一种使它失败的方法。尝试状态=缺席,但这似乎适用于其他等待组件 这一切在Ansible中都可行吗?我想出了下面的yaml --

我正在尝试使用ansible playbook并行启动两个作业。 我必须发布到http才能开始工作;一旦作业排队,完成作业可能需要1-3分钟。我需要在后台并行启动两个作业,然后轮询日志中的成功消息或失败消息,并且还需要超时。我确实有对SERVERNAME的ssh访问权,因此regex搜索部分几乎可以正常工作;然而,当它在日志中发现startedfailed时,我并没有找到一种使它失败的方法。尝试状态=缺席,但这似乎适用于其他等待组件

这一切在Ansible中都可行吗?我想出了下面的yaml

---

- hosts: localhost
  connection: local
  gather_facts: no


  tasks:

    - name: Launch an http POST
      async: 10
      poll: 0
      uri:
        url: "https://SERVERNAME/MYLINK1"
        method: POST
        headers:
          Content-Type: "application/x-www-form-urlencoded"
        status_code: 200
        validate_certs: no
        timeout: 10
        return_content: yes
      register: response1

    - name: Launch an http POST
      async: 10
      poll: 0
      uri:
        url: "https://SERVERNAME/MYLINK2"
        method: POST
        headers:
          Content-Type: "application/x-www-form-urlencoded"
        status_code: 200
        validate_certs: no
        timeout: 10
        return_content: yes
      register: response2

    - name: Wait Job to be ready
      async: 120
      delegate_to: SERVERNAME
      wait_for:
        path: /usr/local/logs/mylog1.log
        search_regex: "Started Success"
      register: wait_for_success1

    - name: Wait Job to be failed
      async: 120
      delegate_to: SERVERNAME
      wait_for:
        path: /usr/local/logs/mylog1.log
        search_regex: "Started Failed"
      register: wait_for_failed1

    - name: Wait Job to be ready
      async: 120
      delegate_to: SERVERNAME
      wait_for:
        path: /usr/local/logs/mylog2.log
        search_regex: "Started Success"
      register: wait_for_success=2

    - name: Wait Job to be failed
      async: 120
      delegate_to: SERVERNAME
      wait_for:
        path: /usr/local/logs/mylog2.log
        search_regex: "Started Failed"
      register: wait_for_failed2
您不应该在检查器任务中使用异步。您可以在wait_for模块中使用timeout参数

我不会费心检查日志中是否出现启动失败。在这种情况下,如果Ansible在超过超时2m的日志中没有看到启动成功,则播放将失败

- hosts: SERVERNAME
  tasks:
    - name: Wait Job1 to be ready
      wait_for:
        path: /usr/local/logs/mylog1.log
        search_regex: "Started Success"
        timeout: 120

    - name: Wait Job2 to be ready
      wait_for:
        path: /usr/local/logs/mylog2.log
        search_regex: "Started Success"
        timeout: 120