The event system & reactor
Event-driven automation.
Underneath everything Salt does is an event bus: minions and the master emit events — a minion starts, a job returns, a state fails, a custom event you fire — and the master can watch that stream. The reactor system hooks events to actions: when an event matching a tag appears, the reactor triggers a remote-execution or state action in response. This is what turns Salt from a tool you drive into an event-driven automation system that responds on its own.
# watch the live event bus (great for discovering event tags)$ salt-run state.event pretty=Truesalt/minion/web3/start { '_stamp': '...', 'id': 'web3' }salt/job/2024.../ret/web1 { 'success': True, ... }
# /etc/salt/masterreactor:- 'salt/minion/*/start':- /srv/reactor/onboard.sls---# /srv/reactor/onboard.sls — apply highstate the moment a new minion connectsonboard_new_minion:local.state.highstate:- tgt: {{ data['id'] }}
What event-driven Salt unlocks
The reactor enables self-managing infrastructure: auto-apply highstate when a node first connects, remediate automatically when a monitoring event fires, scale a service in response to a custom event from your app. Combined with the orchestrate runner (which coordinates multi-step, cross-minion workflows from the master), Salt handles orchestration that ordered playbooks struggle with. It is Salt’s most distinctive advanced capability.