Exploring Ansible Tower With A Hands-On
By: Vardhan Ns
Tags: DevOps, Devops Tool, Installation, Ansible, Automation

Today’s scaling industries aim to provide large productivity gains, but they have to deal with a wide variety of automation challenges, which are overcome by tools such as Ansible. This blog on Ansible Tower will give you a complete insight into the following:

What is Ansible — Tower?

Prerequisites To Install Ansible — Tower

Ansible — Tower Parameters

Installation Steps

Hands-On

Alright!! So, let’s get started with what is Ansible Tower.

What is Ansible Tower?

Ansible Tower is Ansible at a more enterprise level. It is a web-based solution for managing your organization with a very easy user interface that provides a dashboard with all of the state summaries of all the hosts, allows quick deployments, and monitors all configurations.

The tower allows you to share the SSH credentials without exposing them, logs all the jobs, manage inventories graphically and syncs them with a wide variety of cloud providers.

Prerequisites To Install Ansible Tower

Ansible Tower is supported by the following operating systems:

Red Hat Enterprise Linux 6 64-bit

Red Hat Enterprise Linux 7 64-bit

CentOS 6 64-bit

CentOS 7 64-bit

Ubuntu 12.04 LTS 64-bit

Ubuntu 14.04 LTS 64-bit

Ubuntu 16.04 LTS 64 bit

You should have the latest stable release of Ansible.

64-bit support required (kernel and runtime) and 20 GB hard disk.

Minimum 2 GB RAM (4+ GB RAM recommended) is required.

