The Architecture of SaltStack
Master
Controls Minions
Supports multiple protocols
Central point of control
Minion
Agent running on host
Executes commands from master
Able to communicate with neighbors
Can send events to master
States
Used for config management
YAML with Jinja2
Executes in order, able to provide requirements ordering
Pillar
Stores changeable data (passwords, ports, etc.)
Pluggable system, can use external stores (Redis, MySQL, etc.)
YAML with Jinja2
Target data based on various node attributes
Data only gets sent directly to targeted nodes
Grains
Provides data about host
Pluggable system, can write your own grains
Similar to Facter, Omnibus
Reactor
Asynchronous reactive task runner
Triggered based on event type
Useful for provisioning new nodes
Infinite possibilities
Transports
ZeroMQ by default
Salt-SSH available (agentless execution)
RAET (Reliable Asynchronous Event Transport) - High performance, reliable UDP protocol
Modules
Huge list of built-in modules
Can be written in any language
Wrapped by built-in states
Questions?
Made with Slides.com