Salt: Automation and Configuration Management System in Python
Salt is an open source fast and scalable configuration management and remote execution software. It offers completely new approach to how the IT organizations and DevOps teams work with all aspects of data center infrastructure management. Salt is easy to run and scale, to orchestrate any cloud and communicate with thousands of servers in seconds. As a systems management tool it is serious rival to such famous systems as Puppet, Chef, and Ansible.
Salt is the open source project and SaltStack is the company behind it. Need for quick data collection and execution in system administration environments was the impetus for the Salt creation. The main goal of the software is to simplify central system management and configuration, but make it extremely fast, powerful and flexible at the same time.
Salt was built to automate the process of systems configuration and make it predictable repeatable, and manageable. It is written in Python and is designed to be highly modular and easily extensible so that it can be modified to suit the needs of a developer or system administrator. Salt uses the Python ZeroMQ messaging library to support the high-speed tasks and enable Salt with ZeroMQ for all networking layers.
Salt’s client-server design for management of thousands of servers involves a “master” daemon that controls several agent daemons (called “minions”). Salt runs Execution Modules that allow direct execution against the salt-minions from the remote execution engine - the salt-master. Also the master leverages State modules - the backend for the Salt configuration management system - that execute the code to enforce, setup or change the configuration of a target system. The minions use “grains” - a program for detecting static information about a system and storing it in RAM for fast retrieval. Six types of modules (Execution, State, Grains, Renderer, Returners, Runners) handle all of the remote execution and state management behavior.
Cloud management system is built upon Apache Libcloud and allows cooperation with Amazon, Rackspace, Google, OpenStack and almost 30 other providers. The Mine system handles issues with time sensitive data, while the Salt Virt system covers all hypervisor needs. There is even support for Windows Server. A Job Management system and a reactionary event system manage automation, job scheduling, and event response. Salt can be applied for public, private, and hybrid clouds. It works on Linux, BSD, Solaris, Mac, and Windows operating systems.
One of the main Salt’s advantages, speed, is provided by a number of features:
- simplistic client-server design;
- high degree of parallelism;
- built-in asynchronous queuing file server;
- very efficient compiler;
- ability to batch packages together.
Salt provides extremely flexible and powerful remote execution platform for control over distributed infrastructure, data and code. Data center automation, cloud orchestration, server provisioning, configuration management and many more features are available with Salt. SaltStack released its enterprise version that offers extensive functionality, support, and training. For more information visit Saltstack website or Salt repository.