What Is Ansible?
Ansible is an open-source automation engine, originally released by Michael DeHaan in 2012 and now maintained by Red Hat, that lets you describe the desired state of servers, network devices, and cloud resources in plain YAML files called playbooks. Instead of manually SSH-ing into machines to run commands one by one, you write a playbook once and Ansible applies it consistently across one server or ten thousand.
Cricket analogy: Just as a captain like Rohit Sharma writes a fielding plan before the match rather than shouting instructions ball by ball, a playbook lays out the entire strategy in advance so every player (server) knows its role without live micromanagement.
Why Ansible Exists
Before tools like Ansible, system administrators relied on hand-written shell scripts or manual runbooks to configure servers, which quickly became inconsistent as infrastructure grew and drifted from documented standards. Ansible solves this configuration drift problem through idempotency: running the same playbook twice produces the same end state, because each task checks current state before making a change, only acting when something doesn't already match the declared configuration.
Cricket analogy: Idempotency is like a groundskeeper checking the pitch before every Test match at the MCG and only rolling it if it isn't already at the correct firmness, rather than rolling it repeatedly regardless of condition.
Core Design Principles
Ansible is built around three principles that distinguish it from earlier tools: it is agentless, meaning no persistent software runs on managed nodes; it is push-based, meaning the control node initiates every change rather than waiting for nodes to check in; and it uses simple, human-readable YAML rather than a proprietary domain-specific language, which lowers the barrier for teams to read and audit automation logic.
Cricket analogy: Being agentless is like a commentator like Harsha Bhogle calling a match from the studio using live feeds, without needing a permanently installed device on every player, keeping the setup lightweight.
---
- name: Configure web servers
hosts: webservers
become: true
tasks:
- name: Ensure nginx is installed
ansible.builtin.apt:
name: nginx
state: present
update_cache: true
- name: Ensure nginx is running and enabled
ansible.builtin.service:
name: nginx
state: started
enabled: true
- name: Deploy custom index page
ansible.builtin.copy:
src: files/index.html
dest: /var/www/html/index.html
owner: www-data
group: www-data
mode: '0644'How Ansible Compares
Compared to Puppet and Chef, which require installing a persistent agent on every managed node and typically use Ruby-based DSLs, Ansible needs only SSH access and Python on the target, making it faster to adopt in mixed or legacy environments. Compared to Terraform, which specializes in provisioning cloud infrastructure via declarative state files, Ansible is more general-purpose: it handles provisioning, configuration management, application deployment, and orchestration, though teams often combine Terraform for infrastructure with Ansible for configuration.
Cricket analogy: Choosing Ansible over an agent-based tool is like a franchise picking a freelance physio who travels to any ground versus one who requires a permanent clinic built at every stadium before they can work.
Ansible, Terraform, and Kubernetes are complementary, not competing: a common production pattern is Terraform to provision cloud VMs and networking, Ansible to configure the OS and deploy applications onto those VMs, and Kubernetes to orchestrate containerized workloads on top.
- Ansible is an open-source automation engine using YAML playbooks to declare desired system state.
- It is agentless, requiring only SSH and Python on managed nodes, unlike Puppet or Chef.
- It is push-based: the control node initiates changes rather than nodes polling for instructions.
- Idempotency means re-running a playbook only changes what has actually drifted from the declared state.
- Ansible covers provisioning, configuration management, deployment, and orchestration in one general-purpose tool.
- It is commonly paired with Terraform (provisioning) and Kubernetes (container orchestration) in production stacks.
- Red Hat has maintained Ansible since acquiring it in 2015, alongside the AWX/Ansible Automation Platform ecosystem.
Practice what you learned
1. What does it mean that Ansible is 'agentless'?
2. What property ensures that running the same Ansible playbook twice produces the same end state?
3. Which statement best describes Ansible relative to Terraform?
4. In what format are Ansible playbooks primarily written?
5. Who originally created Ansible, and which company now maintains it?
Was this page helpful?
You May Also Like
Agentless Architecture and SSH
Ansible manages remote systems without installing any persistent software on them, relying entirely on existing SSH connectivity and Python for execution.
Inventory Files Explained
An inventory file tells Ansible which hosts exist and how they're grouped, and can be static (INI or YAML) or generated dynamically from a cloud provider or CMDB.
Installing and Configuring Ansible
Ansible is installed via pip or a system package manager on the control node, then tuned through the layered ansible.cfg configuration file.
Ad-Hoc Commands
Ad-hoc commands run a single Ansible module against a set of hosts directly from the command line, ideal for quick one-off tasks that don't warrant a full playbook.
Related Reading
Related Study Notes in DevOps
Browse all study notesNginx Study Notes
DevOps · 30 topics
DevOpsAdvanced Kubernetes Study Notes
Kubernetes · 30 topics
DevOpsAdvanced Bash Scripting Study Notes
Bash · 30 topics
DevOpsApache Kafka Study Notes
Kafka · 30 topics
DevOpsDocker & Kubernetes Study Notes
YAML · 40 topics
DevOpsCI/CD Tools & Pipelines Study Notes
YAML · 37 topics