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
- 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.
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;
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
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");
?>
To force a minion to run an audit, run the following command:
salt minion01 inventory.audit force=True
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
- Neil Munday (@neilmunday)
The following people have contributed code to the project:
- David Murray (@dajamu)
- Salt-Minion-Inventory is licensed under the GPLv3 license
- Bootstrap is licensed under the MIT license
- Datatables.net is licensed under the MIT license
- jQuery is licensed under the MIT license