Ansible is an IT automation tool that enables IaC. In this lesson, we will learn what Ansible is and why it is so powerful for IT departments.

Michael DeHaan started the Ansible project in February 2012 when the project’s founder took inspiration from several tools he had written previously, along with some hands-on experience with the state of configuration management at the time. Some of Ansible’s unique attributes, such as its module-based architecture and agentless approach, quickly attracted attention in the open-source world.

Ansible technology

First, let’s begin with Ansible’s open-source technology. Ansible follows the DevOps principles:

  • Infrastructure automation tool
  • Open source IaC

Ansible is classified as an infrastructure automation tool so that we can quickly automate our system administrator tasks. IaC manages and provides computer data centers through machine-readable definition files rather than physical hardware configuration or interactive configuration tools. With Ansible, we can deploy our IaC on-premise and on the most well-known public cloud provider.

Ansible use cases

Ansible’s three prominent use cases are the following:

  • Provisioning
  • Configuration management
  • Application deployment

After touching the technology, we can invent more ways to use it.

Three main use cases of Ansible
Three main use cases of Ansible

Provisioning

Provisioning is the process of setting up the IT infrastructure. All system administrators know how important it is to manage a uniform fleet of machines. Some people still rely on software to create workstation images. But there is a drawback; with imaging technology, we’re only taking a snapshot in time of the machine. So, we need to reinstall software every time because of modern critical activation systems or update manually to the latest security patches. Ansible automates this process to make it smoother.

Configuration management

Configuration management is the process of maintaining systems and software in a desired and consistent state. We can maintain an up-to-date and consistent fleet of machines, coordinate rolling updates, and schedule downtime. With Ansible, we can verify the status of our managed hosts and take action in a small group of them. A wide variety of modules is available for the most common use cases. Not to mention the typical use case: to check the compliance of our fleet to some international standards and apply resolution plans.

Application deployment

Application deployment is the process of publishing our software between the testing, staging, and production environments. For example, we can automate our web application’s continuous integration/delivery workflow pipeline. Our DevOps team will be delighted!

Ansible for DevOps

Ansible is used to apply the DevOps principles in worldwide organizations. Let’s quickly summarize them. DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). As DevOps is a cross-functional mode of working, those who practice the methodology use different tools, referred to as toolchains, instead of using a single tool. These toolchains fit into one or more categories that are reflective of the key aspects of the development and delivery process. The seven categories include the following:

  • Code: Code development and review, source code management tools, and code merging.
  • Build: Continuous integration tools and build status.
  • Test: Continuous testing tools that provide quick and timely feedback on business risks.
  • Release: Artifact repository and application predeployment staging.
  • Deploy: Change management, release approvals, and release automation.
  • Operate: Infrastructure configuration and management, plus IaC tools.
  • Monitor: Application performance monitoring and end-user experience.

Ansible tenets

The four fundamental tenets of Ansible are the following:

  • Declarative: We can use it in a way that’s similar to a programming language to apply sequencing, selection, and iteration to the code’s flow.

  • Agentless: We don’t need to install and update any agents on the target machine. It uses the SSH connection and Python interpreter.

  • Idempotent: We can run an operation multiple times without changing beyond the initial procedure. The language is idempotent in the sense that the code will check a special status on the managed device. This means that, for example, the first time our code changes something, the following code only runs to verify that nothing has changed and moves forward.

  • Community-driven: Ansible Galaxy is a public archive where we can download code made by open-source contributors as roles and collections.

The four tenets of Ansbile
The four tenets of Ansbile

Ansible values

Ansible has six values. They are the following:

  • Simple: The code is in YAML language—a human-readable data serialization language. It is well-known and easy to learn. It is commonly used for configuration files and in applications where data is stored or transmitted.

  • Powerful: Ansible is robust and battle-tested in configuration management, workflow orchestration, and application deployment.

  • Cross-platform: Ansible is agentless; it supports all major operating systems—physical, virtual, and cloud—as well as network providers.

  • Work with existing tools: Ansible can work with existing tools, making it easy to homogenize the current environment.

  • Batteries included: Ansible is bundled with 750+ modules to automate the most common tasks.

  • Community-powered: Every month, Ansible has more than ~250,000 downloads, an average of 3,500 contributors, and more than 1,200 users on IRCInternet Relay Chat.

Ansible history

The main events in Ansible’s history are the following:

  • Initial development in 2012: Ansible Inc., originally AnsibleWorks Inc., was the company set up to support and sponsor the project commercially. Michael DeHaan developed the Ansible tool. The first release of Ansible was made public on February 20th, 2012.

  • Acquired by Red Hat in 2015: On October 16th, 2015, Red Hat acquired Ansible Inc. and evaluated Ansible as a powerful IT automation solution designed to help enterprises move toward frictionless IT.

  • AnsibleFest in 2016: Started in 2016, AnsibleFest is an annual conference of the Ansible community of users and contributors in London and the USA.

  • Red Hat Ansible Automation Platform 1.0 in 2020: The first release of the Ansible Automation Platform suite (formerly known as Ansible Tower) to take enterprise customers.

  • Red Hat Ansible Automation Platform 2.1 in 2021: The second major release of the Ansible Automation Platform to enable container-first design using the Ansible execution environment occurred in 2021.

Ansible history
Ansible history

Ansible open source vs. commercial

Ansible is a fast-moving, innovative, open-source, and community-driven project. The user interface of the open-source version is only the command line.

Red Hat Ansible Automation Platform (formerly Ansible Tower) is a framework designed by Red Hat. It provides a web UI to manage our infrastructure.

Enterprises need more services and stable releases. For example, they need a service-level agreement (SLA) for support. Red Hat offers this service to companies under the Ansible Tower umbrella, now rebranded as Ansible Automation Platform.

Ansible Automation Platform is a REST API, web service, and web-based console designed to make Ansible more usable for IT teams with members of different technical proficiencies and skill sets. It is a hub for automation tasks. Ansible Tower is a commercial product supported by Red Hat Inc. but derived from the AWX upstream project, which has been open source since September 2017.

Red Hat maintains Ansible Core with the explicit intent of being used as an enterprise IT platform. With Ansible Core, organizations can access the tools and innovations available from the underlying Ansible technology in a hardened, enterprise-grade manner.