Developer(s) Thomas S Hatch | Written in Python | |
Initial release 19 March 2011; 6 years ago (2011-03-19) Stable release 2016.11.3 / 22 February 2017; 32 days ago (2017-02-22) Repository github.com/saltstack/salt.git Operating system |
SaltStack platform or Salt is a Python-based open-source configuration management software and remote execution engine. Supporting the "Infrastructure as Code" approach to deployment and cloud management, it competes primarily with Puppet, Chef, and Ansible.
Contents
History
Salt originated from the need for high speed data collection and execution in system administration environments. The author of Salt, Thomas S Hatch, had previously created a number of in-house solutions for companies to solve the problem but found his and other open source solutions to be lacking. Hatch decided to use the ZeroMQ messaging library to facilitate the high-speed requirements and built Salt using ZeroMQ for all networking layers.
In July 2014 (in "Helium" release) RAET (Reliable Asynchronous Event Transport Protocol) reliable queuing transport system was added. It has been developed in partnership with a number of large enterprises to give Salt an alternative to ZeroMQ and a way to get Salt to scale well beyond tens of thousands of servers.
States
In late May 2011, initial progress was made toward the development of adding a central configuration manager to Salt. This configuration management system is based on storing all of the configuration or "state" data inside an easily understood data structure. While experimental functionality of the Salt State system was available in May 2011, it was not considered stable until the release of Salt 0.9.3 in November 2011.
Design
Salt was designed to be highly modular and easily extensible, to make it easy to mold to diverse applications.
The module design of Salt creates Python modules that handle certain aspects of the available Salt systems. These modules allow for the interactions within Salt to be detached and modified to suit the needs of a developer or system administrator.
Module types
The Salt system maintains many module types to manage specific actions. Modules can be added to any of the systems that support dynamic modules. These modules manage all the remote execution and state management behavior of Salt. The modules can be separated into six groups: