What Is Ansible?
Ansible is a software solution that provides the ability to automate software deployment and configuration management. It does this through using existing technologies such as SSH and remote PowerShell to communicate and issue commands to remote systems in your environment.
Where Does It Come From?
Ansible was created by Michael DeHann who also created Cobbler (a Linux based for Linux system, deployment stack). An initial release was available in February of 2016. The company Ansible Inc was setup to provide commercial support to adopters. Ansible Inc was aquired by RedHat in 2015.
What Is The Architecture?
That’s the best bit! The architecture is really simple. You have controlling machines (Ansible Controllers) and that is it. You often hear the terminology ‘Nodes‘ as well, but this refers to the systems you want to manage. There is no seperate database server requirement or webserver requirement. The Ansible stack can be installed in a single command (including its prerequisites) on a RHel based system.
What About The Node Agent?
There isn’t one! Unlike other configuration management solutions such as Puppet or Chef that require an ‘agent’ to be installed on the nodes to enable management, Ansible doesn’t have one. Ansible relies on using SSH (for Linux systems) and Remote Powershell (for Windows systems) to perform remote configuration management operations.
I Need To Be Able To Program Though, Right?
Nope! Not really. Although Ansible relies heavily on the popular Python language, there are hundreds of ‘Modules’ to help you get started and perform lots of common configuration. Yes, you can write your own modules (ok, so now you need to be able to program) using languages such as Python, Ruby or Bash.
Is There A GUI?
No. The open source free version is managed via a Cli, there is no GUI.
What Are These Playbook Things?
Playbooks are files that document configuration and deployment items. A playbook can contain multiple items (such as install Apache, deploy a website, configure firewall rule for access etc…) and is mapped to one or more Nodes that are known to the Ansible Inventory.
Wait.. Ansible Inventory?
You provide one or more inventory files. Each inventory file lists nodes that you want to manage and configure. Nodes can be ‘grouped’ logically. For example, you can have a group of nodes known as webservers. You create these inventory files manually or use a technique where information can be pulled from external systems to create a dynamic inventory script.
What About My Cloud Integrated Servces?
Ansible can integrate with multiple cloud systems such as AWS, Azure, VMware, Google Cloud and a multitude of others.