From a4277964cf0e44a46d0ae176f61848556f83d6a4 Mon Sep 17 00:00:00 2001 From: "C. R. Oldham" Date: Tue, 14 Jan 2014 14:29:11 -0700 Subject: [PATCH] Proxy minion documentation --- doc/_static/proxy_minions.png | Bin 0 -> 76489 bytes doc/_static/proxy_minions.svg | 1 + doc/_static/proxy_minions.xml | 1 + doc/contents.rst | 1 + doc/index.rst | 3 + doc/topics/proxyminion/index.rst | 242 +++++++++++++++++++++++++++---- 6 files changed, 223 insertions(+), 25 deletions(-) create mode 100644 doc/_static/proxy_minions.png create mode 100644 doc/_static/proxy_minions.svg create mode 100644 doc/_static/proxy_minions.xml diff --git a/doc/_static/proxy_minions.png b/doc/_static/proxy_minions.png new file mode 100644 index 0000000000000000000000000000000000000000..5a506ff44e37c3db4036df4c2377d57c1b7b62a5 GIT binary patch literal 76489 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%0AYwN{aVem$R_~aQ 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

minioncontroller3
[Object]
minioncontroller2
[Object]
dumbdevice2(network switch)dumbdevice3(network switch)dumbdevice1(network switch)
minioncontroller1
[Object]
salt-master
[Object]
dumbdevice5 (i2c_lightshow)
[Object]
dumbdevice4 (i2c_lightshow)
[Object]
dumbdevice6
(433 MHz wireless)
[Object]
dumbdevice7
(sms_serial)
[Object]
salt-minion
[Object]
\ No newline at end of file diff --git a/doc/_static/proxy_minions.xml b/doc/_static/proxy_minions.xml new file mode 100644 index 0000000000..3acbe6d5b5 --- /dev/null +++ b/doc/_static/proxy_minions.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/doc/contents.rst b/doc/contents.rst index eb57e29138..227fcf1cdb 100644 --- a/doc/contents.rst +++ b/doc/contents.rst @@ -34,6 +34,7 @@ Salt Table of Contents topics/development/index topics/translating topics/salt_projects + topics/proxyminion/index ref/configuration/logging/* ref/configuration/logging/handlers/* diff --git a/doc/index.rst b/doc/index.rst index c2b1fb5a44..b44aa945f0 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -219,6 +219,9 @@ Salt is many splendid things. :doc:`Testing Salt ` A howto for writing unit tests and integration tests. +:doc:`Salt Proxy Minions ` + Controlling devices and machines unable to run a salt-minion. + :ref:`Python API interface ` Use Salt programmatically from scripts and programs easily and simply via ``import salt``. diff --git a/doc/topics/proxyminion/index.rst b/doc/topics/proxyminion/index.rst index bd81c21276..53e4db9207 100644 --- a/doc/topics/proxyminion/index.rst +++ b/doc/topics/proxyminion/index.rst @@ -1,48 +1,240 @@ +=============================== Salt Proxy Minion Documentation =============================== -.. toctree:: - :maxdepth: 3 - :glob: - :hidden: - - * - install/index - Proxy minions are a Salt feature that enables controlling devices that, for whatever reason, cannot run a standard salt-minion. Examples include network gear that has an API but runs a proprietary OS, devices with limited CPU or memory, or devices that could run a minion, but for security reasons, will not. -Proxy minions are not, for the most part, an "out of the box" feature. Because -there are a myriad of devices outside the typical Linux or Windows worlds, if -you are trying to control something you will most likely have to write the +*Proxy minions are not an "out of the box" feature*. Because +there are an infinite number of controllable devices, +you will most likely have to write the interface yourself. Fortunately, this is only as difficult as the actual interface to the proxied device. Devices that have an existing Python module (PyUSB for example) would be relatively simple to interface. Code to control a device that has an HTML REST-based interface should be easy. Code to control your typical housecat would be excellent source material for a PhD thesis. -Salt-proxy-minions provide the 'plumbing' that allows device enumeration, -control, status, remote execution, and state management. +Salt proxy-minions provide the 'plumbing' that allows device enumeration +and discovery, control, status, remote execution, and state management. Getting Started -=============== +--------------- -Minion management ------------------ +The following diagram may be helpful in understanding the structure of a Salt +installation that includes proxy-minions: -Minion Discovery ----------------- +.. image:: /_static/proxy_minions.png -Essential Components of a Proxy Minion Interface ------------------------------------------------- +The key thing to remember is the left-most section of the diagram. Salt's +nature is to have a minion connect to a master, then the master may control +the minion. However, for proxy minions, the target device cannot run a minion, +and thus must rely on a separate minion to fire up the proxy-minion and make the +initial and persistent connection. -* Configuration file parameters - -* The __proxyenabled__ directive - -* test.ping +After the proxy minion is started and initiates its connection to the 'dumb' +device, it connects back to the salt-master and ceases to be affiliated in +any way with the minion that started it. +Configuration parameters on the master +###################################### + +In ``/etc/salt/master``, add the following key: + +.. code-block:: yaml + + enumerate_proxy_minions: True + +This will invoke the salt-master routines to look for other configuration parameters +to drive the proxies. + +Salt's Pillar system is ideally suited for configuring proxy-minions. Proxies can +either be designated via a pillar file in pillar_roots, or through an external pillar. +External pillars afford the opportunity for interfacing with a configuration management +system, database, or other knowledgeable system that that may already contain all the details +of proxy targets. To use static files in pillar_roots, pattern your files after the following +examples, which are based on the diagram above: + +``/srv/salt/pillar/top.sls`` + +.. code-block:: yaml + + base: + minioncontroller1: + - networkswitches + minioncontroller2: + - reallydumbdevices + minioncontroller3: + - smsgateway + + +``/srv/salt/pillar/networkswitches.sls`` + +.. code-block:: yaml + + proxy: + dumbdevice1: + proxytype: networkswitch + host: 172.23.23.5 + username: root + passwd: letmein + dumbdevice2: + proxytype: networkswitch + host: 172.23.23.6 + username: root + passwd: letmein + dumbdevice3: + proxytype: networkswitch + host: 172.23.23.7 + username: root + passwd: letmein + +``/srv/salt/pillar/reallydumbdevices.sls`` + +.. code-block:: yaml + + proxy: + dumbdevice4: + proxytype: i2c_lightshow + i2c_address: 1 + dumbdevice5: + proxytype: i2c_lightshow + i2c_address: 2 + dumbdevice6: + proxytype: 433mhz_wireless + +``/srv/salt/pillar/smsgateway.sls`` + +.. code-block:: yaml + + proxy: + minioncontroller3: + dumbdevice7: + proxytype: sms_serial + deventry: /dev/tty04 + +Note the contents of each minioncontroller key may differ widely based on +the type of device that the proxy-minion is managing. + +In the above example + +- dumbdevices 1, 2, and 3 are network switches that have a management + interface available at a particular IP address. + +- dumbdevices 4 and 5 are very low-level devices controlled over an i2c bus. In this case + the devices are physically connected to machine 'minioncontroller2', and are addressable + on the i2c bus at their respective i2c addresses. + +- dumbdevice6 is a 433 MHz wireless transmitter, also physically connected to minioncontroller2 + +- dumbdevice7 is an SMS gateway connected to machine minioncontroller3 via a serial port. + +Also, in general, proxy-minions are lightweight, so the machines that run them could +conceivably control a large number of devices. The example above is just to illustrate +that it is possible for the proxy services to be spread across many machines if necessary, or +intentionally run on machines that need to control devices because of some physical interface +(e.g. i2c and serial above). Another reason to divide proxy services might be security. In +more secure environments only certain machines may have a network path to certain devices. + +Now our salt-minions know if they are supposed to spawn a proxy-minion process to control +a particular device. That proxy-minion process will initiate a connection back to the master +to enable control. + +Proxytypes +########## + +A proxytype is a Python file that encapsulates all the code necessary to interface with +a device. Proxytypes are located inside the salt.proxy module. +At a minimum a proxytype must implement the following functions: + +``proxytype()``: Returns a string with the name of the proxy type. + +``proxyconn(*args, **kwargs)``: Provides the primary way to connect and communicate +with the device. Some proxyconns instantiate a particular object that opens a +network connection to a device and leaves the connection open for communication. +Others simply abstract a serial connection or even implement endpoints to communicate +via REST over HTTP. + +``id(opts)``: Returns a unique, unchanging id for the controlled device. This is +the "name" of the device, and is used by the salt-master for targeting and key +authentication. + +It is highly recommended that the ``test.ping`` execution module also be defined +for a proxytype. The code for ``ping`` should contact the controlled device and make +sure it is really available. + +Here is an example proxytype used to interface to Juniper Networks devices that run +the Junos operating system. Note the additional library requirements--most of the +"hard part" of talking to these devices is handled by the jnpr.junos, jnpr.junos.utils +and jnpr.junos.cfg modules. + +.. code-block:: python + + # Import python libs + import logging + import os + + import jnpr.junos + import jnpr.junos.utils + import jnpr.junos.cfg + HAS_JUNOS = True + + def proxyconn(user=None, host=None, passwd=None): + jdev = jnpr.junos.Device(user=user, host=host, password=passwd) + jdev.open() + jdev.bind(cu=jnpr.junos.utils.Config) + return jdev + + def proxytype(): + return 'junos' + + def id(opts): + return opts['proxyconn'].facts['hostname'] + + +The __proxyenabled__ directive +############################## + +Salt states and execution modules, by and large, cannot "automatically" work with +proxied devices. Execution modules like ``pkg`` or ``sqlite3`` have no meaning on +a network switch or a housecat. For a state/execution module to be available to +a proxy-minion, the ``__proxyenabled__`` variable must be defined in the module as an +array containing the names of all the proxytypes that this module can support. The +array can contain the special value ``*`` to indicate that the module supports all +proxies. + +If no ``__proxyenabled__`` variable is defined, then by default, the state/execution +module is unavailable to any proxy. + +Here is an excerpt from a module that was modified to support proxy-minions: + +.. code-block:: python + + def ping(): + + if 'proxytype' in __opts__: + fun = 'salt.proxy.{0}.ping'.format(__opts__['proxytype']) + if fun in __salt__: + return __salt__[fun]() + else: + return False + else: + return True + +And then in salt.proxy.junos we find + +.. code-block:: python + + def ping(): + + if 'proxytype' in __opts__: + fun = 'salt.proxy.{0}.ping'.format(__opts__['proxytype']) + if fun in __salt__: + return __salt__[fun]() + else: + return False + else: + return True