.. -*- mode: rst -*-

.. _server-plugins-index:

=======
Plugins
=======

Plugins are the source of all logic used in building a config. They can
perform one of several tasks:

#. Generating configuration inventory lists for clients
#. Generating configuration entry contents for clients
#. Probing client-side state (like hardware inventory, etc)
   -- the generic client probing mechanism is described at
   :ref:`server-plugins-probes-index`.
#. Automating administrative tasks
   (e.g. :ref:`server-plugins-generators-sshbase` which automates ssh
   key management)
#. Generating client per-entry installation decision-lists

Enabling Plugins
================

In order for the Bcfg2 server to use a plugin, it needs to be listed on
the *plugins* line in ``bcfg2.conf``.

Default Plugins
===============

The `Bcfg2 repository`_ contains the all plugins currently distributed
with Bcfg2.

.. _Bcfg2 repository: https://github.com/Bcfg2/bcfg2/tree/maint/src/lib/Bcfg2/Server/Plugins

Metadata (Grouping)
-------------------

.. toctree::
   :maxdepth: 1
   :glob:

   grouping/*

Each of these plugins has a corresponding subdirectory with the same
name in the Bcfg2 repository.

Abstract Configuration (Structures)
-----------------------------------

.. toctree::
   :maxdepth: 1
   :glob:

   structures/bundler/index
   structures/*

Each of these plugins has a corresponding subdirectory with the same
name in the Bcfg2 repository.

Literal Configuration (Generators)
----------------------------------

.. toctree::
   :maxdepth: 1
   :glob:

   generators/*

Each of these plugins has a corresponding subdirectory with the same
name in the Bcfg2 repository.

Connector Plugins
-----------------

.. toctree::
   :maxdepth: 1
   :glob:

   connectors/*

Statistics Plugins
------------------

.. toctree::
   :maxdepth: 1
   :glob:

   statistics/*

Reporting can be enabled by adding it to the plugins line in
``/etc/bcfg2.conf``.

Version Plugins
---------------

.. toctree::
   :maxdepth: 1
   :glob:

   version/*

Miscellaneous Plugins
---------------------

.. toctree::
   :maxdepth: 1
   :glob:

   misc/*

Plugin Roles (in 1.0)
=====================

In version 1.0, plugins have been refactored into a series of roles. This
are fine-grained plugin capabilities that govern how the server core
interacts with plugins.

More details can be found in :ref:`server-plugins-plugin-roles`

.. toctree::
   :hidden:

   plugin-roles
   probes/index