2 GB RAM (minimum and recommended for Vagrant trial installations

4 GB RAM is recommended /100 forks

For Amazon EC2: Instance size of m3.medium or larger is required for less than 100 hosts and if you have more than 100 hosts, then you require an instance size of m3.xlarge or larger.

For HA MongoDB setups, you can use the below formula for a rough estimate of the amount of space required.

(NumberOfHostsIninventory)*(NumberOfScans)*(AverageModuleFactSize)*(NumberOfModulesScanning)

Ansible Tower Parameters

In this section of the blog, you will get an insight into the following parameters of the tower:

Tower Editions

Tower Pricing

Tower Features

Tower Editions

The Ansible Tower has 3 different editions; the self-support, standard, and premium edition. Each of these editions varies with the capabilities they offer. You can do everything from application deployment to multi-tiered orchestrations, with control, security, and logging capabilities.

Tower Pricing

As I mentioned before the tower has 3 editions, out of which the self-support one is the free trial version. For the other two edition’s pricing, you can refer to the below table:

Tower Features

Below are few of the Ansible Tower features:

Multi-Playbook Workflows — This feature allows you to chain any number of playbooks, regardless of the usage of different inventories, utilizes various credentials, or runs different users.

This feature allows you to chain any number of playbooks, regardless of the usage of different inventories, utilizes various credentials, or runs different users. Scale Capacity With Clusters — We can connect multiple Ansible Tower nodes into an Ansible Tower cluster as the clusters add redundancy and capacity, which allow you to scale Ansible automation across the enterprise.

We can connect multiple Ansible Tower nodes into an Ansible Tower cluster as the clusters add redundancy and capacity, which allow you to scale Ansible automation across the enterprise. Manage & Track Inventory — Ansible Tower helps you manage your entire infrastructure by letting you easily pull inventory from public cloud providers such as Amazon Web Services, Microsoft Azure, and more.

Ansible Tower helps you manage your entire infrastructure by letting you easily pull inventory from public cloud providers such as Amazon Web Services, Microsoft Azure, and more. REST API & Tower CLI Tool — Every feature present in Ansible Tower is available via Ansible Tower’s REST API, which provides the ideal API for a systems management infrastructure. The Ansible Tower’s CLI tool is available for launching jobs from CI systems such as Jenkins, or when you need to integrate with other command-line tools.

Every feature present in Ansible Tower is available via Ansible Tower’s REST API, which provides the ideal API for a systems management infrastructure. The Ansible Tower’s CLI tool is available for launching jobs from CI systems such as Jenkins, or when you need to integrate with other command-line tools. Remote Command Execution — You can run simple tasks such as add users, restart any malfunctioning service, reset passwords on any host or group of hosts in the inventory with Ansible Tower’s remote command execution.

Alright!! So, now that you guys have understood the features of Ansible Tower, let’s get into the installation of Ansible Tower.

Installation of Ansible Tower

Before you install Ansible Tower, you have to first install and configure Ansible on your operating system and then also install PostgreSQL.

So, first, let’s start by installing and configuring Ansible. I will be using Ubuntu — 16.04 version as my operating system.

Install and Configure Ansible on Ubuntu

Step 1: As a root user, configure the Ansible PPA using the below commands.

apt-get install software-properties-common

apt-add-repository ppa:ansible/ansible

Step 2: After configuring, install Ansible using the below commands.

apt-get update

apt-get install ansible

After you are done installing, install PostgreSQL.

Installing PostgreSQL

Use the below commands, to install PostgreSQL.

apt-get update

sudo apt-get install postgresql postgresql-contrib

Download Ansible Tower

Step 1.1: Once you are done installing Ansible, register to download the Ansible — Tower.

Step 1.2: You will receive an email after you register to download the Ansible Tower. Open your mail and then click on the download button, to download.

Step 1.3: Then extract the Ansible Tower installation tool using the below commands.

tar xvzf ansible-tower-setup-latest.tar.gz

ansible-tower-setup-<tower_version>

where tower-version, is the version of the tower you have downloaded.

Step 2: After that set up your inventory file, where you have to mention the necessary passwords (admin_password, pg_password, rabbitmq_password) in the inventory file.

Step 3: Now, as the Tower setup playbook script uses the inventory file, it has to be invoked as ./setup.sh from the path where you unpacked the Tower installer tarball.

./setup.sh

Step 4: Once you are done setting up the Tower, use the web browser to access the Tower server and view the Tower login screen, wherein you have to enter the username and password, to access the Tower Dashboard.

Hands-On

In this hands-on, I will show you how to create a job to print a message.

So, refer to the below diagram for the steps that we are going to follow.

Create a User

To create a user, go the settings option, and then choose the User tab. Once you enter the User tab, click on the Add option to add a new User. Mention the details required and then click on Save.

Create an Inventory

Now, create an Inventory, by just clicking on the Inventories option and then going to the Add option.

Once you click on the Add option, mention all the details required like the name, description, organization and then click on Save.

Create a Host

To create a host, go the Inventories tab and choose the inventory to which you want to add hosts. Then choose the Hosts tab and click on Add Hosts. Here I want to add hosts for the inventory that was created above. Once the details are mentioned, click on Save.

Create a Credential

After creating hosts, create a credential by going to the settings options, and then choose the Credentials tab. After that, go to the Add option and mention the details. Once you are done, mentioning the details, click on Save.

Setting up a Project

There are two ways to access a simple playbook, either you can do it manually or by specifying a link from a Github repository.

In this blog, I am going to access the project manually.

Accessing a Manually created Playbook

For accessing a manually created playbook, you first have to create a playbook and then set up the project.

So, follow the below steps and start creating a playbook.

Use command-line console as a root user and create a directory for your project on the Tower server file system, in which to store your Ansible playbooks for this project.

Now, make a new project directory by creating it on the Tower filesystem under the Project Base Path directory, located by default in “/var/lib/awx/projects/”. Here the new directory is DEMO.

Now, let’s start setting up a project.

To set up a project use your web browser, create the new project by clicking on the Projects link at the top of the Tower Dashboard and click on the Add button.

Once you click on the Add button, you will be redirected to a page wherein you have to fill in details such as Name and Description of Project. Then, set the SCM type to be Manual, and for the Playbook Directory, select a value that corresponds to the subdirectory you created and then click on Save.

So, guys, that’s an end to this blog!!

This is the end of my article on Nagios interview questions. If you wish to check out more articles on the market’s most trending technologies like Artificial Intelligence, Python, Ethical Hacking, then you can refer to Edureka’s official site.

Do look out for other articles in this series which will explain the various other aspects of DevOps.