Ansible was created by Michael Dehaan on February 20, 2012 and later acquired by Red Hat in 2015, who maintains the platform with the help of the Ansible community which keeps updating and adding more content developing it.
The software is primarly intended for IT professionals and its key-point is that it provides a powerful simple way to integrate automation in datacentres. Furthermore, doing it agentless, so instead of having to install and agent of the software in every system of the network you want to manage, it only requires that the system have python installed (on Linux hosts) or PowerShell (Windows hosts) and SSH. This also makes possible to automate any kind of datacentre environments whether they are hosted on traditional bare metal servers, virtualization platforms, or in the cloud.
It can be used to automate three types of tasks:
- Provisioning: Setting up the different hosts needed in the infrastructure of your network.
- Configuration management: Changes in the configuration of the hosts in the network. This changes can be at any software layer, in the OS, modifying one already installed applications, implement security policies, …
- Application deployment: Automating the deployment of internally developed applications into the network.
As we stated before one of the key-points of the software is its simplicity, this is accomplished by the use of YAML, a simple configuration language. YAML is a human-readable data-serialization standard that can be used in conjunction with all programming languages and is often used to write configuration files.
Ansible uses YAML to create playbooks, a playbook is a configuration file that provides all the instructions needed to have a host running. These playbooks can be simple such as just creating a user or complex with conditionals and variables.
Ansible playbook example
Once the physical infrastructure is properly connected and the playbooks are ready, the Ansible system structure is also quite simple. There are two types of nodes, the control nodes which are computers, at least one, that runs Ansible and the managed nodes. The software works by connecting to all the managed nodes on a network and then sending them a small program called an Ansible module. Then executes these modules over SSH and removes them when finished.