Ansible Documentation
About Ansible
Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
Ansible’s main goals are simplicity and ease-of-use. It also has a strong focus on security and reliability, featuring a minimum of moving parts, usage of OpenSSH for transport (with other transports and pull modes as alternatives), and a language that is designed around auditability by humans–even those not familiar with the program.
We believe simplicity is relevant to all sizes of environments, so we design for busy users of all types: developers, sysadmins, release engineers, IT managers, and everyone in between. Ansible is appropriate for managing all environments, from small setups with a handful of instances to enterprise environments with many thousands of instances.
Ansible manages machines in an agent-less manner. There is never a question of how toupgrade remote daemons or the problem of not being able to manage systems because daemons are uninstalled. Because OpenSSH is one of the most peer-reviewed open source components, security exposure is greatly reduced. Ansible is decentralized–it relies on your existing OS credentials to control access to remote machines. If needed, Ansible can easily connect with Kerberos, LDAP, and other centralized authentication management systems.
This documentation covers the version of Ansible noted in the upper left corner of this page. We maintain multiple versions of Ansible and of the documentation, so please be sure you are using the version of the documentation that covers the version of Ansible you’re using. For recent features, we note the version of Ansible where the feature was added.
Ansible releases a new major release of Ansible approximately three to four times per year. The core application evolves somewhat conservatively, valuing simplicity in language design and setup. However, the community around new modules and plugins being developed and contributed moves very quickly, adding many new modules in each release.
Installation, Upgrade & Configuration
Using Ansible
- User Guide
- Ansible Quickstart Guide
- Ansible concepts
- Getting Started
- How to build your inventory
- Working with dynamic inventory
- Patterns: targeting hosts and groups
- Introduction to ad-hoc commands
- Connection methods and details
- Working with command line tools
- Working With Playbooks
- Understanding privilege escalation: become
- Ansible Vault
- Working With Modules
- Working With Plugins
- Ansible and BSD
- Windows Guides
- Using collections
Contributing to Ansible
Extending Ansible
- Developer Guide
- Adding modules and plugins locally
- Should you develop a module?
- Ansible module development: getting started
- Contributing your module to Ansible
- Conventions, tips, and pitfalls
- Ansible and Python 3
- Debugging modules
- Module format and documentation
- Windows module development walkthrough
- Developing Cisco ACI modules
- Guidelines for Ansible Amazon AWS module development
- OpenStack Ansible Modules
- oVirt Ansible Modules
- Guidelines for VMware module development
- Information for submitting a group of modules
- Testing Ansible
- The lifecycle of an Ansible module
- Developing plugins
- Developing dynamic inventory
- Developing the Ansible Core Engine
- Ansible module architecture
- Python API
- Rebasing a pull request
- Using and Developing Module Utilities
- Developing collections
- Collection Galaxy metadata structure
- Ansible architecture
Common Ansible Scenarios
Ansible for Network Automation
Ansible Galaxy
Reference & Appendices
- Module Index
- Playbook Keywords
- Return Values
- Ansible Configuration Settings
- Controlling how Ansible behaves: precedence rules
- YAML Syntax
- Python 3 Support
- Interpreter Discovery
- Release and maintenance
- Testing Strategies
- Sanity Tests
- Frequently Asked Questions
- Glossary
- Ansible Reference: Module Utilities
- Special Variables
- Red Hat Ansible Tower
- Logging Ansible output
Roadmaps