In 2015, Red Hat acquired Ansible. In September 2017,
Red Hat announced it would release Ansible AWX, which is an
open source upstream of Ansible Tower.
So Ansible Tower is Red Hat licensed web‑based Ansible management
interface, and AWX is the unlicensed alternative.
Keep in mind that AWX is a complex installation on top of
OpenShift Kubernetes, but does provide the same functionality
without the need to purchase a license.
So Ansible Tower is also known as Ansible Automation Platform,
which is the web UI and RESTful API for Ansible that allows you to manage
Ansible environments in an easy and scalable way and is considered a
considerable step up from just using the CLI. The purpose is to make
automation easier to do in the enterprise, along with additional
features. We have workflow designer, job scheduling, role‑based access control,
source control management integration. We have better credential
management, which is a big plus, centralized metrics and logins
for better and enhanced visibility.
We also have a REST API and a Tower CLI tool.
So by meeting all of these requirements, it allows you to
control your automation at scale and much better.
So the Red Hat Automation Platform is Ansible Engine and Tower
rebranded connecting to the Automation Hub.
Then we have Ansible Tower Automation Hub. That was announced in October 2020.
So keep in mind that Ansible Tower is now known as
Ansible Automation Controller.
So we have a platform on the Red Hat Automation Platform and the Ansible
Automation Controller, which is also known as Ansible Tower. This really is just
marketing terminology between platforms and controllers, and in this course,
throughout, I'll refer to it as Ansible Tower.
So in this next section, I would like to introduce to you the autonomy of
an automation job in Ansible Tower. We have a new way to manage old
Ansible objects along with new Tower objects.
You will notice that some of these objects used in Ansible Engine
are the same, such as playbooks and inventories, and then we have
new objects, such as job templates.
We still have playbooks that will be containing your tasks. And all of
these playbooks are stored on what we know as projects, and this will be
synced to wherever you are storing your playbooks.
One really big benefit of using Ansible Tower is that it
separates out credential management from the project.
This allows you to have different credentials for different
inventories. So you can have one playbook targeting all hosts, and
this can be run against different inventories that have different
machines with different credentials.
This really does keep all of your software release environments the same.
So credentials can be installed on machines, and we can use
Ansible Vault to encrypt the credentials. Still,
most of the time, enterprise will already have enterprise‑approved
credential management systems such as CyberArk, and Ansible Tower can
quite easily integrate with these. As a result, this allows you to pull
your credentials from these sources.
So the final part really is the inventory, and you need to know how to
connect, and this will be done with SSH, and we have many examples here
such as GitHub, NetBox, and ServiceNow.
So even though ServiceNow is an ITSM tool,
it can be used as a CMDB database for the inventory.
We can also use a public cloud API such as Google Cloud or Azure
where you can dynamically load what is running in the zone and load
this dynamically into your inventory.
So the inventory can be complex and dynamic, or it can just be a flat
file that is on GitHub. So all of these components sync together to
form what is known as an automation job.
So a basic four‑stage process involved in getting a playbook to
run on Tower, we have a number of stages.
We first need to define a project. We then need to define an inventory.
We also need to define credentials, and we also need to have a
template that glues all of these components together.
So the first three stages can be performed in any order, but the template
mentioned is the final stage that pulls together the three previously
created objects; therefore, it must be defined last.