Do you find yourself configuring many servers or hosting plans with similar sets of software packages, configuration files, and deploying full software stacks? Although Ansible is the most widely used automation engine, there are a number of configuration and orchestration solutions available. Read through this article to learn about getting started with Ansible.
What is Ansible?
Ansible is a simple, yet powerful automation engine that allows you to define and manage complex environments by defining your infrastructure in templates that reflect your workflow. By doing so, this provides greater velocity in terms of completing tasks without requiring special development skills, all in a human-readable format.
A really handy feature is that it doesn’t require any special configuration to run tasks against a remote host. All you need is SSH access and Python to run a playbook! Next, we’ll review more about how this works in practice.
General Ansible Terminology
Before we dive into Ansible, it is best to learn about these terms that are common to all uses of Ansible and lay the foundation on some of the best practices for using Ansible.
Term | Description |
Control Node | The host on which you use Ansible to execute tasks on the targeted nodes |
Managed Node | A host that is configured by the Ansible control node |
Host Inventory | A list of nodes that Ansible will target. The Ansible Inventory file lists all external hosts you’ll deploy to and their assigned groups. |
Playbook | A set of repeatable tasks usually built into a collection of roles for more complex configurations. |
Role | A set of tasks and variables usually geared to accomplish a specific task such as installing and configuring a service |
Idempotency | A task that can be run multiple times and produce the same result |
How does Ansible Work?
Ansible connects to nodes defined in your inventory and sends a small program in the form of an “Ansible Module” to perform some desired actions. These modules are executed via SSH by default, and are removed once they have finished running. The end result of creating a playbook is that the actions that are performed are predictable and reusable, meaning running a playbook more than once will result in only required changes being completed.
Compared to other configuration management platforms or tools, Ansible does not require you to dedicate a server for storing or running modules. You won’t have to configure or run a daemon, or maintain a database. This is referred to Ansible being “Agent-less” compared to other configuration management ecosystems.
What Should I Know Before Trying Ansible?
Ansible is a very simple IT automation platform and very easy to learn, but having a knowledge of these items below will greatly help.
Linux
Since Ansible is meant to automate tasks on Linux servers, general systems administrative understanding of Linux will greatly help your success.
SSH
Ansible requires SSH to connect to the servers you want to perform tasks on. Understanding how SSH work and how to gain SSH access to your nodes is necessary to be able to use Ansible.
YAML
Ansible Playbooks and Roles are written in YAML. This is a human-readable language that is commonly used in configuration files or in applications that store and transmit data. For a basic overview, read the official Ansible documentation on YAML.
How to Install Ansible
There are many ways you can install Ansible depending on your preferred workflow and operating system.
We offer an InMotion Ansible Control Node free with our Cloud Server and Dedicated Bare Metal Servers that is pre-built with Ansible that you can use to deploy your hosts from. Or you can also install Ansible manually.