2011-05-23 07:19:30 +00:00
|
|
|
|
=============
|
|
|
|
|
What is Salt?
|
|
|
|
|
=============
|
|
|
|
|
|
2012-05-02 16:31:02 +00:00
|
|
|
|
.. image:: https://secure.travis-ci.org/saltstack/salt.png?branch=develop
|
|
|
|
|
:target: http://travis-ci.org/saltstack/salt
|
|
|
|
|
|
2011-05-23 07:19:30 +00:00
|
|
|
|
.. rubric:: We’re not just talking about NaCl.
|
|
|
|
|
|
2011-11-25 01:45:54 +00:00
|
|
|
|
Distributed Remote Execution
|
2011-05-23 07:19:30 +00:00
|
|
|
|
============================
|
|
|
|
|
|
|
|
|
|
Salt is a distributed remote execution system used to execute commands and
|
|
|
|
|
query data. It was developed in order to bring the best solutions found in the
|
|
|
|
|
world of remote execution together and make them better, faster and more
|
|
|
|
|
malleable. Salt accomplishes this via its ability to handle larger loads of
|
2012-03-19 04:49:30 +00:00
|
|
|
|
information, and not just dozens, but hundreds, or even thousands of individual
|
|
|
|
|
servers. It handles them quickly and through a simple yet manageable interface.
|
2011-05-23 07:19:30 +00:00
|
|
|
|
|
|
|
|
|
Simplicity
|
|
|
|
|
==========
|
|
|
|
|
|
|
|
|
|
Versatility between massive scale deployments and smaller systems may seem
|
|
|
|
|
daunting, but Salt is very simple to set up and maintain, regardless of the
|
|
|
|
|
size of the project. The architecture of Salt is designed to work with any
|
|
|
|
|
number of servers, from a handful of local network systems to international
|
|
|
|
|
deployments across disparate datacenters. The topology is a simple
|
|
|
|
|
server/client model with the needed functionality built into a single set of
|
|
|
|
|
daemons. While the default configuration will work with little to no
|
|
|
|
|
modification, Salt can be fine tuned to meet specific needs.
|
|
|
|
|
|
2011-11-25 01:45:54 +00:00
|
|
|
|
Parallel Execution
|
2011-05-23 07:19:30 +00:00
|
|
|
|
==================
|
|
|
|
|
|
|
|
|
|
The core function of Salt is to enable remote commands to be called in parallel
|
2012-03-19 04:49:30 +00:00
|
|
|
|
rather than in serial. It does this over a secure and encrypted protocol using
|
|
|
|
|
the smallest and fastest network payloads possible. All of this is possible
|
2012-05-23 19:20:49 +00:00
|
|
|
|
and Salt still manages to have a simple interface for developers. Salt also
|
2012-03-19 04:49:30 +00:00
|
|
|
|
introduces more granular controls to the realm of remote execution,
|
2011-05-23 07:19:30 +00:00
|
|
|
|
allowing for commands to be executed in parallel and for systems to be targeted
|
2012-03-19 04:49:30 +00:00
|
|
|
|
based on more than just hostname, but by live system properties.
|
2011-05-23 07:19:30 +00:00
|
|
|
|
|
2011-11-25 01:45:54 +00:00
|
|
|
|
Building on Proven Technology
|
2011-05-23 07:19:30 +00:00
|
|
|
|
=============================
|
|
|
|
|
|
|
|
|
|
Salt takes advantage of a number of technologies and techniques. The networking
|
2012-03-19 04:49:30 +00:00
|
|
|
|
layer is built with the excellent `ZeroMQ`_ networking library. Salt itself
|
2012-05-23 19:20:49 +00:00
|
|
|
|
contains a viable, and transparent, ZeroMQ broker inside the daemon. Salt uses
|
2011-05-23 07:19:30 +00:00
|
|
|
|
public keys for authentication with the master daemon, then uses faster AES
|
2012-03-19 04:49:30 +00:00
|
|
|
|
encryption for payload communication. This means that authentication and
|
2011-05-23 07:19:30 +00:00
|
|
|
|
encryption are also built into Salt. Salt takes advantage of communication via
|
2012-03-19 04:49:30 +00:00
|
|
|
|
the most excellent `msgpack`_ library, enabling fast and light network traffic.
|
2011-05-23 07:19:30 +00:00
|
|
|
|
|
|
|
|
|
.. _`ZeroMQ`: http://www.zeromq.org/
|
|
|
|
|
|
2012-03-19 04:49:30 +00:00
|
|
|
|
.. _`msgpack`: http://msgpack.org/
|
|
|
|
|
|
|
|
|
|
|
2011-11-25 01:45:54 +00:00
|
|
|
|
Python Client Interface
|
2011-05-23 07:19:30 +00:00
|
|
|
|
=======================
|
|
|
|
|
|
2012-03-19 04:49:30 +00:00
|
|
|
|
Salt execution routines can be written as plain Python modules and the data
|
|
|
|
|
collected from execution can be sent back to the master server, or any
|
|
|
|
|
arbitrary program. Salt can be called from a simple Python API, or from the
|
|
|
|
|
command line. This makes it easy to execute one-off commands as well as
|
|
|
|
|
operate as an integral part of a larger application.
|
|
|
|
|
|
2011-05-23 07:19:30 +00:00
|
|
|
|
|
2011-11-25 01:45:54 +00:00
|
|
|
|
Fast, Flexible, Scalable, Secure
|
|
|
|
|
================================
|
2011-11-13 17:53:53 +00:00
|
|
|
|
|
|
|
|
|
The result is a system that can execute commands across groups of
|
|
|
|
|
varying size, from very few to very many servers at considerably high
|
2012-03-19 04:49:30 +00:00
|
|
|
|
speed. We consider speed to be a feature, not an afterthought. Salt’s
|
|
|
|
|
unique architecture brings together the best of the remote execution
|
|
|
|
|
world, amplifies its capabilities and expands its range, resulting in
|
2012-03-21 17:53:09 +00:00
|
|
|
|
this system that is as versatile as it is practical. Last but not least,
|
2012-05-23 19:20:49 +00:00
|
|
|
|
security is an intrinsic part of Salt and something not just
|
2011-11-14 13:10:36 +00:00
|
|
|
|
influencing how source code is written and how tests are done, but
|
|
|
|
|
also something that defines the overall architecture and has heavy
|
2012-06-30 13:25:06 +00:00
|
|
|
|
influence on the core design tenets.
|
2011-05-23 07:19:30 +00:00
|
|
|
|
|
|
|
|
|
Open
|
|
|
|
|
====
|
|
|
|
|
|
2011-11-14 13:10:36 +00:00
|
|
|
|
Salt is developed under the `Apache 2.0 licence`_, and can be used for
|
|
|
|
|
open and proprietary projects. Please submit your expansions back to
|
|
|
|
|
the Salt project so that we can all benefit together as Salt grows.
|
2012-05-23 19:20:49 +00:00
|
|
|
|
Finally, please sprinkle some Salt around your systems and let the
|
2012-03-19 04:49:30 +00:00
|
|
|
|
deliciousness come forth.
|
2011-05-23 07:19:30 +00:00
|
|
|
|
|
|
|
|
|
.. _`Apache 2.0 licence`: http://www.apache.org/licenses/LICENSE-2.0.html
|