Get started with Salt

Salt is an open source tool to manage your infrastructure. Easy enough to get running in minutes and fast enough to manage tens of thousands of servers (and still get a response back in seconds).

Execute arbitrary shell commands or choose from dozens of pre-built modules of common (or complex) commands. Target individual servers or groups of servers based on name, defined roles, or a variety of system information such as hardware, software, operating system, current version, current environment, and many more.

Bring your servers up to a known configured state by writing simple lists of items and defining attributes on those lists—no need to learn yet another language.

Read the Salt overview for a more thorough description.

Salt (Masterless) Quickstart

Install salt-minion and provision a webserver in 3 easy steps. The fastest way to start using salt's configuration management.

Salt Quickstart

Tutorial 1: Remote execution

The quickest way to see Salt in action is to run a command on a minion host from the master host. This is widely known as remote execution — executing commands on remote hosts.

  1. Installation
  2. Configure the minion
  3. Run remote commands

Tutorial 2: Configuration management

Now that you have the basics out of the way, learn to use Salt to configure your servers. This is widely known as configuration management — installing packages, configuring users and services, and much more.

  1. Getting Started with States
  2. Basic config management
  3. Less basic config management
  4. Advanced techniques

Salt in depth

Setting up and using Salt is a simple task but its capabilities run much, much deeper. Gaining a better understanding of how Salt works will allow you to truly make it work for you.

Targeting

Targeting is specifying which minions should execute commands or manage server configuration.

Globbing and regex
Match minions using globbing and regular expressions.
Grains
Match minions using bits of static information about the minion such as OS, software versions, virtualization, CPU, memory, and much more.
Node groups
Statically define groups of minions.
Compound matchers
Combine the above matchers as a single target.
Batching execution
Loop through all matching minions so that only a subset are executing a command at one time.

Remote execution

Remote execution is the core functionality of Salt. Running pre-defined or arbitrary commands on remote hosts.

Modules

Salt modules are the core of remote execution. They provide functionality such as installing a package, restarting a service, running a remote command, transferring a file — and the list goes on.

Full list of modules
The giant list of core modules that ship with Salt (And there are even more in the salt-contrib repository!)
Writing modules
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 display at the CLI.

Full list of returners
Store minion responses in Redis, Mongo, Cassandra or more.
Writing returners
If we're missing your favorite storage backend, webservice, or you need a custom endpoint returners are tiny and simple to write.

Configuration management

Building on the remote execution core is a robust and flexible config management framework. Execution happens on the minions allowing effortless, simultaneous configuration of thousands of hosts.

States

Express the state of a host using small, easy to read, easy to understand configuration files. No programming required (unless you want to).

Full list of states
Install packages, create users, transfer files, start services, and much more.
Using states
You've seen the big list of available states, now learn how to call them.
Highstate data structure
A dry vocabulary and technical representation of the configuration format that states represent.
Writing states
A guide on how to write Salt states.
Renderers

Write state configuration files in the language, templating engine, or file type of your choice. The world doesn't need yet another DSL.

Full list of renderers
YAML? JSON? Jinja? Mako? Wempy? Python? We got you covered. (And if we don't, new renderers are tiny and easy to write.)
Renderers
Salt states are only concerned with the ultimate highstate data structure. How you create that data structure isn't our business. Tweak a config option and use whatever you're most comfortable with.

Miscellaneous topics

Salt is many splendid things.

File Server
Salt can easily and quickly transfer files (in fact, that's how Salt States work). Even under load, files are chunked and served.
Syndic
A seamless master of masters. Scale Salt to thousands of hosts or across many different networks.
Peer communication
Allow minions to communicate amongst themselves. For example, configure one minion by querying live data from all the others. With great power comes great responsibility.
Running Salt without root
The Salt daemons can be run as an unprivileged user.
Firewall settings and Salt
A tutorial covering how to properly firewall a Salt Master server.
Cron and Salt States
A tutorial covering how to properly use cron to schedule when a minion updates its state.
Network topology
At it's core, Salt is a highly scalable communication layer built on top of ZeroMQ that enables remote execution and configuration management. The possibilities are endless and Salt's future looks bright.
Testing Salt
A howto for writing unit tests and integration tests.
Python API interface
Use Salt programmatically from your own scripts and programs easily and simply via import salt.
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 your minions running your latest builds.
Windows Software Manager / Package Repository
Looking for an easy way to manage software on all your Windows machines? Do you feel left out of all the package manager magic found in yum and apt? Search no more! Salt has an integrated software package manager for your Windows machines! Install software hosted on your master, somewhere on your network, or anywhere http, https, and ftp work.

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
Dense but complete.

More information about the project

Release notes
Where we've been.
Community
How you can get involved.
Salt Development
Information for Hacking on Salt