Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain. Automate everything from code deployment to network configuration to cloud management, in a language that approaches plain English, using SSH, with no agents to install on remote systems.


PyPI version Docs badge Chat badge Build Status Ansible Code of Conduct Ansible mailing lists Repository License Ansible CII Best Practices certification


Ansible is a radically simple IT automation system. It handles configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible website.

Design Principles

  • Have a dead-simple setup process with a minimal learning curve.
  • Manage machines very quickly and in parallel.
  • Avoid custom-agents and additional open ports, be agentless by leveraging the existing SSH daemon.
  • Describe infrastructure in a language that is both machine and human friendly.
  • Focus on security and easy auditability/review/rewriting of content.
  • Manage new remote machines instantly, without bootstrapping any software.
  • Allow module development in any dynamic language, not just Python.
  • Be usable as non-root.
  • Be the easiest IT automation system to use, ever.

Use Ansible

You can install a released version of Ansible with pip or a package manager. See our installation guide for details on installing Ansible on a variety of platforms.

Red Hat offers supported builds of Ansible Engine.

Power users and developers can run the devel branch, which has the latest features and fixes, directly. Although it is reasonably stable, you are more likely to encounter breaking changes when running the devel branch. We recommend getting involved in the Ansible community if you want to run the devel branch.

Get Involved

  • Read Community Information for all kinds of ways to contribute to and interact with the project, including mailing list information and how to submit bug reports and code to Ansible.
  • Join a Working Group, an organized community devoted to a specific technology domain or platform.
  • Submit a proposed code update through a pull request to the devel branch.
  • Talk to us before making larger changes to avoid duplicate efforts. This not only helps everyone know what is going on, but it also helps save time and effort if we decide some changes are needed.
  • For a list of email lists, IRC channels and Working Groups, see the Communication page

Coding Guidelines

We document our Coding Guidelines in the Developer Guide. We particularly suggest you review:

Branch Info

  • The devel branch corresponds to the release actively under development.
  • The stable-2.X branches correspond to stable releases.
  • Create a branch based on devel and set up a dev environment if you want to open a PR.
  • See the Ansible release and maintenance page for information about active branches.


Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.7, 2.8). The Ansible Roadmap page details what is planned and how to influence the roadmap.


Ansible was created by Michael DeHaan and has contributions from over 5000 users (and growing). Thanks everyone!

Ansible is sponsored by Red Hat, Inc.


GNU General Public License v3.0 or later

