Remote execution tutorial

Before continuing make sure you have a working Salt installation by following the instructions in the Salt install guide.


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.

Order your minions around

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

salt manpage


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 '*' test.version

Targets can be based on minion system information using the Grains system:

salt -G 'os:Ubuntu' test.version

See also

Grains system

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 '*' 'uname -a'


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.