Skip to main content
Ansible uses a simple two-tier architecture: a control node that you operate from, and managed nodes that Ansible configures over SSH.

Control node

The control node is the machine you run Ansible from. It is responsible for:
  • Reading the inventory to know which servers to target
  • Executing playbooks that describe the tasks to apply
  • Applying roles that bundle related playbooks together

Inventory

The list of managed nodes (servers) that Ansible will target. You can group servers and assign variables per group.

Playbooks

YAML files that define the tasks (instructions) to be applied to the managed nodes in order.

Roles

Collections of playbooks and related files that are organised for reuse and sharing across projects.

Managed nodes

Managed nodes are the servers controlled by the control node. They do not require any Ansible software — Ansible connects to them over SSH and executes tasks directly.
Ansible requires Python to be installed on each managed node so that its modules can execute remotely.

How it fits together

1

Define your inventory

List the servers you want to manage, either as a static file or a dynamic inventory source.
2

Write a playbook

Describe the desired state of your servers using YAML tasks. Group related tasks into roles for reuse.
3

Run the playbook

Execute ansible-playbook playbook.yml from the control node. Ansible connects to each managed node via SSH and applies the tasks.

Build docs developers (and LLMs) love