salt-lint
checks Salt state files (SLS) for practices and behavior that could potentially be improved.
The project is heavily based on ansible-lint, which was created by Will Thames and is now maintained as part of the Ansible by Red Hat project.
pip install salt-lint
pip install git+https://github.com/roaldnefs/salt-lint.git
The following is the output from salt-lint --help
, providing an overview of the basic command line options:
Usage: salt-lint [options] init.sls [state ...]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-L list all the rules
-t TAGS only check rules whose id/tags match these values
-v Increase verbosity level
-x SKIP_LIST only check rules whose id/tags do not match these
values
--nocolor disable colored output
--force-color Try force colored output (relying on salt's code)
--exclude=EXCLUDE_PATHS
path to directories or files to skip. This option is
repeatable.
-c C Specify configuration file to use. Defaults to
".salt-lint"
It's important to note that salt-lint
accepts a list of Salt state files or a list of directories.
Salt-lint supports local configuration via a .salt-lint
configuration file. Salt-lint checks the working directory for the presence of this file and applies any configuration found there. The configuration file location can also be overridden via the -c path/to/file
CLI flag.
If a value is provided on both the command line and via a configuration file, the values will be merged (if a list like exclude_paths), or the True value will be preferred, in the case of something like quiet.
The following values are supported, and function identically to their CLI counterparts:
---
exclude_paths:
- exclude_this_file
- exclude_this_directory/
- exclude/this/sub-directory/
skip_list:
- 207
- 208
tags:
- formatting
verbosity: 1
To use salt-lint with pre-commit, just add the following to your local repo's .pre-commit-config.yaml
file. Prior to version 0.12.0 of pre-commit the file was hooks.yaml
(now .pre-commit-config.yaml
).
---
# For use with pre-commit.
# See usage instructions at http://pre-commit.com
- id: salt-lint
name: Salt-lint
description: This hook runs salt-lint.
entry: salt-lint
language: python
files: \.(sls)$
Some rules are bit of a rule of thumb. To skip a specific rule for a specific task, inside your state add # noqa [rule_id]
at the end of the line. You can skip multiple rules via a space-separated list. Example:
/tmp/testfile:
file.managed:
- source: salt://{{unspaced_var}}/example # noqa: 206
salt-lint is heavily based on ansible-lint with the modified work by Roald Nefs. ansible-lint was created by Will Thames and is now maintained as part of the Ansible by Red Hat project.