Introduction to Ansible

Many configuration management tools are available in the market.

Mainly following config tools plays major role in IT industry

1)  Puppet

2) Chef

3) Ansible

4) SaltStack

Puppet and Chef are agent based and developed using Ruby

SaltStack is developed using Python and it is having both Agent based and agent less management.

Ansible is agent less configuration management tool developed using python.

Agent less means, no need to install any additional software/packages of Ansible in managed nodes.

In Ansible world, servers are classified in two categories as below,

  • Controller Machine,
  • Managed Nodes

Controller Machine:

Controller Machine is the server where Ansible product is installed and it will control the clients/Managed Nodes.

Managed Nodes:

These are servers/Machines which are controlled/managed by the Controller Machine. In Managed node, no need to install any ansible packages.

Requirements for Ansible:

1) Control Machine

It should be the Linux machine and installed with Python 2 (versions 2.6 or 2.7) or Python 3 (versions 3.5 and higher)

Note: Currently Windows machine isn’t supported as the control machine.

2) Managed Nodes

Managed nodes are any machine/server/device with SSH Enabled and Python 2.6 or later

As a pre-requisite, we need user ID in managed nodes with either passwordless ssh (key based) authentication setup or password based authentication.

And sudo access is required for that user id in managed nodes.


Ansible Terminologies:


It is a YAML file that describe the desired state of an IT infrastructure


It is a piece of code written in Python, PowerShell, or any other language to perform the task. Ansible has hundreds of modules to do our tasks.


It is an INI file that contains list of hosts/servers which you are managing via Ansible. It can be static or dynamic inventory file.


It is a piece of code that you can add to Ansible to extend it


It is a Web based user interface to manage Ansible engine