Hello Vladimir,

I saw that one, but I misunderstood how that works because I also had
`serial` set in the playbook. Controlling how many tasks are executed
via forks does exactly what I was looking for.

Thank you for your prompt response!

On Sun, Aug 9, 2020 at 4:52 PM Vladimir Botka <[email protected]> wrote:
>
> On Sun, 9 Aug 2020 04:33:58 -0700 (PDT)
> Igor Gnatenko <[email protected]> wrote:
>
> > Basically I am looking for something like `parallel -jX` linux command. At
> > any time it runs up to X threads with a command.
>
> That's what strategy "host_pinned" does. See
> https://docs.ansible.com/ansible/latest/plugins/strategy/host_pinned.html#host-pinned-executes-tasks-on-each-host-without-interruption
>
> > I noticed that serial: 2 with any strategy will wait for play to run on
> > these 2 hosts and only after that it will move to the next ones.
>
> Only "linear" works this way, I think.
>
> > I'd like Ansible to run on 2 hosts at any time, so once it finishes with 1
> > of 2 in batch, it would already run playbook for the 3rd host.
> > Is such thing does not exist or I just can't find how to do it?
>
> See this example. Is this what you're looking for?
> https://stackoverflow.com/questions/59877712/execute-ansible-playbook-for-next-host-after-finishing-one-host-not-all-forked-h
>
> $ cat hosts
> all:
>   hosts:
>     test_01:
>       wait_timeout: 1
>     test_02:
>       wait_timeout: 2
>     test_03:
>       wait_timeout: 3
>     test_06:
>       wait_timeout: 4
>     test_09:
>       wait_timeout: 5
>
> $ cat pinned-01.yml
> - name: Play A
>   hosts: all
>   gather_facts: false
>   strategy: host_pinned
>   tasks:
>     - debug:
>         msg: "A:{{ inventory_hostname }}
>               {{ lookup('pipe', 'date +%H-%M-%S') }}
>               started"
>     - wait_for:
>         timeout: "{{ wait_timeout }}"
>     - debug:
>         msg: "A:{{ inventory_hostname }}
>               {{ lookup('pipe', 'date +%H-%M-%S') }}
>               finished"
>
>
> $ ansible-playbook pinned-01.yml -f 3 | grep msg\":
>     "msg": "A:test_06 15-33-05 started"
>     "msg": "A:test_09 15-33-05 started"
>     "msg": "A:test_01 15-33-05 started"
>     "msg": "A:test_01 15-33-08 finished"
>     "msg": "A:test_02 15-33-08 started"
>     "msg": "A:test_06 15-33-11 finished"
>     "msg": "A:test_03 15-33-11 started"
>     "msg": "A:test_02 15-33-11 finished"
>     "msg": "A:test_09 15-33-12 finished"
>     "msg": "A:test_03 15-33-15 finished"
> Results
>
> Because of -f 3 Ansible started 3 hosts (1,9,6). Host 1 finished
> first and opened it's slot to a new host that was waiting to start.
> Host 2 started. The same way host 3 started right after host 6
> finished. Host 2, which started after host 9, finished before host 9.
>
>
> --
> Vladimir Botka



-- 
-Igor Gnatenko

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAFMg4WDfwGhFZ0VOLsqMZ4pnusxwtDC%3DZvtWTKiZYo0uS5E1vA%40mail.gmail.com.

Reply via email to