:orphan:
.. _contents:
.. |vid| image:: /_static/film_link.png
:class: math
Get started with Salt
=====================
.. sidebar:: Presentations
A list of `presentations and interviews on Salt`_ (including the FLOSS
Weekly interview).
.. _`presentations and interviews on Salt`: http://saltstack.org/learn/
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 :doc:`Salt overview ` for a more thorough description.
Tutorial 1: Remote execution
----------------------------
.. sidebar:: |vid| Screencasts
Watch the `remote execution screencast`__.
.. __: http://blip.tv/saltstack/salt-installation-configuration-and-remote-execution-5713423
The quickest way to see Salt in action is to run a command on a :term:`minion`
host from the :term:`master` host. This is widely known as :term:`remote
execution` — executing commands on remote hosts.
1. :doc:`Installation `
2. :doc:`Configure the minion `
3. :doc:`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 :term:`configuration management` —
installing packages, configuring users and services, and much more.
1. :doc:`Getting Started with States`
2. :doc:`Basic config management `
3. :doc:`Less basic config management `
4. :doc:`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.
.. sidebar:: More tutorials!
* :doc:`Bootstraping Salt on EC2 `
* :doc:`Preseeding Minions with Accepted Keys `
.. contents:: The components of Salt
:local:
:depth: 2
:doc:`Targeting `
------------------------------------------
Targeting is specifying which minions should execute commands or manage server
configuration.
:doc:`Globbing and regex `
Match minions using globing and regular expressions.
:doc:`Grains `
Match minions using bits of static information about the minion such as
OS, software versions, virtualization, CPU, memory, and much more.
:doc:`Node groups `
Statically define groups of minions.
:doc:`Compound matchers `
Combine the above matchers as a single target.
:doc:`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.
:doc:`Full list of modules `
The giant list of core modules that ship with Salt
(And there are even more in the `salt-contrib`_ repository!)
:doc:`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.
:doc:`Full list of returners ]`
Store minion responses in Redis, Mongo, Cassandra or more.
:doc:`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).
:doc:`Full list of states ][`
Install packages, create users, transfer files, start services, and
much more.
:doc:`Using states ][`
You've seen the big list of available states, now learn how to call
them.
:doc:`Highstate data structure ][`
A dry vocabulary and technical representation of the configuration
format that states represent.
**Renderers**
Write state configuration files in the language, templating engine, or
file type of your choice. The world doesn't need yet another DSL.
:doc:`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.)
:doc:`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.
:doc:`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.
:doc:`Syndic ][`
A seamless master of masters. Scale Salt to thousands of hosts or
across many different networks.
:doc:`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.
:doc:`Running Salt without root `
The Salt daemons can be run as an unprivileged user.
:doc:`Firewall settings and Salt `
A tutorial covering how to properly firewall a Salt Master server.
:doc:`Cron and Salt States `
A tutorial covering how to properly use cron to schedule when a
minion updates its state.
:doc:`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.
:doc:`Testing Salt `
A howto for writing unit tests and integration tests.
:doc:`Python API interface ][`
Use Salt programmatically from your own scripts and programs easily and
simply via ``import salt``.
:doc:`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.
Reference
---------
:doc:`Command-line interface ][`
Read the Salt manpages.
:doc:`Full list of master settings ][`
Read through the heavily-commented master configuration file.
:doc:`Full list of minion settings ][`
Read through the heavily-commented minion configuration file.
:doc:`Full table of contents `
Dense but complete.
More information about the project
----------------------------------
:doc:`Release notes ]`
Where we've been.
:doc:`Community `
How you can get involved.
.. _`salt-contrib`: https://github.com/saltstack/salt-contrib
.. _`salt-states`: https://github.com/saltstack/salt-states