Ansible
Ansible is an open-source IT automation tool used for:
| Use Case |
Description |
| Configuration Management |
Install packages, manage files, services |
| Application Deployment |
Deploy code across multiple servers |
| Orchestration |
Coordinate complex multi-step workflows |
| Provisioning |
Set up infrastructure (VMs, cloud resources) |
Key Characteristics
- Agentless — No software needed on managed nodes (uses SSH)
- Idempotent — Running a task twice gives the same result
- YAML-based — Playbooks are human-readable
- Push-based — Control machine pushes config to nodes
How Ansible Works
Control Node (your machine)
│
│ SSH + Python
▼
┌───────────────────────────────────┐
│ Managed Nodes │
│ node-1 node-2 node-3 ... │
└───────────────────────────────────┘
- Ansible is installed only on the control node
- Managed nodes need only SSH and Python installed
- No agents, no daemons on remote machines
3. Ansible Architecture
┌─────────────────────────────────────────┐
│ CONTROL NODE │
│ │
│ ┌─────────┐ ┌──────────┐ │
│ │Inventory│ │ Playbook │ │
│ │ File │ │ (YAML) │ │
│ └────┬────┘ └────┬─────┘ │
│ └──────┬───────┘ │
│ ┌───▼────┐ │
│ │Ansible │ │
│ │ Core │ │
│ └───┬────┘ │
└─────────────┼───────────────────────────┘
│ SSH
┌──────────┼──────────┐
▼ ▼ ▼
node-1 node-2 node-3
(Python) (Python) (Python)
| Component |
Role |
| Control Node |
Machine where Ansible is installed and run |
| Managed Nodes |
Remote machines being configured |
| Inventory |
List of managed node IPs/hostnames |
| Playbook |
YAML file describing automation tasks |
| Module |
Unit of work Ansible executes (e.g., ping, apt, copy) |