See COPYING to see the full text.

  • test: Unit tests for validation methods

    test: Unit tests for validation methods

    • check_required_one_of()
    • check_required_by()
    • check_required_if()
    • check_missing_parameters()

    Fixes: #55994

    Signed-off-by: Abhijeet Kasurde [email protected]

    • Bugfix Pull Request

    changelogs/fragments/55994_testcases.yml lib/ansible/module_utils/common/ test/units/module_utils/common/validation/ test/units/module_utils/common/validation/ test/units/module_utils/common/validation/ test/units/module_utils/common/validation/

    affects_2.12 bug needs_revision needs_triage support:core 
    opened by Akasurde 0
  • Clarify Vault password client naming requirements

    Clarify Vault password client naming requirements

    opened by andreaso 0
  • Bump sphinx_ansible_theme to v0.7.0+

    Bump sphinx_ansible_theme to v0.7.0+


    This version relies on an external lib implementing lexers and styles. That lib pulls in the proper Pygments version so this patch also drops it from direct requirements.

    • Docs Pull Request




    affects_2.12 core_review docs docs_only needs_triage small_patch support:core 
    opened by webknjaz 1
  • [2.11] Use `sphinx_ansible_theme` Sphinx theme in docs

    [2.11] Use `sphinx_ansible_theme` Sphinx theme in docs


    Backports #74318 and cleanup fix #75056 to stable-2.11.

    This allows to use the new theme with the current ansible-core 2.11 and Ansible 4 docsites right now, instead of having to wait until the end of this year. :)

    • Docs Pull Request


    affects_2.11 backport core_review docs needs_triage support:core test 
    opened by felixfontein 2
  • Statement about role dependencies in includes and imports

    Statement about role dependencies in includes and imports

    Summary says:

    Ansible does not execute role dependencies when you include or import a role. You must use the roles keyword if you want Ansible to execute role dependencies.

    But both include_role and import_role do execute role's dependencies (and load their variables).

    Issue Type

    Documentation Report

    Component Name


    Ansible Version

    $ ansible --version
    ansible 2.11.1
    (also tested in 2.9, 2.10)


    $ ansible-config dump --only-changed

    OS / Environment


    Additional Information

    Documentation seems to be wrong on this statement. But nonetheless it might be a good concept if implemented for example as ignore_dependencies parameter for import_role and include_role.

    Code of Conduct

    • [X] I agree to follow the Ansible Code of Conduct
    affects_2.11 docs needs_triage support:core 
    opened by Vladimir-csp 1
  • Semantic markup for module documentation

    Semantic markup for module documentation


    This issue tracks the various discussions and PRs related to semantic markup for module documentation. The topic has been under discussion for six months and is on the DaWGs agenda for 22 June 2021.

    Semantic markup would control the look of standard documentation elements with macros that refer to the names of those elements (for example, O(.) for options and V(.) for values) instead of macros that refer to the formatting directly (for example, C(.) for code or B(.) for bold).

    We can implement semantic markup in our module documentation with support for legacy formatting. However, moving to semantic markup would ideally mean updating all existing documentation to use the new standard. Moving forward, semantic markup would be easier to remember and use correctly. It would also allow us to change the look of those elements by changing the publication process without changing the documentation strings in the module code (again).

    Work involved includes:

    • [ ] agreeing on the macro names/syntax (for example, is it O(.) for options or P(.) for parameters?, and so on)
    • [ ] agreeing on the desired formatting/output for each macro (should options be displayed in italics, in bold, in code, and so on)
    • [ ] updating the publication pipeline to support semantic markup macros
    • [ ] documenting the new system
    • [ ] updating the existing docs to use semantic markup macros

    Current related PRs:

    Antsibull code update: ansible-doc code update: Documentation update: Collection docs update:


    Issue Type

    Documentation Report

    Component Name


    Ansible Version




    OS / Environment


    Additional Information


    Code of Conduct

    • [X] I agree to follow the Ansible Code of Conduct
    affects_2.12 docs docsite needs_triage networking support:core 
    opened by acozine 1
  • The stat module will not detect the file size of the sparse file

    The stat module will not detect the file size of the sparse file


    The stat module does not display the file size correctly. When Oracle creates a TEMPFILE then by default it can use "sparse" disk space allocation for files on OS filesystems. "sparse" file allocaction means the file creation can be fast BUT the actual underlying disk space for the file is not obtained until needed.

    eg: Just issue a command like following create temporary tablespace tempTC tempfile 'temptc1.f' size 10M; Then check the size of the file at OS level. eg: cd $ORACLE_HOME/dbs dd if=temptc1.f of=x bs=8192 du temptc1.f x ^ Notice temptc1.f uses less space than copy "x" as temptc1.f is sparse.


    Issue Type

    Bug Report

    Component Name

    Ansible Version

    $ ansible --version
    ansible-playbook 2.9.21
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/home/mvp_dev/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible-playbook
      python version = 2.7.5 (default, Aug 13 2020, 02:51:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]


    $ ansible-config dump --only-changed

    OS / Environment

    [email protected]$ uname -a

    Linux hostname 3.10.0-1160.25.1.el7.x86_64 #1 SMP Tue Apr 13 18:55:45 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux

    Steps to Reproduce

    • hosts: all gather_facts: False tasks:
      • stat: path: "/oradata/testdb/temp03.dbf"

    Expected Results

    Different parameters, different results du -b temp03.dbf 1073750016 temp03.dbf du -h temp03.dbf 1.0M temp03.dbf

    wanted to get 1048576

    Actual Results

    Using /etc/ansible/ansible.cfg as config file
    PLAY [all] ***************************************************************************************************************************************************
    TASK [stat] ****************************************************************************************************************************************************************
    ok: [hostname] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "stat": {"atime": 1624028503.5934155, "attr_flags": "e", "attributes": ["extents"], "block_size": 4096, "blocks": 2048, "charset": "binary", "checksum": "abe2d0b969befaf4146186d505b1e8029a6877ef", "ctime": 1624028503.5764146, "dev": 64773, "device_type": 0, "executable": false, "exists": true, "gid": 10004, "gr_name": "oinstall", "inode": 2097166, "isblk": false, "ischr": false, "isdir": false, "isfifo": false, "isgid": false, "islnk": false, "isreg": true, "issock": false, "isuid": false, "mimetype": "application/octet-stream", "mode": "0640", "mtime": 1624028503.5764146, "nlink": 1, "path": "/oradata/testdb/temp03.dbf", "pw_name": "oracle", "readable": true, "rgrp": true, "roth": false, "rusr": true, "size": 1073750016, "uid": 101, "version": "1858513124", "wgrp": false, "woth": false, "writeable": true, "wusr": true, "xgrp": false, "xoth": false, "xusr": false}}
    PLAY RECAP *****************************************************************************************************************************************************************
    hostname : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

    Code of Conduct

    • [X] I agree to follow the Ansible Code of Conduct
    affects_2.9 bug module needs_triage support:core 
    opened by aUxbl4 1
  • [bp-2.10] get_url - Allow checksum file to be local file://

    [bp-2.10] get_url - Allow checksum file to be local file://


    This would be a partial solution for #69364 in that the SHASUMS file can be downloaded and gpg verified but then used from the downloaded location to verify the get_url's file.

    • Make checksum url parsing more explicit

    Use urlsplit to test if the checksum string has a (currently tested and) supported url scheme.

    • Fix whitespace
    • Changelog fragment
    • Added tests
    • Fix typo in test setup

    (cherry picked from commit eb8b3a8479ec82ad622f86ac46f3e9cc083952b8)

    • Bugfix Pull Request

    changelogs/fragments/71205_get_url_allow_checksum_file_url.yml lib/ansible/modules/ test/integration/targets/get_url/tasks/main.yml

    affects_2.10 backport bug core_review module needs_triage support:core 
    opened by Akasurde 0
  • Update plugin docs

    Update plugin docs


    Closes #73327 Supersedes #74769

    Adds a page for every plugin type, adds cross-linking to multiple related topics, edits existing plugin pages for style, etc.

    • Docs Pull Request

    affects_2.12 core_review docs docs_only needs_triage new_plugin support:core 
    opened by acozine 1
  • Change interpreter discovery defaults to silently prefer Python 3

    Change interpreter discovery defaults to silently prefer Python 3


    Change default interpreter discovery behavior to silently prefer Python 3.

    • Feature Pull Request

    lib/ansible/config/base.yml lib/ansible/executor/


    Would this be a good time to allow overriding the default values of INTERPRETER_PYTHON_FALLBACK and/or INTERPRETER_PYTHON_DISTRO_MAP? I cannot think of a way this could be exploited.

    WIP affects_2.12 docs feature needs_triage support:core 
    opened by samdoran 0
