MITOGEN
In the previous post, we discussed various ways to reduce the ansible-playbook execution time, those changes were mostly made in the ansible config file, by adding or adjusting certain parameters in the file. But as you may have noticed that those methods were not that effective in certain cases, while using those methods we have to be very cautious about the result as they may affect ansible performance in one way or the other.
Generally,
for the slower ansible execution, the main culprit is the way ansible
is executed on the hosts. It creates multiple SSH connections and does
not fully utilize the available resources. To tackle this problem,
MITOGEN came to rescue !!!
Mitogen is a distributed programming library for Python.
The Mitogen extension is a set of plug-ins for Ansible that enable it to operate via Mitogen,
vastly improving its performance and enhancing its functional capability.
We
all know about the strategies in ansible – linear, free & debug., the mitogen
is just defined in the strategy column of the config file, so it is just a
strategy, we are not making any other changes in the config file of the ansible
so it is not affecting any other parameter, it is just the way, playbooks will
be executed on the hosts.
Now coming to the mitogen installation part, we just have to
download this package at a particular
location and make some changes in the ansible config file as shown below,
[defaults]
strategy_plugins = /path/to/mitogen/ansible_mitogen/plugins/strategystrategy = mitogen_linear
we
have to define the path where we have stored our mitogen files, and mention the
strategy as “mitogen_linear”, under the default section of the config file, and
we are good to go.
Now, after the Mitogen installation part, when we run our playbook, we will notice a reasonable reduction in the execution
time,
Mitogen
is fast because of the following reasons,
- One connection is created per target and system logs
aren’t spammed with repeated authentication events.
- A
single network roundtrip is used to execute a step whose code already
exists in RAM on the target.
- Processes
are aggressively reused, avoiding the cost of invoking Python and recompiling
imports, saving 300-800 ms for every playbook step.
- Code
is cached in the RAM, which further increases the speed.
- Generally,
ansible repeatedly rewrites and extracts ZIP files to temporary
directories in the target hosts, mitogen also reduces these rewrites.
All the above-mentioned features make
the ansible to run faster.
Mitogen is another extension for
ansible that provides a decrease in its execution time and it is very easy to
use, I think MITOGEN is
very underrated and one of its kind, and we should definitely give it a try.
I hope I have explained
everything well, any suggestion/queries are highly appreciated.
Thanks !!!
Source:
https://mitogen.networkgenomics.com/ansible_detailed.html