Tools for checking Salt state validity


Keywords
salt, saltstack, sls
Install
pip install slskit==2022.10.0

Documentation

slskit

Usage: slskit [OPTIONS] COMMAND [ARGS]...

Options:
  --version                       Show the version and exit.
  -c, --config TEXT               path to slskit configuration file (default:
                                  slskit.yaml or slskit.yml)
  -l, --log-level [CRITICAL|FATAL|ERROR|WARN|WARNING|INFO|DEBUG|NOTSET|VERBOSE|QUIET|PROFILE|TRACE|GARBAGE]
  --salt-output TEXT              Alternative Salt outputter, e.g. nested,
                                  json, yaml, etc.
  --help                          Show this message and exit.

Commands:
  highstate  render highstate for specified minions
  pillars    render pillar items for specified minions
  refresh    invoke saltutil.sync_all runner
  sls        render a given sls for specified minions
  template   render a file template for specified minions
  • Supported Python versions: 3.8, 3.9, 3.10
  • Supported Salt versions: 3005, 3006

Workaround for libcrypto.dylib failing to load on macOS

If slskit fails with zsh: abort or Abort trap: 6, inspect the error by running the command with PYTHONDEVMODE=1. If the issue is with _load_libcrypto call in rsax931.py, edit salt/utils/rsax931.py line 38:

-lib = find_library('crypto')
+lib = "/usr/local/opt/openssl@1.1/lib/libcrypto.dylib"

More info:

Workaround for exception raised when processing virtual function

When seeing errors like these:

ERROR:salt.loader:Exception raised when processing __virtual__ function for salt.loaded.int.module.freebsdkmod. Module will not be loaded: 'kernel'
WARNING:salt.loader:salt.loaded.int.module.freebsdkmod.__virtual__() is wrongly returning `None`. It should either return `True`, `False` or a new name. If you're the developer of the module 'freebsdkmod', please fix this.

You may need to add a corresponding grain to slskit.yaml file, e.g.:

# slskit.yaml

slskit:
  roster:
    foo:
      grains:
        kernel: Linux

You can find values for grains by inspecting grains.items on your real minions.

How to keep your grains DRY

Use default_grains option to avoid duplicating the same grains over all minions:

# slskit.yaml

slskit:
  roster:
    foo:
    bar:
    baz:
  default_grains:
    os: Ubuntu

For more advanced cases use YAML anchors:

# slskit.yaml

_grains:
  ubuntu: &ubuntu
    os: Ubuntu
  fedora: &fedora
    os: Fedora

slskit:
  roster:
    u1:
      grains:
        <<: *ubuntu
    u2:
      grains:
        <<: *ubuntu
    f1:
      grains:
        <<: *fedora
    f2:
      grains:
        <<: *fedora

How to reduce output verbosity

Use Salt's output configuration option, e.g.:

# slskit.yaml

salt:
  output: yaml

slskit:
  ...

External links