Thursday, September 8, 2022

SaltStack

Salt belongs to a class of configuration management systems intended to make administrating a large number of machines easier. It does so by applying the same rules to different machines, making sure that any differences in their configuration are intentional.

It is written in Python and, more importantly, extensible in Python. For example, wherever a YAML file is used, Salt allows a Python file that defines a dictionary.

Salt adopts an open source model for its core code. The code can be cloned from the Salt source code repository. There are two PyPI packages available for Salt.

  • The salt package includes the client/server code. It depends on pyzmq, which, in turn, relies on the libzmq C library.
  • The salt-ssh package only includes the local and SSH-based client. Because of that, it does not depend on the libzmq library. When only local/SSH support is needed, it is better to install salt-ssh.

Other than this distinction, the two packages are identical.

The Salt (or sometimes SaltStack) system is a system configuration management framework. It is designed to bring operating systems into a specific configuration. It is based on the convergence loop concept. When running Salt, it does three things.

  • Calculates the desired configuration
  • Calculates how the system differs from the desired configuration
  • Issues commands to bring the system to the desired configuration

Some extensions to Salt go beyond the operating system concept to configure some SaaS products into the desired configuration; for example, there is support for Amazon Web Services, PagerDuty, or some DNS services (those supported by libcloud).

Since, in a typical environment, not all operating systems need to be configured the same way, Salt allows detecting properties of systems and specifying which configurations apply to which systems. Salt uses them at runtime to decide the complete desired state and enforce it.

Share:

0 comments:

Post a Comment