saltobserver 0.9.4
A simple webapp for presenting data as offered by SaltStack's Redis Returner
License: MIT
Keywords: saltstack redis returner salt states

Salt Observer |img|
===================
.. |img| image:: https://circleci.com/gh/analogbyte/saltobserver/tree/master.svg?style=svg
       :target: https://circleci.com/gh/analogbyte/saltobserver/tree/master

This is a simple webapp for presenting data as offered by `Salt's Redis
Returner`_ written in `Flask`_.

A static demo is available `here`_.

.. _`Salt's Redis Returner`: https://github.com/saltstack/salt/blob/develop/salt/returners/redis_return.py
.. _`Flask`: http://flask.pocoo.org/
.. _`here`: http://analogbyte.github.io/saltobserver/

.. image:: http://files.danieln.de/public/saltobserver-v0.9.0.png
   :alt: Screenshot of Saltobserver (17-12-2014)
   :width: 1000 px
   :target: http://files.danieln.de/public/saltobserver.png

Features
~~~~~~~~

- a simple and responsive interface based on `purecss`_ (and their example
  `email layout`_ to be exact)
- three main views:
    * a function view showing all minions that ran a particular function (as
      shown on the screenshot)
    * a history view for looking at a minion's history with a specific function
    * a job view listing all minions which ran a specific job
- a customizable navbar, which links to function views
- searchpages for everything
- live updates for the function view using websockets and `Redis' Keyspace Notifications`_
- a collapsible representation of raw job data using the awesome `renderjson`_

.. _`purecss`: http://purecss.io/
.. _`email layout`: http://purecss.io/layouts/email/
.. _`Redis' Keyspace Notifications`: http://redis.io/topics/notifications
.. _`renderjson`: https://github.com/caldwell/renderjson

Running it from PyPI
~~~~~~~~~~~~~~~~~~~~

Just install it using ``pip install saltobserver``. As always, it is
recommended to do so in a virtualenv. After that, the command
``run_saltobserver`` will be available within this virtualenv. If you want to
use non-default settings (at least look at the `defaults`_) prefix the command
with ``export SALTOBSERVER_SETTINGS=/path/to/config``. Other than that, you may
pass gunicorn options to the ``run_saltobserver`` command, they will be passed
on so that you can configure gunicorn for use with a proxy server.

.. _`defaults`: https://raw.githubusercontent.com/analogbyte/saltobserver/master/saltobserver/config.py

A typical deployment could use this command with supervisord:

::

  $ export SALTOBSERVER_SETTINGS=/home/saltobserver/config.cfg run_saltobserver -u saltobserver --bind unix:/var/run/saltobserver/socket

Running it with Docker
~~~~~~~~~~~~~~~~~~~~~~

Install a recent docker version (at least 1.2) and run

::

  git clone https://github.com/analogbyte/saltobserver.git
  cd saltobserver
  docker build -t saltobserver .
  docker run -d --restart=always --name=saltobserver -p 8000:8000 -e REDIS_HOST=redis.example.org saltobserver

This exposes saltobserver to port 8000 and it tries to connect to redis.example.org as redis host. Change the env var or use docker links as suits your needs.
Instead of building it yourself, feel free to use automated build from Docker Hub: ``docker pull analogbyte/saltobserver``

Running it from Source
~~~~~~~~~~~~~~~~~~~~~~

If your minions return their data to some Redis instance, it is as
simple as cloning this repo running ``scripts/run_saltobserver`` (and putting
that behind a reverse proxy, if needed). This uses `Gunicorn`_, which is pretty
flexible and can be configured for pretty much any setup.

.. _`Gunicorn`: http://gunicorn.org/

Note that your Redis instance has to have a version greater than v2.8.0
for the live updates to work.

Also look at the configuration in ``saltobserver/config.py``.