Quiz Entry - updated: 2026.10.22
What does it mean that Ansible is push-based, and how does that differ from pull-based tools?
In Ansible the central control node starts the communication and pushes configuration to the nodes. In pull-based tools, an agent on each node regularly fetches its configuration from a server.
* With push, changes apply when the admin runs the playbook; with pull, at each agent's next check-in. *
| Push (Ansible) | Pull (e.g. Puppet, Chef in their default setup) | |
|---|---|---|
| Who starts the connection? | The control node | The agent on each managed node |
| Software on the node | None (no client) | A permanently running agent |
| When changes apply | When you run the playbook | On the agent's next check-in (e.g. every 30 min) |
With push you control the timing: changes happen when the admin runs the automation, which suits deployments and orchestrated sequences ("first database, then app servers"). Pull scales well for continuously enforcing state on very many nodes, but needs an agent everywhere.
Go deeper:
ansible-pull (official docs) — Ansible's own tool that inverts push into pull, which shows the difference concretely.
Puppet (software) (Wikipedia) — the agent-based pull model, where agents fetch configuration from the server.