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 to upgrade 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 current released version of Ansible (2.5) and also some development version features. For recent features, we note in each section the version of Ansible where the feature was added.
Ansible releases a new major release of Ansible approximately every two months. 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.
-
User Guide
- Ansible Quickstart
- Getting Started
- Working with Command Line Tools
- Introduction To Ad-Hoc Commands
- Working with Inventory
- Working With Dynamic Inventory
- Working With Playbooks
- Understanding Privilege Escalation
- Ansible Vault
- Working with Patterns
- Working With Modules
- Working With Plugins
- BSD Support
- Windows Guides
-
Developer Guide
- Ansible Architecture
- Developing Modules
- Ansible Module Architecture
- Appendix: Module Utilities
- Developing Plugins
- Developing Dynamic Inventory Sources
- Developing the Ansible Core Engine
- Ansible and Python 3
- Python API
- Rebasing a Pull Request
- Testing Ansible
- Repo Merge
- Release and maintenance
- Committers Guidelines (for people with commit rights to Ansible on GitHub)
- Ansible Style Guide
- Cisco ACI Guide
- Amazon Web Services Guide
- Microsoft Azure Guide
- CloudStack Cloud Guide
- Getting Started with Docker
- Google Cloud Platform Guide
- Using Ansible with the Packet host
- Rackspace Cloud Guide
- Continuous Delivery and Rolling Upgrades
- Using Vagrant and Ansible
- Getting Started with VMware
-
Module Index
- All modules
- Cloud modules
- Clustering modules
- Commands modules
- Crypto modules
- Database modules
- Files modules
- Identity modules
- Inventory modules
- Messaging modules
- Monitoring modules
- Net Tools modules
- Network modules
- Notification modules
- Packaging modules
- Remote Management modules
- Source Control modules
- Storage modules
- System modules
- Utilities modules
- Web Infrastructure modules
- Windows modules
- Playbook Keywords
- Ansible Galaxy
- Return Values
- Ansible Configuration Settings
- YAML Syntax
- Python 3 Support
- Release and maintenance
- Testing Strategies
-
Sanity Tests
- Sanity Tests » ansible-doc
- Sanity Tests » azure-requirements
- Sanity Tests » boilerplate
- Sanity Tests » compile
- Sanity Tests » configure-remoting-ps1
- Sanity Tests » empty-init
- Sanity Tests » import
- Sanity Tests » integration-aliases
- Sanity Tests » line-endings
- Sanity Tests » no-assert
- Sanity Tests » no-basestring
- Sanity Tests » no-dict-iteritems
- Sanity Tests » no-dict-iterkeys
- Sanity Tests » no-dict-itervalues
- Sanity Tests » no-get-exception
- Sanity Tests » no-illegal-filenames
- Sanity Tests » no-smart-quotes
- Sanity Tests » no-tests-as-filters
- Sanity Tests » no-underscore-variable
- Sanity Tests » no-unicode_literals
- Sanity Tests » pep8
- Sanity Tests » pslint
- Sanity Tests » pylint
- Sanity Tests » replace-urlopen
- Sanity Tests » required-and-default-attributes
- Sanity Tests » rstcheck
- Sanity Tests » sanity-docs
- Sanity Tests » shebang
- Sanity Tests » shellcheck
- Sanity Tests » symlinks
- Sanity Tests » test-constraints
- Sanity Tests » use-argspec-type-path
- Sanity Tests » use-compat-six
- Sanity Tests » validate-modules
- Sanity Tests » yamllint
-
Frequently Asked Questions
- How can I set the PATH or any other environment variable for a task or entire playbook?
- How do I handle different machines needing different user accounts or ports to log in with?
- How do I get ansible to reuse connections, enable Kerberized SSH, or have Ansible pay attention to my local SSH config file?
- How do I configure a jump host to access servers that I have no direct access to?
- How do I speed up management inside EC2?
- How do I handle python not having a Python interpreter at /usr/bin/python on a remote machine?
- Common Platform Issues
- What is the best way to make content reusable/redistributable?
- Where does the configuration file live and what can I configure in it?
- How do I disable cowsay?
- How do I see a list of all of the ansible_ variables?
- How do I see all the inventory vars defined for my host?
- How do I loop over a list of hosts in a group, inside of a template?
- How do I access a variable name programmatically?
- How do I access a variable of the first host in a group?
- How do I copy files recursively onto a target host?
- How do I access shell environment variables?
- How do I generate crypted passwords for the user module?
- Ansible supports dot notation and array notation for variables. Which notation should I use?
- Can I get training on Ansible?
- Is there a web interface / REST API / etc?
- How do I submit a change to the documentation?
- How do I keep secret data in my playbook?
- When should I use {{ }}? Also, how to interpolate variables or dynamic variable names
- Why don’t you ship in X format?
- I don’t see my question here
- Glossary
- Ansible Tower
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/index.html