Skip to content

Salt Minion Inventory provides a web based interface to your SaltStack minions to view their state.

License

Notifications You must be signed in to change notification settings

JonBensi/Salt-Minion-Inventory

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Salt-Minion-Inventory

Provides a web based interface to your SaltStack minions to view their state, hardware, software and package information.

Bootstrap, Datatables.net and jQuery are used to create the user interface.

Data about the minions are stored in a MySQL database.

SaltStack events, reactors and a runner are used to keep the data up to date.

Minions only report their state, packages etc. if they have changed. Minions will cache their data's md5sum value to /var/tmp/salt_inventory_audit.cache

Screen Shots

Overview:

Overview

Minions:

Minions

Package list for a minion:

Packages

Minion info:

Minion Info Summary

Minion Info Packages

Package diff for two minions:

Package Diff

Requirements

  • A web server that supports PHP (e.g. Apache)
  • A MySQL server
  • PHP MySQL support
  • A web browser that supports JS and CSS
  • a SaltStack master and minions
  • MySQL-python module
  • pytz python module

Note: if you are using the Python 3 version of SaltStack then you will need to install Python 3 versions of the modules above.

Installation

MySQL Database

Create a database, e.g. salt_minion to store the minion information like so:

mysql -u root < database.sql

Create a user for the database:

GRANT USAGE ON *.* TO 'salt_minion'@'%' IDENTIFIED BY PASSWORD 'salt_minion_password';

GRANT ALL PRIVILEGES ON `salt\_minion`.* TO 'salt_minion'@'%' WITH GRANT OPTION;

Salt Configuration

Copy the contents of /srv directory to the /srv directory on your SaltStack master. You may want to exclude the top.sls files from the pillar and salt directories as these are just examples that show how to include the required files.

Create a directory to store the runner on the SaltMaster:

mkdir -p /var/lib/salt/runners

Copy runners/inventory.py and runners/inventory.ini into the directory. Note: change the MySQL variables to match the credentials that you used when creating the database above in inventory.ini.

Edit /etc/salt/master to enable the runner, presence events and reactors for responding to events:

extension_modules: /var/lib/salt

presence_events: True

reactor:
  - 'salt/presence/present':
    - /srv/reactor/inventory/present.sls
  - 'inventory/audit':
    - /srv/reactor/inventory/audit.sls

By default minions will run audit themselves once every six hours. This can be changed by editing /srv/pillar/inventory.sls

Now restart the SaltMaster:

systemctl restart salt-master

Web Interface

Copy the contents of the html directory to a directory on your web server that is being served, e.g. /var/www/html

Create a file in the common folder called dbcreds.php with the following contents (adjusted to match your MySQL database settings):

<?php
define("DB_HOST", "localhost");
define("DB_NAME", "salt_minion");
define("DB_PASS", "salt_minion_password");
define("DB_USER", "salt_minion");
?>

Salt Commands

To force a minion to run an audit, run the following command:

salt minion01 inventory.audit force=True

Debugging

If you experience problems then check the following files:

  • /var/log/salt/master
  • /var/log/salt/minion

Check the events that are being triggered and the results by watching for events on the Salt master:

salt-run state.event pretty=True

Run the inventory.audit function in debug mode:

salt -l debug '*' inventory.audit force=True

Author

  • Neil Munday (@neilmunday)

Contributors

The following people have contributed code to the project:

  • David Murray (@dajamu)

Licensing

About

Salt Minion Inventory provides a web based interface to your SaltStack minions to view their state.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 56.5%
  • Python 25.0%
  • TSQL 7.3%
  • SaltStack 5.6%
  • JavaScript 5.4%
  • CSS 0.2%