.. _module_plugins:

Modules
=======

.. contents::
   :local:
   :depth: 2

Modules are the main building blocks of Ansible playbooks. Although we do not generally speak of "module plugins", a module is a type of plugin. For a developer-focused description of the differences between modules and other plugins, see :ref:`modules_vs_plugins`.

.. _enabling_modules:

Enabling modules
----------------

You can enable a custom module by dropping it into one of these locations:

* any directory added to the ``ANSIBLE_LIBRARY`` environment variable (``$ANSIBLE_LIBRARY`` takes a colon-separated list like ``$PATH``)
* ``~/.ansible/plugins/modules/``
* ``/usr/share/ansible/plugins/modules/``

For more information on using local custom modules, see :ref:`local_modules`. 

.. _using_modules:

Using modules
-------------

For information on using modules in ad hoc tasks, see :ref:`intro_adhoc`. For information on using modules in playbooks, see :ref:`playbooks_intro`.

.. seealso::

   :ref:`about_playbooks`
       An introduction to playbooks
   :ref:`developing_modules_general`
       An introduction to creating Ansible modules
   :ref:`developing_collections`
       A guide to creating Ansible collections
   :ref:`Communication<communication>`
       Got questions? Need help? Want to share your ideas? Visit the Ansible communication guide
