Installing Ansible from source
In case the previous methods do not fit your use case, you can install Ansible directly from source. Installing from source does not require any root permissions. Let's clone a repository and activate virtualenv, which is an isolated environment in Python where you can install packages without interfering with the system's Python packages. The command and the resulting output for the repository are as follows:
$ git clone git://github.com/ansible/ansible.git Cloning into 'ansible'... remote: Counting objects: 116403, done. remote: Compressing objects: 100% (18/18), done. remote: Total 116403 (delta 3), reused 0 (delta 0), pack-reused 116384 Receiving objects: 100% (116403/116403), 40.80 MiB | 844.00 KiB/s, done. Resolving deltas: 100% (69450/69450), done. Checking connectivity... done. $ cd ansible/ $ source ./hacking/env-setup Setting up Ansible to run out of checkout... PATH=/home/vagrant/ansible/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin PYTHONPATH=/home/vagrant/ansible/lib: MANPATH=/home/vagrant/ansible/docs/man: Remember, you may wish to specify your host file with -i Done!
Ansible needs a couple of Python packages, which you can install using pip. If you don't have pip installed on your system, install it using the following command. If you don't have easy_install installed, you can install it using Python's setuptools package on Red Hat systems, or by using Brew on the macOS:
$ sudo easy_install pip <A long output follows>
Once you have installed pip, install the paramiko, PyYAML, jinja2, and httplib2 packages using the following command lines:
$ sudo pip install paramiko PyYAML jinja2 httplib2 Requirement already satisfied (use --upgrade to upgrade): paramiko in /usr/lib/python2.6/site-packages Requirement already satisfied (use --upgrade to upgrade): PyYAML in /usr/lib64/python2.6/site-packages Requirement already satisfied (use --upgrade to upgrade): jinja2 in /usr/lib/python2.6/site-packages Requirement already satisfied (use --upgrade to upgrade): httplib2 in /usr/lib/python2.6/site-packages Downloading/unpacking markupsafe (from jinja2) Downloading MarkupSafe-0.23.tar.gz Running setup.py (path:/tmp/pip_build_root/markupsafe/setup.py) egg_info for package markupsafe Installing collected packages: markupsafe Running setup.py install for markupsafe building 'markupsafe._speedups' extension gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.6 -c markupsafe/_speedups.c -o build/temp.linux-x86_64-2.6/markupsafe/_speedups.o gcc -pthread -shared build/temp.linux-x86_64-2.6/markupsafe/_speedups.o -L/usr/lib64 -lpython2.6 -o build/lib.linux-x86_64-2.6/markupsafe/_speedups.so Successfully installed markupsafe Cleaning up...
Copy the latest version you want to use.
Version 2.0.2 was the latest version available at the time of writing. Check the latest version using the following command lines:
[node ansible]$ git checkout v2.7.1 Note: checking out 'v2.0.2'. [node ansible]$ ansible --version ansible 2.7.1 (v2.7.1 c963ef1dfb) last updated 2018/10/25 20:12:52 (GMT +000)
You now have a working setup of Ansible ready. One of the benefits of running Ansible from source is that you can enjoy the new features immediately, without waiting for your package manager to make them available for you.