Getting Started With Ansible Tower
Learn about features and installation of Ansible Tower, the enterprise version of Ansible for DevOps automation, deployment, and configuration monitoring.
Join the DZone community and get the full member experience.Join For Free
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. Let's start with what Ansible Tower is.
What Is Ansible Tower?
Ansible Tower is Ansible at an enterprise level. It is a web-based solution for managing your organization with a very easy user interface that provides a dashboard with state summaries of all the hosts, allows quick deployments, and monitors all configurations. Tower allows you to share SSH credentials without exposing them, log all jobs, manage inventories graphically, and sync them with a wide variety of cloud providers.
Prerequisites for Installation
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 (kernel and runtime) and 20 GB hard disk are required.
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 HA MongoDB setups, you can use the below formula for a rough estimate of the amount of space required:
Ansible Tower Parameters
Ansible Tower has three different editions: self-support, standard, and premium. Each of these editions varies in the capabilities they offer. You can do everything from application deployment to multi-tiered orchestrations, with control, security, and logging capabilities.
As I mentioned before, Tower has three editions; self-support is the free trial version. For the other two editions' pricing, refer to the below table:
Below are a few Ansible Tower features:
- Ansible Tower Dashboard – The Ansible Tower dashboard displays everything going on in your Ansible environment, like hosts, inventory status, recent job activity, and so on.
- Real-Time Job Updates – As Ansible can automate the complete infrastructure, you can see real-time job updates, like plays and tasks broken down by each machine, whether successful or a failure. With this, you can see the status of your automation and know what’s next in the queue.
- Multi-Playbook Workflows - This feature allows you to chain any number of playbooks, regardless of the usage of different inventories, utilize various credentials, or run different users.
- Scale Capacity With Clusters - We can connect multiple Ansible Tower nodes into an Ansible Tower cluster. 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.
- REST API & Tower CLI Tool - Every feature in Ansible Tower is available via Ansible Tower's REST API, which provides the ideal API for a systems management infrastructure. 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, and reset passwords on any host or group of hosts in the inventory with Ansible Tower's remote command execution.
Now that you understand the features of Ansible Tower, let's get into the installation.
Installation of Ansible Tower
Before you install Ansible Tower, you have to first install and configure Ansible on your operating system and then install PostgreSQL.
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.
Use the below commands to install PostgreSQL.
apt-get update sudo apt-get install postgresql postgresql-contrib
Download Ansible Tower
Once you are done installing Ansible, register to download Ansible - Tower. You will receive an email after you register. Open your mail and then click on the download button.
Then extract the Ansible Tower installation tool using the below commands.
tar xvzf ansible-tower-setup-latest.tar.gz ansible-tower-setup-<tower_version>
tower-version is the version of Tower you have downloaded.
After that, set up your inventory file, where you have to mention the necessary passwords (admin_password, pg_password, rabbitmq_password).
Ss 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.
Once you are done setting up 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.
In this hands-on, I will show you how to create a job to print a message. Refer to the below diagram for the steps we are going to follow.
To create a user, go the settings option and choose the User tab. Once you enter the User tab, click on the Add option to add a new User. Enter the details required and click Save.
Now, create an Inventory by clicking on the Inventories option and going to the Add option.
Once you click on the Add option, enter all the details required, like the name, description, and organization, then click 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.
After creating hosts, create a credential by going to the settings options and choosing the Credentials tab. After that, go to the Add option and enter the details. Once you are done, click on Save.
There are two ways to access a simple playbook. You can do it manually or by specifying a link from a GitHub repository. I am going to access the project manually.
Accessing a Manually Created Playbook
To access a manually created playbook, you first have to create a playbook and then set up the project. Follow the below steps and start creating a playbook.
Use the 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 where 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 which corresponds to the subdirectory you created, then click Save.
Now, let's create a Job Template by going to the Job Template tab and clicking the Add button. Once you click on the Add button, you will be redirected to a page where you have to fill in details such as Name, Description, Inventory name, Project, Playbooks, and Credentials.
From the Job Templates overview screen, click the Launch button (rocket symbol) to run the Job Template. When you launch the job, you can clearly see at the end of the output that the message has been printed.
Published at DZone with permission of Sahiti Kappagantula, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.