A modern Docker LAMP stack and MEAN stack for local development

The Devilbox Usage | Architecture | Community | Features | Intranet | Screenshots | Contributing | Logos | License Support for valid https out of the

cytopia 3.4k Jun 15, 2021
Protobox is vagrant web GUI

Protobox Protobox is a layer on top of vagrant and a web GUI to setup virtual machines for web development. A single YAML document controls everything

protobox 352 Feb 15, 2021
Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:

Latest Salt Documentation Open an issue (bug report, feature request, etc.) Salt is the world’s fastest, most intelligent and scalable automation engi

SaltStack 11.8k Jun 18, 2021
Stacker - The environment for local web development, ready for use.

Introduction English 简体中文 Why stacker? Stacker - This is a local environment for web development with everything you need. What is its benefit? You do

Nikolay Stepanov 356 Feb 9, 2021
A development tool for all your projects that is fast, easy, powerful and liberating

Lando A Liberating Dev Tool For All Your Projects The local development and DevOps tool trusted by professional developers across the galaxy. Free you

Lando 2.9k Jun 13, 2021
Phansible - generate Vagrant + Ansible dev environments for PHP

Phansible Phansible is a simple generator for Vagrant projects, targeting PHP development environments, using Ansible as Provisioner. It was inspired

phansible 637 May 5, 2021
Up and running with small Docker environments

Vessel Up and running with small Docker dev environments. Documentation Full documentation can be found at Install

Shipping Docker 1k May 27, 2021
Vagrant is a tool for building and distributing development environments.

Vagrant Website: Source: HashiCorp Discuss:

HashiCorp 22.1k Jun 14, 2021
Server automation framework and application

Puppet Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks (such as adding users, inst

Puppet 6.2k Jun 15, 2021
Monitor for any changes in your php application and automatically restart it (suitable for async apps).

PHP-watcher PHP-watcher helps develop long-running PHP applications by automatically restarting them when file changes in the directory are detected.

Sergey Zhuk 317 Jun 7, 2021
Full PHP development environment for Docker.

Full PHP development environment based on Docker. Use Docker First - Learn About It Later! Join Us Awesome People Laradock is an MIT-licensed open sou

laradock 10.6k Jun 13, 2021
Vagrant/Puppet GUI

PuPHPet PuPHPet - A simple GUI to set up virtual machines for PHP development What? PuPHPet is a web application that allows you to easily and quickly

PuPHPet 3.9k Jun 3, 2021
Dockerized version of Laravel Homestead

laraedit-docker Dockerized version of Laravel Homestead Documentation For now you can check out the wiki for details on using the container. Once the

LaraEdit 441 Jun 7, 2021
Symfony5 template w/ Docker config

Symfony5 w/ Docker config A project template in the following configuration: Symfony 5.2 PHP8 PostgreSQL 13.2 Separate Docker containers for Nginx, FP

Andrew Alyamovsky 3 Jun 5, 2021