Salt Calls

Salt calls have three main components: target, function, and arguments. The calls are constructed in this format:

salt 'target' <function> [arguments]

The target defines the client, or group of clients, on which to run the function.

The function is the particular task to be run.

Arguments provide any extra data required by the function.

Salt Call Targets

Salt call targets allow you to specify a client or group of clients. There are several different targets you can use.

General Targeting

List available grains on all clients:

salt '*' grains.ls

Target a specific client:

salt 'web1.example.com' test.ping
Glob Targeting

Target all clients using a particular domain:

salt '*example.com' test.ping

Target all clients using a particular label:

salt 'label*' test.ping
List Targeting

Specify a flat list of clients, using their IDs:

salt -L 'client_ID1, client_ID2, client_ID3' test.ping
Regular Expression Targeting

You can also define targets with PCRE-compliant regular expressions:

salt -E '(?!web)' test.ping
IP Address Targeting

List available client IP addresses:

salt '*' network.ip_addrs

Target a specific client IP address:

salt -S '172.31.60.74' test.ping

Target all clients on a subnet:

salt -S 172.31.0.0/16 test.ping

Salt Call Functions

When you have specified a target, provide the function to call on the target.

Find which functions can be called on the target:

salt '*' sys.doc

For a full list of callable functions, see https://docs.saltstack.com/en/latest/ref/modules/all/index.html.

Salt Call Arguments

Functions accept arguments for any extra data.

For example, the pkg.install function requires an argument specifying which package to install:

salt '*' pkg.install yast2

You can provide more than one argument to a function, with spaces between them. For example:

salt '*' cmd.run 'echo "Hello: $FIRST_NAME"' env='{FIRST_NAME: "John"}'