Salt (software): Difference between revisions
No edit summary |
Citation bot (talk | contribs) Added date. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Software using the Apache license | #UCB_Category 229/325 |
||
(168 intermediate revisions by 91 users not shown) | |||
Line 1: | Line 1: | ||
{{ |
{{short description|Configuration management software}} |
||
{{About|the automation and configuration management software|the cryptography library|NaCl (software)}} |
|||
{{primary sources|date=September 2020}} |
|||
{{Infobox software |
{{Infobox software |
||
| title = |
|||
| name = Salt |
|||
| name = Salt |
|||
| title = |
|||
| logo |
| logo = SaltStack logo blk 2k.png |
||
| logo |
| logo size = 200px |
||
| logo caption = |
|||
| screenshot = <!-- [[File: ]] --> |
|||
| screenshot = |
|||
| caption = |
|||
| caption = |
|||
| collapsible = |
|||
| collapsible = |
|||
| author = |
|||
| |
| author = Thomas S Hatch |
||
| developer = [[Broadcom]] |
|||
| released = {{Start date|2011|03|19|df=yes/no}} |
|||
| released = {{Start date and age|2011|03|19|df=yes}} |
|||
| discontinued = |
|||
| discontinued = |
|||
| latest release version = 0.17.4 [https://github.com/saltstack/salt/releases/tag/v0.17.4] |
|||
| latest release |
| latest release version = 3006.6 |
||
| latest release date = {{Start date and age|2024|01|31|df=yes}}<ref>{{ cite web | url = https://github.com/saltstack/salt/releases | title = Releases - saltstack/salt | accessdate = 2024-01-31 | via = [[GitHub]] }}</ref> |
|||
| latest preview version = |
| latest preview version = |
||
| latest preview date |
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> |
||
| programming language = [[Python (programming language)|Python]] |
|||
| frequently updated = <!-- DO NOT include this parameter unless you know what it does --> |
|||
| operating system = [[Unix-like]], [[macOS]], [[Microsoft Windows]] |
|||
| programming language = [[Python (programming language)|Python]] |
|||
| platform = |
|||
| operating system = [[GNU/Linux]], [[Unix-like]] |
|||
| size = |
|||
| platform = |
|||
| language = |
|||
| size = |
|||
| language |
| language footnote = |
||
| genre = [[Configuration management]] and [[Infrastructure as Code]] |
|||
| language count = <!-- DO NOT include this parameter unless you know what it does --> |
|||
| license = [[Apache License 2.0]] |
|||
| language footnote = |
|||
| alexa = |
|||
| status = |
|||
| genre = [[Configuration management]] |
|||
| license = [[Apache License|Apache]] |
|||
| alexa = |
|||
| website = {{URL|http://saltstack.com/}} |
|||
}} |
}} |
||
'''Salt''' is an [[Open-source software|open source]] [[configuration management]] and remote execution application. Salt is written with the intent of making central system management and configuration as simple, yet as flexible as possible. |
|||
'''Salt''' (sometimes referred to as '''SaltStack''') is a Python-based, [[open-source software]] for event-driven IT automation, remote task execution, and [[configuration management]]. Supporting the "[[infrastructure as code]]" approach to data center system and network deployment and management, configuration automation, SecOps orchestration, vulnerability remediation, and hybrid cloud control. |
|||
== History == |
== History == |
||
Salt originated from the need for high |
Salt originated from the need for high-speed data collection and task execution for data center systems administrators managing massive infrastructure scale and resulting complexity. The author of Salt, Thomas S. Hatch, had previously created several utilities for IT teams to solve the problem of systems management at scale, but found these and other open source solutions to be lacking.<ref>{{cite web |url= https://twit.tv/shows/floss-weekly/episodes/191 |title= FLOSS Weekly 191: Salt |publisher= TwitTV |accessdate=2020-01-13}}</ref> Hatch decided to use the [[ZeroMQ]] messaging library to facilitate the high-speed requirements and built Salt using ZeroMQ for all networking layers. |
||
In late May 2011 initial progress was made toward the delivery of configuration management built on the Salt remote execution engine.<ref>{{cite web |url= https://red45.wordpress.com/2011/05/29/salt-configuration-management/ |title= red45.wordpress.com salt configuration management |date= 29 May 2011 |publisher= red45.wordpress.com |accessdate=May 29, 2011}}</ref> This configuration management system stores all configuration (state) data inside an easily understood data structure that leverages [[YAML]]. 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.<ref>{{cite web |url= http://saltstack.org/topics/releases/0.9.3/#state-system-fixes |title= Salt Release Notes - 0.9.3 |publisher= saltstack |accessdate=Nov 6, 2011}}</ref> |
|||
=== States === |
|||
The Salt 0.14.0 release introduced an advanced cloud control system making private and public cloud VMs directly manageable with Salt. The Salt Cloud function allows for provisioning of any hybrid cloud host, then exposes Salt remote execution, configuration management, and event-driven automation capabilities to the newly provisioned hybrid cloud systems. New virtual machines and cloud instances are automatically connected to a Salt Master after creation. |
|||
In late May 2011, initial progress was made toward the development of adding a central configuration manager to Salt.<ref>{{cite web |url= http://red45.wordpress.com/2011/05/29/salt-configuration-management/ |title= red45.wordpress.com salt configuration management |publisher= red45.wordpress.com |accessdate=May 29, 2011}}</ref> 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.<ref>{{cite web |url= http://saltstack.org/topics/releases/0.9.3/#state-system-fixes |title= Salt Release Notes - 0.9.3 |publisher= saltstack |accessdate=Nov 6, 2011}}</ref> |
|||
Salt Cloud supports 25 public and private cloud systems including [[Amazon Web Services|AWS]], [[Microsoft Azure|Azure]], [[VMware]], [[IBM Cloud and Smarter Infrastructure|IBM Cloud]], and [[OpenStack]]. Salt Cloud provides an interface for Salt to interact with cloud hosts and the cloud’s functionality such as DNS, storage, load balancers, etc. |
|||
In September 2020, [[VMware]] acquired SaltStack.<ref>{{Cite news|title=Intent to Acquire SaltStack|language=en-US|url=https://www.vmware.com/company/news/updates/2020/intent-to-acquire-saltstack.html|access-date=2020-09-29}}</ref><ref>{{Cite web|last=Gagliordi|first=Natalie|title=VMware to acquire automation software provider SaltStack|url=https://www.zdnet.com/article/vmware-to-acquire-automation-software-provider-saltstack/|access-date=2020-10-01|website=ZDNet|language=en}}</ref> |
|||
== Design == |
== Design == |
||
Salt |
Salt was designed to be highly modular and easily extensible, to make it easy to mold to diverse enterprise IT use cases.<ref>{{cite web |url= https://twit.tv/shows/floss-weekly/episodes/191 |title= FLOSS Weekly 191: Salt |publisher= TwitTV |accessdate=2020-01-13}}</ref> |
||
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. |
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. |
||
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: |
|||
=== Module types === |
|||
* ''Execution modules'' are the workhorse for Salt's functionality. They represent the functions available for direct execution from the remote execution engine. These modules contain the specific cross platform information used by Salt to manage portability, and constitute the core API of system level functions used by Salt systems.<ref>{{cite web |url= https://docs.saltstack.com/en/latest/ref/modules/ |title= Writing Execution Modules |publisher= SaltStack |accessdate=2020-01-13}}</ref> |
|||
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 of the remote execution and state management behavior of Salt. The modules can be separated into six groups: |
|||
* ''State modules'' are the components that make up the backend for the Salt configuration management system. These modules execute the code needed to enforce, set up or change the configuration of a target system. Like other modules, more states become available when they are added to the states modules. |
|||
* ''Grains'' are a system for detecting static information about a system and storing it in RAM for rapid gathering.<ref>{{cite web |url= https://docs.saltstack.com/en/latest/ref/#grains |title= Salt Module Reference |publisher= SaltStack |accessdate=2020-01-13}}</ref> |
|||
* ''Renderer modules'' are used to render the information passed to the Salt state system. The renderer system is what makes it possible to represent Salt's configuration management data in any serializable format.<ref>{{cite web |url= https://docs.saltstack.com/en/latest/ref/renderers/ |title= Renderers |publisher= SaltStack |accessdate=2020-01-13}}</ref> |
|||
* ''Returners'': the remote execution calls made by Salt are detached from the calling system; this allows the return information generated by the remote execution to be returned to an arbitrary location. Management of arbitrary return locations is managed by the Returner Modules.<ref>{{cite web |url= https://docs.saltstack.com/en/latest/ref/returners/ |title= Returners |publisher= SaltStack |accessdate=2020-01-13}}</ref> |
|||
* ''Runners'' are master side convenience applications executed by the salt-run command.<ref>{{cite web |url= https://docs.saltstack.com/en/latest/ref/runners/ |title= Runners |publisher= SaltStack |accessdate=2020-01-13}}</ref> |
|||
== Vulnerabilities == |
|||
# Execution Modules |
|||
# State Modules |
|||
# Grains |
|||
# Renderer Modules |
|||
# Returners |
|||
# Runners |
|||
In April 2020, [[F-Secure]] revealed two high severity [[Remote code execution|RCE (Remote Code Execution)]] vulnerabilities, identified as [https://nvd.nist.gov/vuln/detail/CVE-2020-11651 CVE-2020-11651] and [https://nvd.nist.gov/vuln/detail/CVE-2020-11652 CVE-2020-11652], with [[Common Vulnerability Scoring System|CVSS]] score reaching as high as 10. These critical vulnerabilities were found within Salt's default communication channel [[ZeroMQ]], and the initial research discovered 6000 vulnerable Salt servers. Salt organization was notified before F-Secure's public announcement, and Salt soon released the patch in its updated releases: 2019.2.4 and 3000.2.<ref>{{Cite web|title=Critical SaltStack Vulnerability Provides Root Access to Cyberattacker|url=https://www.hackreports.com/critical-saltstack-vulnerability-rce-exploit/|date=2020-05-05|website=Hack Reports|language=en|access-date=2020-05-18}}</ref> |
|||
==== Execution modules ==== |
|||
==See also== |
|||
Execution modules are the workhorse for Salt's functionality. The execution modules represent the functions that are available for direct execution from the remote execution engine. These modules contain the specific cross platform information used by Salt to manage portability, and constitute the core api of system level functions used by Salt systems.<ref>{{cite web |url= http://docs.saltstack.com/ref/modules/ |title= salt documentation - Writing Modules |publisher= saltstack |accessdate=November 3, 2011}}</ref> |
|||
{{Portal|Free and open-source software}} |
|||
* [[Comparison of open-source configuration management software]] |
|||
==== State modules ==== |
|||
* [[CFEngine|CFEngine (software)]] |
|||
== References == |
|||
State modules are the components that make up the backend for the Salt configuration management system. These modules execute the code needed to enforce, set up or change the configuration of a target system. Like other modules, more states become available when they are added to the states modules. |
|||
{{refs}} |
|||
==== Grains ==== |
|||
Grains constitute a system for detecting static information about a system and storing it in RAM for rapid gathering.<ref>{{cite web |url= http://docs.saltstack.com/ref/#grains |title= salt documentation - Grains |publisher= saltstack |accessdate=November 3, 2011}}</ref> |
|||
==== Renderer modules ==== |
|||
Renderer modules are used to render the information passed to the Salt state system. The renderer system is what makes it possible to represent Salt's configuration management data in any serializable format.<ref>{{cite web |url= http://docs.saltstack.com/ref/renderers/ |title= salt documentation - Renderers |publisher= saltstack |accessdate=November 3, 2011}}</ref> |
|||
==== Returners ==== |
|||
The remote execution calls made by Salt are detached from the calling system, this allows the return information generated by the remote execution to be returned to an arbitrary location. Management of arbitrary return locations is managed by the Returner Modules.<ref>{{cite web |url= http://docs.saltstack.com/ref/returners/ |title= salt documentation - Returners |publisher= saltstack |accessdate=November 3, 2011}}</ref> |
|||
==== Runners ==== |
|||
Runners are master side convenience applications executed by the salt-run command.<ref>{{cite web |url= http://docs.saltstack.com/ref/runners/ |title= salt documentation - Runners |publisher= saltstack |accessdate=November 3, 2011}}</ref> |
|||
== Awards and nominations == |
|||
On January 18, 2012, Salt was named Black Duck Open Source Rookie of the Year.<ref>{{cite web | url=http://www.blackducksoftware.com/news/releases/2012-01-18 | title= Black Duck Rookies of 2011 | publisher= Black Duck |accessdate=January 18,2012}}</ref> |
|||
On December 19, 2012, [[GitHub]] was looking back on the past year in a blog post and appointed the Salt project in 8th position of having the most unique contributors in the "Octoverse".<ref>{{cite web | url=https://github.com/blog/1359-the-octoverse-in-2012 | title= The Octoverse in 2012 | publisher= GitHub |accessdate=January 10,2013}}</ref> |
|||
== See also == |
|||
{{Portal|Free software}} |
|||
* [[Comparison of open source configuration management software]] |
|||
== References == |
|||
{{reflist}} |
|||
== External links == |
== External links == |
||
* {{official|http://saltstack.org}} |
|||
* [http://www.reddit.com/r/SaltStack SaltStack subreddit] |
|||
* {{Official website}} |
|||
[[Category:Configuration management]] |
[[Category:Configuration management]] |
||
[[Category:Orchestration software]] |
|||
[[Category:Free software programmed in Python]] |
[[Category:Free software programmed in Python]] |
||
[[Category:Virtualization software for Linux]] |
|||
[[Category:Software using the Apache license]] |
Latest revision as of 15:19, 10 December 2024
Original author(s) | Thomas S Hatch |
---|---|
Developer(s) | Broadcom |
Initial release | 19 March 2011 |
Stable release | 3006.6
/ 31 January 2024[1] |
Repository | |
Written in | Python |
Operating system | Unix-like, macOS, Microsoft Windows |
Type | Configuration management and Infrastructure as Code |
License | Apache License 2.0 |
Website | saltproject |
Salt (sometimes referred to as SaltStack) is a Python-based, open-source software for event-driven IT automation, remote task execution, and configuration management. Supporting the "infrastructure as code" approach to data center system and network deployment and management, configuration automation, SecOps orchestration, vulnerability remediation, and hybrid cloud control.
History
[edit]Salt originated from the need for high-speed data collection and task execution for data center systems administrators managing massive infrastructure scale and resulting complexity. The author of Salt, Thomas S. Hatch, had previously created several utilities for IT teams to solve the problem of systems management at scale, but found these and other open source solutions to be lacking.[2] Hatch decided to use the ZeroMQ messaging library to facilitate the high-speed requirements and built Salt using ZeroMQ for all networking layers.
In late May 2011 initial progress was made toward the delivery of configuration management built on the Salt remote execution engine.[3] This configuration management system stores all configuration (state) data inside an easily understood data structure that leverages YAML. 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.[4]
The Salt 0.14.0 release introduced an advanced cloud control system making private and public cloud VMs directly manageable with Salt. The Salt Cloud function allows for provisioning of any hybrid cloud host, then exposes Salt remote execution, configuration management, and event-driven automation capabilities to the newly provisioned hybrid cloud systems. New virtual machines and cloud instances are automatically connected to a Salt Master after creation.
Salt Cloud supports 25 public and private cloud systems including AWS, Azure, VMware, IBM Cloud, and OpenStack. Salt Cloud provides an interface for Salt to interact with cloud hosts and the cloud’s functionality such as DNS, storage, load balancers, etc.
In September 2020, VMware acquired SaltStack.[5][6]
Design
[edit]Salt was designed to be highly modular and easily extensible, to make it easy to mold to diverse enterprise IT use cases.[7]
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.
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:
- Execution modules are the workhorse for Salt's functionality. They represent the functions available for direct execution from the remote execution engine. These modules contain the specific cross platform information used by Salt to manage portability, and constitute the core API of system level functions used by Salt systems.[8]
- State modules are the components that make up the backend for the Salt configuration management system. These modules execute the code needed to enforce, set up or change the configuration of a target system. Like other modules, more states become available when they are added to the states modules.
- Grains are a system for detecting static information about a system and storing it in RAM for rapid gathering.[9]
- Renderer modules are used to render the information passed to the Salt state system. The renderer system is what makes it possible to represent Salt's configuration management data in any serializable format.[10]
- Returners: the remote execution calls made by Salt are detached from the calling system; this allows the return information generated by the remote execution to be returned to an arbitrary location. Management of arbitrary return locations is managed by the Returner Modules.[11]
- Runners are master side convenience applications executed by the salt-run command.[12]
Vulnerabilities
[edit]In April 2020, F-Secure revealed two high severity RCE (Remote Code Execution) vulnerabilities, identified as CVE-2020-11651 and CVE-2020-11652, with CVSS score reaching as high as 10. These critical vulnerabilities were found within Salt's default communication channel ZeroMQ, and the initial research discovered 6000 vulnerable Salt servers. Salt organization was notified before F-Secure's public announcement, and Salt soon released the patch in its updated releases: 2019.2.4 and 3000.2.[13]
See also
[edit]References
[edit]- ^ "Releases - saltstack/salt". Retrieved 2024-01-31 – via GitHub.
- ^ "FLOSS Weekly 191: Salt". TwitTV. Retrieved 2020-01-13.
- ^ "red45.wordpress.com salt configuration management". red45.wordpress.com. 29 May 2011. Retrieved May 29, 2011.
- ^ "Salt Release Notes - 0.9.3". saltstack. Retrieved Nov 6, 2011.
- ^ "Intent to Acquire SaltStack". Retrieved 2020-09-29.
- ^ Gagliordi, Natalie. "VMware to acquire automation software provider SaltStack". ZDNet. Retrieved 2020-10-01.
- ^ "FLOSS Weekly 191: Salt". TwitTV. Retrieved 2020-01-13.
- ^ "Writing Execution Modules". SaltStack. Retrieved 2020-01-13.
- ^ "Salt Module Reference". SaltStack. Retrieved 2020-01-13.
- ^ "Renderers". SaltStack. Retrieved 2020-01-13.
- ^ "Returners". SaltStack. Retrieved 2020-01-13.
- ^ "Runners". SaltStack. Retrieved 2020-01-13.
- ^ "Critical SaltStack Vulnerability Provides Root Access to Cyberattacker". Hack Reports. 2020-05-05. Retrieved 2020-05-18.