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?

deck

By blarghmatey

deck

  • 508