Before continuing make sure you have a working Salt installation by following the instructions in the Salt install guide.
Stuck?
The Salt Project community can help offer advice and help troubleshoot technical issues as you're learning about Salt. One of the best places to talk to the community is on the Salt Project Slack workspace.
Now that you have a master and at least one minion communicating with each other you can perform commands on the minion via the salt command. Salt calls are comprised of three main components:
salt '<target>' <function> [arguments]
See also
The target component allows you to filter which minions should run the following function. The default filter is a glob on the minion id. For example:
salt '*' test.version
salt '*.example.org' test.version
Targets can be based on minion system information using the Grains system:
salt -G 'os:Ubuntu' test.version
See also
Targets can be filtered by regular expression:
salt -E 'virtmach[0-9]' test.version
Targets can be explicitly specified in a list:
salt -L 'foo,bar,baz,quo' test.version
Or Multiple target types can be combined in one command:
salt -C 'G@os:Ubuntu and webser* or E@database.*' test.version
A function is some functionality provided by a module. Salt ships with a large collection of available functions. List all available functions on your minions:
salt '*' sys.doc
Here are some examples:
Show all currently available minions:
salt '*' test.version
Run an arbitrary shell command:
salt '*' cmd.run 'uname -a'
See also
Space-delimited arguments to the function:
salt '*' cmd.exec_code python 'import sys; print(sys.version)'
Optional, keyword arguments are also supported:
salt '*' pip.install salt timeout=5 upgrade=True
They are always in the form of kwarg=argument
.