Walkthrough

After you logged in at http://localhost:8000/#/login with:

username: admin
password: password

You should land on the Dashboard view.

For now it's empty, but you can already see that some keys are UNACCEPTED.

So let's go to the Keys view: http://localhost:8000/#/keys

Accept keys

keys

You can either accept keys one by one using the ACCEPT button, or use the action button to accept all keys.

Add minions

To store infos on connected minions, we need to add them to the database.

Go to http://localhost:8000/#/minions and use the action button to refresh minions.

minions

Info

By default, refreshing minions will run:

  • grains.items
  • pillar.items

on each connected minions.

Minion detail

From the minions view, you can click on a minion id to see its details, for example: http://localhost:8000/#/minions/master/.

minion_detail

Details are parsed from the grains.items state. On the right, 4 tabs are present for now:

  • grains.items
  • pillar.items
  • The last 100 jobs run on this minion
  • A graph of jobs run on this minion

Let's add some useful infos by setting some minions fields. To do so, go to the settings view http://localhost:8000/#/settings.

Settings

Choose a target and run the module parser to have documentation and module completion.

Let's add some minion fields.

minion_fields

We usually add:

  • highstate: state.show_highstate

  • top file: state.show_top

Use the action button to refresh all minions.

If you go see a minion's details, for example, http://localhost:8000/#/minions/master/, the new minion fields should be present.

Minion fields are usually used for "static" minion specific data.

For dynamic data, there's conformity.

As a config management tool, it's important to track state of files presence, software version, etc...

Custom conformity let you do that.

conformity_example

As an example, we'll add:

  • foo: file.file_exists /foo.txt

  • pyversion: cmd.run "python --version"

If you go to the overview, the two new custom conformity should be present but empty.

empty_conformity

Let's go run some jobs to fix that.

Run

Go to http://localhost:8000/#/run

You can explore the formatted tab or just use the cli and run:

salt master cmd.run "touch /foo.txt"

We just created the file /foo.txt on the master, so the master will comply to the "foo" conformity we added earlier.

Conformity is parsed from the states present in the database, so let's run:

salt * cmd.run "python --version"
salt * file.file_exists "/foo.txt"

By the way, there should be tab completion in the CLI and documentation in the tooltip on the formatted tab thanks to the parse module action we did earlier.

Finally, highstate any or all minions.

salt master state.apply

Conformity

In the overview, the conformity card should be filled now, with details when you hover it.

filled_conformity

A table with both highstate conformity and your custom ones for all minions is available in the conformity view http://localhost:8000/#/conformity.

conformity_view

Details about each states in the highstate are available by clicking the DETAIL button.

conformity_details