Skip to main content

What is Ansible

Ansible is a popular open-source software tool that provides automation, configuration management, and orchestration functionalities. It's designed to help system administrators and developers coordinate and control a large number of servers from a central location.

Ansible operates based on the principle of 'Infrastructure as Code'. This means that you can write scripts in Ansible's language (YAML) that describe the state of your systems. Once these scripts are run, Ansible ensures that your systems match the described state. Isn't it amazing?

How Ansible Works

Ansible works by connecting to your nodes (servers) on your network and then pushing out small programs known as "Ansible Modules" to them. These programs are written to be resource models of the desired state of the system. Ansible then executes these modules over SSH and removes them when finished.

The controlling machine, where Ansible is installed, is what controls the entirety of the operations being carried out on the nodes.

Key Features of Ansible

Here are some of the key features that make Ansible a preferred choice for many organizations:

  • Simple to understand: Ansible uses YAML, a simple language, which uses common English words. It also has a straightforward setup process.

  • Agentless: Unlike other configuration management tools, Ansible doesn't require any agent software on the nodes it manages.

  • Flexible: Ansible can adapt to any environment, irrespective of how it’s structured, what it does, or what software it runs.

  • Powerful & Efficient: Ansible's powerful automation capabilities can dramatically decrease the effort required to manage and configure your systems.

  • Secure: All communications are secured by existing SSH (for Unix-based systems) or Remote PowerShell connections (for Windows systems).

Ansible Architecture

Ansible's architecture is quite simple and it consists of two types of servers:

  • Control Node: The controlling machine where Ansible is installed and runs.
  • Managed Nodes: The servers that are being managed by the control node.

There are also some important components within Ansible's architecture:

  • Inventory: A list of managed nodes. An inventory file is also sometimes called a hostfile.
  • Playbooks: Ansible’s configuration, deployment, and orchestration language.
  • Modules: These are the units of code Ansible executes. Each module has a particular use, from administering users on a specific type of database to managing VLAN interfaces on a specific type of network device.
  • Plugins: Pieces of code that augment Ansible's core functionality.
  • APIs: Ansible can be extended using its APIs. Developers can write custom plugins, modules, or inventory sources.

Why Use Ansible?

Ansible can help you with configuration management, application deployment, task automation, and even IT orchestration. You can set up your servers, deploy your applications, and a lot more.

One of the best things about Ansible is that you don’t need to install any software on the nodes that you are managing. This means Ansible is hassle-free to use and manage!


By the end of this introduction, you should understand what Ansible is, how it works, its architecture, and why you would want to use it. In the upcoming articles, we will dive deeper into Ansible's concepts and start writing some playbooks. Stay tuned!