You'll learn how to:
Estimated time: 10 minutes
Difficulty:
Salt’s internal components communicate with each other by sending and listening to events. In Salt, events are sent for about everything you could imagine:
Even the Salt command-line interface uses the event system. After a command is sent to the Salt master, the Salt CLI simply watches the event bus for job returns from targeted minions.
Salt provides a runner that displays events in real-time as they are received on the Salt master.
salt-run state.event pretty=True
If you are using a demo environment your event bus is probably quiet, so open another terminal and send a salt '*' test.ping
command, or restart the salt-minion
service on one of your minions.
The following are a few events that are similar to what you might see on your Salt master:
salt/job/20150923203228234305/new {
"_stamp": "2015-09-23T20:32:28.235712",
"arg": [],
"fun": "test.ping",
"jid": "20150923203228234305",
"minions": [
"minion2"
],
"tgt": "*",
"tgt_type": "glob",
"user": "sudo_vagrant"
}
salt/job/20150923203228234305/ret/minion2 {
"_stamp": "2015-09-23T20:32:28.291789",
"cmd": "_return",
"fun": "test.ping",
"fun_args": [],
"id": "minion2",
"jid": "20150923203228234305",
"retcode": 0,
"return": true,
"success": true
}
salt/auth {
"_stamp": "2015-09-23T20:30:02.998305",
"act": "pend",
"id": "minion1",
"pub": "-----BEGIN PUBLIC KEY-----\...\n-----END PUBLIC KEY-----\n",
"result": true
}
Events are made up of two main parts: the tag which identifies the event that was fired, and the data that contains details about the event.
All salt events are prefixed with salt/
, with additional levels based on the type of event. For example, job events are prefixed with salt/job/
. Each event part is separated using /
to provide simple namespacing. This is identifier is called the event tag, and often contains specific details such as a job ID or minion ID.
Along with the event tag, each event also includes specific event data.
Each event contains a timestamp
and additional keys and values that are unique to that specific event.
Later when we explore the reactor, you’ll learn how to use the event tag and data to customize the reaction.