SaltStack

Salt, a new approach to infrastructure management, is easy enough to get running in minutes, scalable enough to manage tens of thousands of servers, and fast enough to communicate with those servers in seconds.

Salt delivers a dynamic communication bus for infrastructures that can be used for orchestration, remote execution, configuration management and much more.

Download

Salt source releases are available for download via the following PyPI link:

The installation document, found in the following link, outlines where to obtain packages and installation specifics for platforms:

The Salt Bootstrap project, found in the following repository, is a single shell script, which automates the install correctly on multiple platforms:

Get Started

A new Get Started Guide walks you through the basics of getting SaltStack up and running. You'll learn how to:

  • Install and configure SaltStack
  • Remotely execute commands across all managed systems
  • Design, develop, and deploy system configurations

Tutorials

This walkthrough is an additional tutorial to help you get started quickly and gain a foundational knowledge of Salt:

Official Salt Walkthrough

The following getting started tutorials are also available:

States - Configuration Management with Salt:
Masterless Quickstart:
Salt Quickstart
A list of all tutorials can be found here:
All Salt tutorials

Demo Environments

You can download one of the following Vagrant projects to quickly set up a Salt demo environment:

Salt in depth

While setting up, and using, Salt is a simple task, its capabilities run much deeper. These documents provide a greater understanding of how Salt empowers infrastructure management.

Remote execution

Running pre-defined or arbitrary commands on remote hosts, also known as remote execution, is the core function of Salt. The following links explore modules and returners, which are two key elements of remote execution.

Modules

Salt modules, fundamental to remote execution, provide functionality such as installing packages, restarting a service, running a remote command, transferring files, and so on.

Full list of modules
Contains: a list of core modules that ship with Salt.
Writing modules
Contains: a guide on how to write Salt modules.
Returners

Salt returners allow saving minion responses in various datastores, or to various locations, in addition to displaying the responses at the CLI. Returners can be used to extend Salt to communicate with new, or custom, interfaces and to support new databases.

Full list of returners
Contains: list of returner modules used to store minion responses in Redis, Mongo, Cassandra, SQL, and others.
Writing returners
Contains: instructions for writing returner modules.

Targeting

Use targeting to specify which minions should execute commands and manage server configuration. The following links provide additional information about targeting and matching minions.

Globbing and regex
Match minions using globbing and regular expressions.
Grains
Match minions using grains, which are bits of static information about the minion such as OS, software version, virtualization, CPU, memory, and so on.
Pillar
Match minions using user-defined variables.
Subnet/IP Address
Match minions by subnet or IP address (currently IPv4 only).
Compound matching
Combine any of the above matchers into a single expression.
Node groups
Statically define groups of minions in the master config file using the compound matching syntax.
Batching execution
Loop through all matching minions so that only a subset are executing a command at one time.

Configuration management

Salt contains a robust and flexible configuration management framework, which is built on the remote execution core. This framework executes on the minions, allowing effortless, simultaneous configuration of tens of thousands of hosts, by rendering language specific state files. The following links provide resources to learn more about state and renderers.

States

Express the state of a host using small, easy to read, easy to understand configuration files. No programming required.

Full list of states
Contains: list of install packages, create users, transfer files, start services, and so on.
Pillar System
Contains: description of Salt's Pillar system.
States Overview
Contains: an overview of states and some of the core components.
Highstate data structure
Contains: a dry vocabulary and technical representation of the configuration format that states represent.
Writing states
Contains: a guide on how to write Salt state modules, easily extending Salt to directly manage more software.
Renderers

Renderers use state configuration files written in a variety of languages, templating engines, or files. Salt's configuration management system is, under the hood, language agnostic.

Full list of renderers
Contains: a list of renderers. YAML is one choice, but many systems are available, from alternative templating engines to the PyDSL language for rendering sls formulas.
Renderers
Contains: more information about renderers. Salt states are only concerned with the ultimate highstate data structure, not how the data structure was created.

Miscellaneous topics

The following links explore various Salt topics in depth.

Salt Cloud
Salt Cloud is a public cloud provisioning tool that integrates Salt with many cloud providers.
File Server
Salt can easily and quickly transfer files (in fact, that's how Salt states work). Even under heavy load, files are chunked and served.
Syndic
Syndic is a tool to allow one master host to manage many masters, which in turn manage many minions. Scale Salt to tens of thousands of hosts or across many different networks.
Peer Communication
Allow minions to communicate among themselves. For example, configure one minion by querying live data from all the others.
Reactor System
The reactor system allows for Salt to create a self aware environment by hooking infrastructure events into actions.
Firewall Settings and Salt
This is a tutorial covering how to properly firewall a Salt Master server.
Scheduling Executions (like states)
The schedule system in Salt allows for executions to be run from the master or minion at automatic intervals.
Network topology
At it's core, Salt is a highly scalable communication layer built on top of ZeroMQ, which enables remote execution and configuration management. The possibilities are endless and Salt's future looks bright.
Testing Salt
This is a tutorial for writing unit tests and integration tests.
Salt Proxy Minions
Proxy minions allow for the control of devices and machines which are unable to run a salt-minion.
Python API interface
The Python API allows the developer to use Salt locally from scripts and programs easily via import salt.
External API interfaces
Expose a Salt API such as REST, XMPP, WebSockets, or others using netapi modules. Run these modules using the salt-api daemon. See the full list of netapi modules.
Automatic Updates and Frozen Binary Deployments
Use a frozen install to make deployments easier (even on Windows!). Or take advantage of automatic updates to keep minions running the latest builds.
Windows Software Manager / Package Repository
Looking for an easy way to manage software on Windows machines? Search no more! Salt has an integrated software package manager for Windows machines! Install software hosted on the master, anywhere on the network, including any HTTP, HTTPS, or ftp server.

Reference

Command-line interface
Read the Salt manpages.
Full list of master settings
Read through the heavily-commented master configuration file.
Full list of minion settings
Read through the heavily-commented minion configuration file.
Full table of contents
Read the table of contents of this document.

FAQ

See here for a list of Frequently Asked Questions.

More information about the project

Release notes
Living history of SaltStack.
Salt Development
Information for Hacking on Salt
Translate Documentation
How to help out translating Salt to your language.
Security disclosures
The SaltStack security disclosure policy