Ansible Performance Tuning
Ansible performance advice is mostly repeated without measurement. This times one playbook against a baseline, with pipelining, with fact caching and with ten times the forks - alternating the runs so the answer cannot be first-run warm-up. Three settings move the number, one does nothing, and the obvious way to check whether pipelining is on reports the wrong answer.
Bonus: Beyond the Blueprint Guide 43 of 45 Intermediate
- OSUbuntu 26.04 LTS
- ansible-core2.20.1
- Python3.14.4
- TimeAbout 16 min
- Reviewed23 August 2026
Written against the versions above. `pipelining` is off by default for one reason: it is incompatible with `sudo` configured `requiretty`, which was the RHEL default long ago and is not any more. On ansible-core 2.20.1 `ansible-config dump` does not report its effective value - see the fourth step, which is why that step exists.
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| ANS-CTL01 | 192.168.0.36 | Ubuntu 26.04 LTS | Ansible Control Node | 2 Core | 3 GB | 50 GB |
| ANS-A01 | 192.168.0.37 | Ubuntu 26.04 LTS | Managed Node (group: web) | 2 Core | 3 GB | 50 GB |
| ANS-B01 | 192.168.0.38 | Ubuntu 26.04 LTS | Managed Node (group: db) | 2 Core | 3 GB | 50 GB |
Before you start
- A control node configured as shown in the first step.
- The session rewrites
~/ansible.cfgseveral times and restores the original at the end.
-
The configuration this guide assumes
-
One run is not a measurement
-
What pipelining actually removes
-
The check that reports the wrong answer
-
Fact caching
-
The setting that does nothing here