What is SaltStack?

SaltStack (often simply called Salt) is an open source**,** Python-based configuration management and automation engine. Unlike Ansible, it also supports agents running on nodes in client/server architecture. While we wish it used Go instead of python for some of it parts it's simple, well organized & performative enough for fairly large automations which can be scaled by simple architecture mechanisms.

How SaltStack Works

Salt uses a client-server architecture built for speed and high-concurrency. Key components include:

  • Master: The central server that sends out commands and instructions.
  • Minions: The individual servers, virtual machines, or network devices that receive and execute commands from the Master.
  • ZeroMQ: A high-speed messaging library that allows the Master to communicate with thousands of minions in seconds.
  • States: YAML-based configuration files that define the "desired state" of your infrastructure (e.g., ensuring a specific web server is always installed and running).

Core Capabilities

  • Remote Execution: Instantly run commands across thousands of servers simultaneously.
  • Configuration Management: Detect and fix "configuration drift" by continuously ensuring all systems match their defined states.
  • Event-Driven Automation: Features like Beacons (which monitor systems for specific events) and Reactors

Simple usage example in a pipeline

https://github.com/jeremybusk/saltstack-nginx-sls-example

Getting Started

https://docs.saltproject.io/en/master/topics/tutorials/walkthrough.html#salt-in-10-minutes/

https://github.com/saltstack/salt