Favicon of ansible

ansible

An agentless IT automation system for configuration management, application deployment, cloud provisioning, and multi-node orchestration.

Ansible is an IT automation system for configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Its defining design choice is being agentless: it manages remote machines over the existing SSH daemon rather than requiring you to install and maintain a separate agent on every host. It's aimed at sysadmins, platform engineers, and anyone managing more than a handful of machines who wants changes described in a language that's readable by both humans and machines, rather than scattered across ad-hoc scripts.

Key features

  • Agentless architecture: manages machines over the existing SSH daemon, avoiding custom agents and extra open ports, and it can manage a new remote machine instantly without bootstrapping any software onto it first.
  • Human-and-machine-readable playbooks: infrastructure and automation are described in a language designed to be easy for people to read, review, and audit as well as for Ansible to execute.
  • Parallel execution: manages many machines quickly and in parallel rather than one at a time.
  • Zero-downtime rolling updates: built to handle complex changes like rolling updates behind load balancers without an outage.
  • Module development in any language: modules aren't limited to Python; Ansible allows module development in any dynamic language.
  • Usable as non-root: designed to work without requiring root access on managed machines.
  • Security-focused design: emphasizes easy auditability, review, and rewriting of automation content as a first-class design goal, not an afterthought.
  • Clear branch and release model: the devel branch tracks active development while stable-2.X branches correspond to stable releases, with a published release and maintenance schedule for active branches.
  • CII Best Practices certified: Ansible carries the Core Infrastructure Initiative Best Practices badge, reflecting a documented level of project security and maintenance practice.

Ideal use cases

Ansible fits configuration management across a fleet of servers (making sure packages, users, and config files are in the state you declare), application deployment pipelines, cloud provisioning tasks, and network device automation, all from a control node without installing anything persistent on the managed machines. Its zero-downtime rolling update support also makes it a common choice for orchestrating updates behind load balancers where availability during the change matters.

It's less suited to very large-scale, continuously-reconciling infrastructure where a pull-based or agent-based model (like Kubernetes controllers) is a better architectural fit, since Ansible runs in a push-based, run-to-completion model rather than continuously enforcing state in the background. If your automation needs to react to live cluster state moment-to-moment rather than run defined playbooks on demand or on a schedule, that's outside what Ansible is designed to do.

Support and discussion happen through the Ansible forum rather than a single catch-all channel: tagged posts cover general help, ansible-core specifics, and playbook questions, there are dedicated social spaces for meeting other users, and a Bullhorn newsletter carries release announcements and important changes for anyone who doesn't want to watch the forum constantly.

Installation

Install a released version with pip or your platform's package manager:

pip install ansible-core

The README points to the full installation guide (covering platform-specific package managers) for details, since exact commands vary by OS and distribution.

Power users and developers who want the latest features and fixes can run the devel branch directly, though it's less stable than a released version and more likely to include breaking changes:

git clone https://github.com/ansible/ansible.git
cd ansible
# checkout the devel branch and follow the dev environment setup guide

To open a pull request, create a branch based on devel and set up a development environment following the guidance in Ansible's Developer Guide, which also documents coding guidelines and conventions for contributing new modules.

Tags:

Frequently asked questions

Share:

Stars
69.4K
Forks
24.1K
Last commit
19 hours ago
Repository age
14 years
License
GPL-3.0
Self-hosted
No
Activity score
90/100
View Repository
Built with:

Similar to ansible

Favicon

 

  
  
Favicon

 

  
  
Favicon