Installing Ansible
Installing Ansible is rather quick and simple. You can use the source code directly, by cloning it from the GitHub project (https://github.com/ansible/ansible), install it using your system's package manager, or use Python's package management tool (pip). You can use Ansible on any Windows, Mac, or UNIX-like system. Ansible doesn't require any databases and doesn't need any daemons running. This makes it easier to maintain Ansible versions and upgrade without any breaks.
We'd like to call the machine where we will install Ansible our Ansible workstation. Some people also refer to it as the command center.
Installing Ansible using the system's package manager
It is possible to install Ansible using the system's package manager and in my opinion this is the preferred option if your system's package manager ships at least Ansible 2.0. We will look into installing Ansible via Yum, Apt, Homebrew, and pip.
Installing via Yum
If you are running a Fedora system you can install Ansible directly, since from Fedora 22, Ansible 2.0+ is available in the official repositories. You can install it as follows:
$ sudo dnf install ansible
For RHEL and RHEL-based (CentOS, Scientific Linux, Unbreakable Linux) systems, versions 6 and 7 have Ansible 2.0+ available in the EPEL repository, so you should ensure that you have the EPEL repository enabled before installing Ansible as follows:
$ sudo yum install ansible
Note
On Cent 6 or RHEL 6, you have to run the command rpm -Uvh
. Refer to http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm for instructions on how to install EPEL.
Installing via Apt
Ansible is available for Ubuntu and Debian. To install Ansible on those operating systems, use the following command:
$ sudo apt-get install ansible
Installing via Homebrew
You can install Ansible on Mac OS X using Homebrew, as follows:
$ brew update $ brew install ansible
Installing via pip
You can install Ansible via pip. If you don't have pip installed on your system, install it. You can use pip to install Ansible on Windows too, using the following command line:
$ sudo easy_install pip
You can now install Ansible using pip
, as follows:
$ sudo pip install ansible
Once you're done installing Ansible, run ansible --version
to verify that it has been installed:
$ ansible --version
You will get the following output from the preceding command line:
ansible 2.0.2
Installing Ansible from source
In case the previous methods do not fit your use case, you can install Ansible directly from the 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 is 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 Mac:
$ 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...
Note
By default, Ansible will be running against the development branch. You might want to check out the latest stable branch. Check what the latest stable version is using the following command line:
$ git branch -a
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.0.2 Note: checking out 'v2.0.2'. [node ansible]$ ansible --version ansible 2.0.2 (v2.0.2 268e72318f) last updated 2014/09/28 21:27:25 (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.