Skip to main content

Run ansible playbooks in parallel.

Project description

ansible-parallel

TL;DR:

pip install ansible-parallel
ansible-parallel *.yml

Executes multiple ansible playbooks in parallel.

For my usage, running sequentially (using a site.yml containing multiple import_playbook) takes 30mn, running in parallel takes 10mn.

Usage

ansible-parallel runs like ansible-playbook but accepts multiple playbooks. All remaining options are passed to ansible-playbook so feel free to run ansible-parallel --check *.yml for example.

Example

It's easy to start:

$ ansible-parallel *.yml

When it runs, it display a live update of what's going on, one line per playbook:

web.yml:     TASK [common : Configure Debian repositories] *****************************
gitlab.yml:  TASK [common : Configure IP failover] *************************************
staging.yml: TASK [common : Configure Debian repositories] *****************************
dev.yml:     Done.

And when it's done, it prints a full report like:

# Playbook playbook-webs.yml, ran in 123s

web1.meltygroup.com         : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0
web2.meltygroup.com         : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0
web3.meltygroup.com         : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0


# Playbook playbook-staging.yml, ran in 138s

staging1.meltygroup.com         : ok=64   changed=6    unreachable=0    failed=0    skipped=18   rescued=0    ignored=0


# Playbook playbook-gitlab.yml, ran in 179s

gitlab-runner1.meltygroup.com         : ok=47   changed=0    unreachable=0    failed=0    skipped=13   rescued=0    ignored=0
gitlab-runner2.meltygroup.com         : ok=47   changed=0    unreachable=0    failed=0    skipped=13   rescued=0    ignored=0
gitlab-runner3.meltygroup.com         : ok=47   changed=0    unreachable=0    failed=0    skipped=13   rescued=0    ignored=0
gitlab.meltygroup.com                 : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0


# Playbook playbook-devs.yml, ran in 213s

dev1.meltygroup.com             : ok=121  changed=0    unreachable=0    failed=0    skipped=22   rescued=0    ignored=0
dev2.meltygroup.com             : ok=121  changed=0    unreachable=0    failed=0    skipped=22   rescued=0    ignored=0

Known alternatives

ansible-pull

ansible-parallel is only good if you want to keep the push behavior of Ansible, but if you're here you may have a lot of playbooks, and switching to ansible-pull with a proper reporting system like ARA

xargs

A quick and dirty way of doing it in 3 lines of bash:

ls -1 *.yml | xargs -n1 -P16 sh -c 'ansible-playbook "$$0" > "$$0.log"' ||:
grep -B1 "^\(changed\|fatal\|failed\):" *.log
echo *.yml.log | xargs -n1 sed -n -e '/^PLAY RECAP/,$$p'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansible-parallel-2023.7.26.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

ansible_parallel-2023.7.26-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file ansible-parallel-2023.7.26.tar.gz.

File metadata

  • Download URL: ansible-parallel-2023.7.26.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for ansible-parallel-2023.7.26.tar.gz
Algorithm Hash digest
SHA256 9eb6c201d7163afdfb886f6c2c69bf01bdfbbc6c463bae748a1c59bc4590c84f
MD5 3b09683b341957649f8a3e9410f4bffc
BLAKE2b-256 9281f75b88072fe2f390b5e192489f10e8b28fcb72159bd0ceaf7fc6fd999db4

See more details on using hashes here.

File details

Details for the file ansible_parallel-2023.7.26-py3-none-any.whl.

File metadata

File hashes

Hashes for ansible_parallel-2023.7.26-py3-none-any.whl
Algorithm Hash digest
SHA256 17c11398285d0711880d0ac8584ee16b25d2e80a5274b6aafa7facf99ae5853b
MD5 8bed6b3e8f6691df40641dc489789d23
BLAKE2b-256 b57d9fee73985c343b60bc89c0af2f75f7aa8890e330a85c0295abb2f588fe7c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page