I’ve always wondered if there’s a way to speed up Ansible executions as creating a new SSH connection for each command seemed excessive. However, I’d never looked for a solution until today when I discovered a very neat feature that shares SSH connections called pipelining.
Enabling it as simple as adding the following to an
ansible.cfg file located
somewhere it can be picked up by Ansible (for me this was in the same directory
as my playbook):
[ssh_connection] pipelining = True
Tada! Now a playbook that took several minutes was done in a fraction of that time.
NB: As written in the Ansible configuration docs: “This can result in a very significant performance improvement when enabled, however when using “sudo:” operations you must first disable ‘requiretty’ in /etc/sudoers on all managed hosts.”