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. https://docs.ansible.com.

Overview

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

Ansible

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.

Roadmap

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.

Authors

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

Ansible is sponsored by Red Hat, Inc.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

Comments
  • ansible-test - Fix integration test target filter.

    ansible-test - Fix integration test target filter.

    SUMMARY
    • Allow disabled, unsupported, unstable and destructive integration test targets to be selected using their respective prefixes.
    • Allow unstable tests to run when targeted changes are made and the --allow-unstable-changed option is specified (resolves https://github.com/ansible/ansible/issues/74213).
    ISSUE TYPE

    Bugfix Pull Request

    COMPONENT NAME

    ansible-test

    test core_review support:community support:core bug has_issue affects_2.15 
    opened by mattclay 0
  • Inconsistent Return Values for Apt Module

    Inconsistent Return Values for Apt Module

    Summary

    When attempting to install a standalone deb package (none apt-get based) using the apt module the module does not report consistent information across two different types of runs.

    This does not allow the correct handling of changed_when or failed_when calls since two different runs do not contain the same registered objects.

    When installing a deb package on a host that does not have the defined package installed, you get "changed", "diff", "failed", "stderr", "stderr_lines", "stdout" defined vars returned.

    When the package is already installed but the defined package is an older version then whats installed on the target host, you get: "changed","failed", "msg" vars.

    This is not a consistent return method to handle errors or in this case a "msg".

    Issue Type

    Bug Report

    Component Name

    apt

    Ansible Version

    $ ansible --version
    ansible [core 2.12.9]
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/home/<user>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3/dist-packages/ansible
      ansible collection location = /home/<user>/.ansible/collections:/usr/share/ansible/collections
      executable location = /usr/bin/ansible
      python version = 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0]
      jinja version = 2.10.1
      libyaml = True
    
    $ ansible --version
    ansible 2.9.6
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/home/<user>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3/dist-packages/ansible
      executable location = /usr/bin/ansible
      python version = 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0]
    

    Configuration

    Default Config
    

    OS / Environment

    Ubuntu 20.04 Kernel: 5.15.0-33-generic

    Steps to Reproduce

    ---
    - hosts: all
      become: true
    
      tasks:
        - name: Install Deb
          ansible.builtin.apt:
            deb: file.deb
          register: result
    
        - name: Deb Debug
          ansible.builtin.debug:
            var: result
    ...
    

    Expected Results

    1. A return code "result.rc"
    2. A consistent return method for the registered vars no matter the result
      • 'stdout' vs 'msg'
    3. Not to have to use ignore_errors to handle the particular issue
    4. Potential module documentation mentions a msg return value

    Overall I expected the job to not fail and/or at least place the "msg" into 'stdout' or 'stderr' so I could parse the return correctly and define my own failure. I can understand the type of failure I am encountering due to the versioning and it probbaly should be higher. I also do not want to downgrade.

    Yes this is a valid error for the targeted deb package, the version of the deb package attempting to be installed is older then what is on the host.

    Actual Results

    TASK [<Deb Package>] **************************************************************
    Wednesday 21 September 2022  17:54:47 +0000 (0:00:37.424)       0:13:56.693 *** 
    ok: [<targeted host>] => {
        "result": {
            "changed": true,
            "diff": {},
            "failed": true,
            "stderr": "",
            "stderr_lines": [],
            "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nThe following NEW packages will be installed:\n  libegl1-mesa libgl1-mesa-glx libxcb-xtest0\n0 upgraded, 3 newly installed, 0 to remove and 53 not upgraded.\nNeed to get 16.7 kB of archives.\nAfter this operation, 180 kB of additional disk space will be used.\nGet:1 http://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 libegl1-mesa amd64 21.2.6-0ubuntu0.1~20.04.2 [6408 B]\nGet:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libgl1-mesa-glx amd64 21.2.6-0ubuntu0.1~20.04.2 [5536 B]\nGet:3 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libxcb-xtest0 amd64 1.14-2 [4804 B]\nFetched 16.7 kB in 0s (106 kB/s)\nSelecting previously unselected package libegl1-mesa:amd64.\r\n(Reading database ... \r(Reading database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Reading database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\r(Reading database ... 95%\r(Reading database ... 100%\r(Reading database ... 161798 files and directories currently installed.)\r\nPreparing to unpack .../libegl1-mesa_21.2.6-0ubuntu0.1~20.04.2_amd64.deb ...\r\nUnpacking libegl1-mesa:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...\r\nSelecting previously unselected package libgl1-mesa-glx:amd64.\r\nPreparing to unpack .../libgl1-mesa-glx_21.2.6-0ubuntu0.1~20.04.2_amd64.deb ...\r\nUnpacking libgl1-mesa-glx:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...\r\nSelecting previously unselected package libxcb-xtest0:amd64.\r\nPreparing to unpack .../libxcb-xtest0_1.14-2_amd64.deb ...\r\nUnpacking libxcb-xtest0:amd64 (1.14-2) ...\r\nSetting up libegl1-mesa:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...\r\nSetting up libxcb-xtest0:amd64 (1.14-2) ...\r\nSetting up libgl1-mesa-glx:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...\r\nProcessing triggers for libc-bin (2.31-0ubuntu9.7) ...\r\nSelecting previously unselected package <deb package>.\n(Reading database ... 161815 files and directories currently installed.)\nPreparing to unpack .../files/<deb package>.deb ...\nUnpacking <deb package> ...\nSetting up <deb package> ...\nrun post install script, action is configure...\nProcessing triggers for gnome-menus (3.36.0-1ubuntu1) ...\nProcessing triggers for desktop-file-utils (0.24-1ubuntu3) ...\nProcessing triggers for mime-support (3.64ubuntu1) ...\nProcessing triggers for shared-mime-info (1.15-1) ...\n",
            "stdout_lines": [
                "Reading package lists...",
                "Building dependency tree...",
                "Reading state information...",
                "The following NEW packages will be installed:",
                "  libegl1-mesa libgl1-mesa-glx libxcb-xtest0",
                "0 upgraded, 3 newly installed, 0 to remove and 53 not upgraded.",
                "Need to get 16.7 kB of archives.",
                "After this operation, 180 kB of additional disk space will be used.",
                "Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 libegl1-mesa amd64 21.2.6-0ubuntu0.1~20.04.2 [6408 B]",
                "Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libgl1-mesa-glx amd64 21.2.6-0ubuntu0.1~20.04.2 [5536 B]",
                "Get:3 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libxcb-xtest0 amd64 1.14-2 [4804 B]",
                "Fetched 16.7 kB in 0s (106 kB/s)",
                "Selecting previously unselected package libegl1-mesa:amd64.",
                "(Reading database ... ",
                "(Reading database ... 5%",
                "(Reading database ... 10%",
                "(Reading database ... 15%",
                "(Reading database ... 20%",
                "(Reading database ... 25%",
                "(Reading database ... 30%",
                "(Reading database ... 35%",
                "(Reading database ... 40%",
                "(Reading database ... 45%",
                "(Reading database ... 50%",
                "(Reading database ... 55%",
                "(Reading database ... 60%",
                "(Reading database ... 65%",
                "(Reading database ... 70%",
                "(Reading database ... 75%",
                "(Reading database ... 80%",
                "(Reading database ... 85%",
                "(Reading database ... 90%",
                "(Reading database ... 95%",
                "(Reading database ... 100%",
                "(Reading database ... 161798 files and directories currently installed.)",
                "Preparing to unpack .../libegl1-mesa_21.2.6-0ubuntu0.1~20.04.2_amd64.deb ...",
                "Unpacking libegl1-mesa:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...",
                "Selecting previously unselected package libgl1-mesa-glx:amd64.",
                "Preparing to unpack .../libgl1-mesa-glx_21.2.6-0ubuntu0.1~20.04.2_amd64.deb ...",
                "Unpacking libgl1-mesa-glx:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...",
                "Selecting previously unselected package libxcb-xtest0:amd64.",
                "Preparing to unpack .../libxcb-xtest0_1.14-2_amd64.deb ...",
                "Unpacking libxcb-xtest0:amd64 (1.14-2) ...",
                "Setting up libegl1-mesa:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...",
                "Setting up libxcb-xtest0:amd64 (1.14-2) ...",
                "Setting up libgl1-mesa-glx:amd64 (21.2.6-0ubuntu0.1~20.04.2) ...",
                "Processing triggers for libc-bin (2.31-0ubuntu9.7) ...",
                "Selecting previously unselected package <deb package>.",
                "(Reading database ... 161815 files and directories currently installed.)",
                "Preparing to unpack .../files/<deb package> ...",
                "Unpacking <deb package> ...",
                "Setting up <deb package> ...",
                "run post install script, action is configure...",
                "Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...",
                "Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...",
                "Processing triggers for mime-support (3.64ubuntu1) ...",
                "Processing triggers for shared-mime-info (1.15-1) ..."
            ]
        }
    }
    
    
    sudo ansible-playbook -i localhost, --connection local test_deb.yml -vvvv
    ansible-playbook [core 2.12.9]
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3/dist-packages/ansible
      ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
      executable location = /usr/bin/ansible-playbook
      python version = 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0]
      jinja version = 2.10.1
      libyaml = True
    Using /etc/ansible/ansible.cfg as config file
    setting up inventory plugins
    Set default localhost to localhost
    Parsed localhost, inventory source with host_list plugin
    Loading callback plugin default of type stdout, v2.0 from /usr/lib/python3/dist-packages/ansible/plugins/callback/default.py
    Skipping callback 'default', as we already have a stdout callback.
    Skipping callback 'minimal', as we already have a stdout callback.
    Skipping callback 'oneline', as we already have a stdout callback.
    
    PLAYBOOK: test_deb.yml *******************************************************************************************************************************************************************************************
    Positional arguments: test_deb.yml
    verbosity: 4
    connection: local
    timeout: 10
    become_method: sudo
    tags: ('all',)
    inventory: ('localhost,',)
    forks: 5
    1 plays in test_deb.yml
    
    PLAY [all] *******************************************************************************************************************************************************************************************************
    
    TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
    task path: /home/<usr>/test_deb.yml:2
    <localhost> ESTABLISH LOCAL CONNECTION FOR USER: root
    <localhost> EXEC /bin/sh -c 'echo ~root && sleep 0'
    <localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp `"&& mkdir "` echo /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144 `" && echo ansible-tmp-1663863756.7363076-395839-205109198181144="` echo /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144 `" ) && sleep 0'
    <localhost> Attempting python interpreter discovery
    <localhost> EXEC /bin/sh -c 'echo PLATFORM; uname; echo FOUND; command -v '"'"'python3.10'"'"'; command -v '"'"'python3.9'"'"'; command -v '"'"'python3.8'"'"'; command -v '"'"'python3.7'"'"'; command -v '"'"'python3.6'"'"'; command -v '"'"'python3.5'"'"'; command -v '"'"'/usr/bin/python3'"'"'; command -v '"'"'/usr/libexec/platform-python'"'"'; command -v '"'"'python2.7'"'"'; command -v '"'"'python2.6'"'"'; command -v '"'"'/usr/bin/python'"'"'; command -v '"'"'python'"'"'; echo ENDFOUND && sleep 0'
    <localhost> EXEC /bin/sh -c '/usr/bin/python3.8 && sleep 0'
    Using module file /usr/lib/python3/dist-packages/ansible/modules/setup.py
    <localhost> PUT /root/.ansible/tmp/ansible-local-395831iitw6po2/tmpsquhozex TO /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144/AnsiballZ_setup.py
    <localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144/ /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144/AnsiballZ_setup.py && sleep 0'
    <localhost> EXEC /bin/sh -c '/usr/bin/python3 /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144/AnsiballZ_setup.py && sleep 0'
    <localhost> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-tmp-1663863756.7363076-395839-205109198181144/ > /dev/null 2>&1 && sleep 0'
    ok: [localhost]
    META: ran handlers
    
    TASK [Install Deb] **********************************************************************************************************************************************************************************************
    task path: /home/<user>/test_deb.yml:6
    <localhost> ESTABLISH LOCAL CONNECTION FOR USER: root
    <localhost> EXEC /bin/sh -c 'echo ~root && sleep 0'
    <localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp `"&& mkdir "` echo /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362 `" && echo ansible-tmp-1663863758.8735003-395993-93000336538362="` echo /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362 `" ) && sleep 0'
    Using module file /usr/lib/python3/dist-packages/ansible/modules/apt.py
    <localhost> PUT /root/.ansible/tmp/ansible-local-395831iitw6po2/tmpj29bt1jw TO /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362/AnsiballZ_apt.py
    <localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362/ /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362/AnsiballZ_apt.py && sleep 0'
    <localhost> EXEC /bin/sh -c '/usr/bin/python3 /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362/AnsiballZ_apt.py && sleep 0'
    <localhost> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-tmp-1663863758.8735003-395993-93000336538362/ > /dev/null 2>&1 && sleep 0'
    fatal: [localhost]: FAILED! => {
        "changed": false,
        "invocation": {
            "module_args": {
                "allow_downgrade": false,
                "allow_unauthenticated": false,
                "autoclean": false,
                "autoremove": false,
                "cache_valid_time": 0,
                "deb": "file.deb",
                "default_release": null,
                "dpkg_options": "force-confdef,force-confold",
                "fail_on_autoremove": false,
                "force": false,
                "force_apt_get": false,
                "install_recommends": null,
                "lock_timeout": 60,
                "only_upgrade": false,
                "package": null,
                "policy_rc_d": null,
                "purge": false,
                "state": "present",
                "update_cache": null,
                "update_cache_retries": 5,
                "update_cache_retry_max_delay": 12,
                "upgrade": null
            }
        },
        "msg": "A later version is already installed"
    }
    
    PLAY RECAP *******************************************************************************************************************************************************************************************************
    localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
    

    Code of Conduct

    • [X] I agree to follow the Ansible Code of Conduct
    module needs_triage support:core bug affects_2.12 
    opened by sharpmm 1
  • plugin loader fix existing config testing

    plugin loader fix existing config testing

    create specific function to find config entry to avoid repopulating constantly Fixes #78795 alt to #78856

    ci_complete

    ISSUE TYPE
    • Bugfix Pull Request
    COMPONENT NAME

    plugin loader

    needs_revision needs_triage support:core bug affects_2.15 
    opened by bcoca 0
  • [docs] Fixes issue #72389

    [docs] Fixes issue #72389

    SUMMARY

    Adds a suggested note mentioned in https://github.com/ansible/ansible/issues/72389#issuecomment-1234750451 and polishes the sample_setup.rst file in general.

    ISSUE TYPE
    • Docs Pull Request
    COMPONENT NAME

    docs.ansible.com

    ADDITIONAL INFORMATION

    https://github.com/ansible/ansible/issues/72389

    needs_revision needs_triage support:core new_contributor docs docs_only affects_2.15 
    opened by JaroslavKlech 2
  • Unable to intercept fqcn modules via action plugins

    Unable to intercept fqcn modules via action plugins

    Summary

    Note: First off I am not 100% that this is a bug. It could very well be that the short name behaviour that we and other uses is an unintended consequence, and if so confirmation of the same is probably enough. If we should be able to intercept, some guidance on how we should go about modifying the task executor would be appreciated and we can PR based on that.

    Currently we have a number of action plugins which intercept upstream plugins to do things like inject passwords, or guard certain functions for our environment. General prerequisite work before modules execute as per the docs.

    Example would be the jira plugin where we inject username and password for users instead of requiring it in definition or playbook header.

    Our action plugin lives at plugins/action/jira.py and gets call when a user calls jira via the shortname. If a user switches over the the fqcn of community.general.jira, our action plugin no longer intercepts the call, reverting back to the normal action plugin.

    Issue Type

    Bug Report

    Component Name

    task_executor

    Ansible Version

    $ ansible --version
    ansible [core 2.13.4]
      config file = /usr/share/ansible/ansible.cfg
      configured module search path = ['/usr/share/ansible/library']
      ansible python module location = /usr/lib/python3.8/site-packages/ansible
      ansible collection location = /usr/lib/python3.8/site-packages/ansible_collections
      executable location = /usr/bin/ansible
      python version = 3.8.13 (default, Apr 28 2022, 12:34:52) [GCC 8.3.1 20190311 (Red Hat 8.3.1-3)]
      jinja version = 3.1.2
      libyaml = True
    

    Configuration

    # if using a version older than ansible-core 2.12 you should omit the '-t all'
    $ ansible-config dump --only-changed -t all
    CALLBACKS_ENABLED(/usr/share/ansible/ansible.cfg) = ['syslog', 'timer', 'yaml']
    COLLECTIONS_PATHS(/usr/share/ansible/ansible.cfg) = ['/usr/lib/python3.8/site-packages/ansible_collections']
    COLOR_VERBOSE(/usr/share/ansible/ansible.cfg) = bright blue
    DEFAULT_ACTION_PLUGIN_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/plugins/action']
    DEFAULT_CALLBACK_PLUGIN_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/plugins/callback']
    DEFAULT_FILTER_PLUGIN_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/plugins/filter']
    DEFAULT_GATHERING(/usr/share/ansible/ansible.cfg) = smart
    DEFAULT_HOST_LIST(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/inventory/consort.yml']
    DEFAULT_INVENTORY_PLUGIN_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/plugins/inventory']
    DEFAULT_LOAD_CALLBACK_PLUGINS(/usr/share/ansible/ansible.cfg) = True
    DEFAULT_LOG_PATH(/usr/share/ansible/ansible.cfg) = /root/.ansible/logs/ansible.log
    DEFAULT_LOOKUP_PLUGIN_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/plugins/lookup']
    DEFAULT_MODULE_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/library']
    DEFAULT_MODULE_UTILS_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/module_utils']
    DEFAULT_ROLES_PATH(/usr/share/ansible/ansible.cfg) = ['/usr/share/ansible/roles']
    DEFAULT_STDOUT_CALLBACK(/usr/share/ansible/ansible.cfg) = yaml
    DEFAULT_TIMEOUT(/usr/share/ansible/ansible.cfg) = 15
    DEFAULT_VAULT_PASSWORD_FILE(env: ANSIBLE_VAULT_PASSWORD_FILE) = /root/.ansible/.vault_pass.key
    INVENTORY_CACHE_PLUGIN(/usr/share/ansible/ansible.cfg) = jsonfile
    INVENTORY_CACHE_PLUGIN_CONNECTION(/usr/share/ansible/ansible.cfg) = /root/.ansible/cache
    RETRY_FILES_ENABLED(/usr/share/ansible/ansible.cfg) = False
    TRANSFORM_INVALID_GROUP_CHARS(/usr/share/ansible/ansible.cfg) = ignore
    
    CONNECTION:
    ==========
    
    ssh:
    ___
    pipelining(/usr/share/ansible/ansible.cfg) = True
    ssh_args(/usr/share/ansible/ansible.cfg) = -C -o ServerAliveInterval=5 -o ServerAliveCountMax=2 -o ControlMaster=auto -o ControlPersist=120s -o PreferredAuthentications=publickey,password -o UserKnownHostsFile=/dev/null -o StrictHostKe
    timeout(/usr/share/ansible/ansible.cfg) = 15
    
    INVENTORY:
    =========
    
    consort:
    _______
    cache_connection(/usr/share/ansible/ansible.cfg) = /root/.ansible/cache
    cache_plugin(/usr/share/ansible/ansible.cfg) = jsonfile
    

    OS / Environment

    Centos 7 Docker container

    Steps to Reproduce

    Action plugin intercepts

    jira:
        issue: 'TEST-1'
        operation: comment
        comment: A comment added by Ansible
    

    Action plugin doe not intercept

    community.general.jira:
        issue: 'TEST-1'
        operation: comment
        comment: A comment added by Ansible
    

    Expected Results

    A way to have action plugins intercept fqcn module calls when action plugins are stored in the top level action plugins directory.

    Actual Results

    `ansible.legacy.normal` is the action plugin handler called instead of the `jira` top level action plugin.
    

    Code of Conduct

    • [X] I agree to follow the Ansible Code of Conduct
    needs_triage support:core bug affects_2.13 
    opened by ryaner 1
Releases(v2.5.0b1)
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 639 Sep 1, 2022
Quickly deploy a seedbox with self-hosted services and a web portal using Docker and docker-compose.

Seedbox Quickly deploy and configure a seedbox with self-hosted services and a web portal using Docker and a single docker-compose.yml file. Screensho

null 4 Jun 6, 2022
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.7k Sep 16, 2022
Vagrant-boxes - Setup scripts and docs for my vagrant boxes, primarily aimed at Web/SilverStripe developement

zauberfisch's vagrant boxes zauberfisch/silverstripe-debian64 Debian 10 x86_64 LAMP Box with many extra features, pre-configured for SilverStripe Sour

null 6 Jan 24, 2020
Demo of how you can run your Laravel app with Docker Compose. Look at docker-compose.yml and the docker folder. The rest is just a clean Laravel + Horizon install.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Matt 5 Oct 22, 2021
🎲Neard is a portable WAMP software stack involving useful binaries, tools and applications for your web development.

About Neard is a portable WAMP software stack involving useful binaries, tools and applications for your web development. It also offers several versi

Neard 330 Sep 7, 2022
Docker-based workflow management system for Laravel

DevOption Workflows Workflows is a Docker-based workflow management system for Laravel applications. Installation You can install the package via comp

devoption.io 1 Jan 5, 2022
A package that allows you to generate simple and fast Docker configurations for your Laravel application!

A package that allows you to generate simple and fast Docker configurations for your Laravel application!

Lucas Nepomuceno 2 Dec 23, 2021
Brew PHP switcher is a simple shell script to switch your apache and CLI quickly between major versions of PHP

Brew PHP switcher is a simple shell script to switch your apache and CLI quickly between major versions of PHP. If you support multiple products/projects that are built using either brand new or old legacy PHP functionality. For users of Homebrew (or brew for short) currently only.

Phil Cook 847 Sep 15, 2022
Laravel 5 with Dockerized Gulp, PHP-FPM, MySQL and nginx using docker-compose

docker-laravel Laravel 5 with Dockerized PHP-FPM, MySQL and nginx using docker-compose Usage Get Composer docker-compose run --rm phpnginx curl -O htt

Harsh Vakharia 83 Feb 8, 2022
Docker Containers for simple Laravel development.

Docker containers of Laravel development. Docker Containers for simple Laravel development. Prerequisites This package only works for Linux users righ

Steve Azzopardi 14 May 19, 2022
Finally a sane way to register available commands and arguments and match your command line in PHP

clue/commander Finally a sane way to register available commands and arguments and match your command line in PHP. You want to build a command line in

Christian Lück 173 Aug 4, 2022
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 369 Aug 26, 2022
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 3.5k Sep 15, 2022
Vagrant is a tool for building and distributing development environments.

Vagrant Website: https://www.vagrantup.com/ Source: https://github.com/hashicorp/vagrant HashiCorp Discuss: https://discuss.hashicorp.com/c/vagrant/24

HashiCorp 24.4k Sep 21, 2022
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.8k Sep 15, 2022
Up and running with small Docker environments

Vessel Up and running with small Docker dev environments. Documentation Full documentation can be found at https://vessel.shippingdocker.com. Install

Shipping Docker 1.1k Sep 14, 2022
Oxygen Builder's better workflow and environment

Oxygen Builder's better workflow and environment Built with ❤️ Official Website | Documentation | Change Log Supporting Artifact is an open source pro

AncientWorks 9 Jun 9, 2022
Docker with PHP 7.4 fpm, Nginx, Composer, PhpUnit and MaridaDB

Clean Docker with PHP Docker with PHP 7.4 fpm, Nginx, Composer, PhpUnit and MariaDB Starting app docker-compose up -d Main page

Grzegorz Bielski 7 Aug 15, 2022