mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 17:09:03 +00:00
80 lines
1.9 KiB
ReStructuredText
80 lines
1.9 KiB
ReStructuredText
==================
|
|
Master Tops System
|
|
==================
|
|
|
|
In 0.10.4 the `external_nodes` system was upgraded to allow for modular
|
|
subsystems to be used to generate the top file data for a highstate run on
|
|
the master.
|
|
|
|
The old `external_nodes` option has been removed.
|
|
The master tops system contains a number of subsystems that
|
|
are loaded via the Salt loader interfaces like modules, states, returners,
|
|
runners, etc.
|
|
|
|
Using the new `master_tops` option is simple:
|
|
|
|
.. code-block:: yaml
|
|
|
|
master_tops:
|
|
ext_nodes: cobbler-external-nodes
|
|
|
|
for :doc:`Cobbler <../../ref/tops/all/salt.tops.cobbler>` or:
|
|
|
|
.. code-block:: yaml
|
|
|
|
master_tops:
|
|
reclass:
|
|
inventory_base_uri: /etc/reclass
|
|
classes_uri: roles
|
|
|
|
for :doc:`Reclass <../../ref/tops/all/salt.tops.reclass_adapter>`.
|
|
|
|
It's also possible to create custom master_tops modules. These modules must go
|
|
in a subdirectory called `tops` in the `extension_modules` directory.
|
|
The `extension_modules` directory is not defined by default (the
|
|
default `/srv/salt/_modules` will NOT work as of this release)
|
|
|
|
Custom tops modules are written like any other execution module, see the source
|
|
for the two modules above for examples of fully functional ones. Below is
|
|
a degenerate example:
|
|
|
|
/etc/salt/master:
|
|
|
|
.. code-block:: yaml
|
|
|
|
extension_modules: /srv/salt/modules
|
|
master_tops:
|
|
customtop: True
|
|
|
|
/srv/salt/modules/tops/customtop.py:
|
|
|
|
.. code-block: python
|
|
|
|
import logging
|
|
import sys
|
|
# Define the module's virtual name
|
|
__virtualname__ = 'customtop'
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
def __virtual__():
|
|
return __virtualname__
|
|
|
|
|
|
def top(**kwargs):
|
|
log.debug('Calling top in customtop')
|
|
return {'base': ['test']}
|
|
|
|
`salt minion state.show_top` should then display something like:
|
|
|
|
.. code-block: bash
|
|
|
|
$ salt minion state.show_top
|
|
|
|
minion
|
|
----------
|
|
base:
|
|
- test
|
|
|
|
|