As a first step towards supporting multiple ansible versions we need
tooling to manage ansible installations. This moves the installation
of ansible from the requirements.txt into zuul. This is called as a
setup hook to install the ansible versions into
<prefix>/lib/zuul/ansible. Further this tooling abstracts knowledge
that the executor must know in order to actually run the correct
version of ansible.
The actual usage of multiple ansible versions will be done in
follow-ups.
For better maintainability the ansible plugins live in
zuul/ansible/base where plugins can be kept in different versions if
necessary. For each supported ansible version there is a specific
folder that symlinks the according plugins.
Change-Id: I5ce1385245c76818777aa34230786a9dbaf723e5
Depends-On: https://review.openstack.org/623927
This runs the commands asynchronously (but waits for their
completion). This is more robust for long-running commands
because it avoids the built-in ssh timeout.
This adds an ansible module to actually run the remote command
so that we can:
* process the console log
* use ansible async (the script module does not support it)
* control the environment variables of the script being run
It also adds a callback plugin to track the elapsed time so that
we can use the built-in timeout features of async commands.
Note that the module and plugin are GPL licensed.
Change-Id: I19b2b6a5c362bb9d843e7802aefe0eb5df9c5ed7