📅  最后修改于: 2020-10-31 14:20:11             🧑  作者: Mango
在本章中,我们将学习SaltStack的基础知识。 SaltStack的远程执行功能使管理员可以在具有灵活目标系统的并行计算机上运行命令。 Salt配置管理建立了主从模型,可以快速,轻松,灵活,安全地将基础架构组件与给定策略保持一致。
Salt是一个非常强大的自动化框架。 Salt体系结构基于远程执行命令的思想。所有联网都是围绕远程执行的某些方面设计的。这可能像要求远程Web服务器显示静态Web页面一样简单,也可能像使用Shell会话以交互方式对远程服务器发出命令那样复杂。 Salt是更复杂的远程执行类型之一的示例。
Salt旨在允许用户明确地将目标定向并直接发布到多台计算机。盐基于主人的思想,该思想控制一个或多个奴才。命令通常是从Master发出给Minions的目标组,然后由它们执行命令中指定的任务,然后将结果数据返回给Master。主机与小兵之间的通信通过ZeroMQ消息总线进行。
SaltStack模块与支持的minion操作系统进行通信。默认情况下, Salt Master在Linux上运行,但是任何操作系统都可以是奴才,并且目前已很好地支持Windows,VMware vSphere和BSD Unix变体。 Salt Master和各小兵使用按键进行通信。当一个奴才第一次连接到主机时,它会自动将密钥存储在主机上。 SaltStack还提供Salt SSH ,它提供“无代理”系统管理。
SaltStack是为速度和规模而构建的。这就是为什么它被用来管理具有LinkedIn,WikiMedia和Google数以万计服务器的大型基础架构的原因。
假设您有多个服务器,并且想对这些服务器执行操作。您将需要登录到每个服务器,然后一次在每个服务器上执行一次这些操作,然后您可能需要做一些复杂的事情,例如安装软件,然后根据某些特定条件配置该软件。
让我们假设您有十台甚至100台服务器。想象一下,一次分别登录到每个服务器,在这100台计算机上发出相同的命令,然后在所有100台计算机上编辑配置文件变得非常繁琐。为了克服这些问题,您只需要键入一个命令就可以一次更新所有服务器。 SaltStack为您解决所有此类问题提供了确切的解决方案。
SaltStack是一个开源配置管理软件和远程执行引擎。 Salt是一个命令行工具。用Python编写时,SaltStack配置管理与语言无关且简单。 Salt平台使用推模型通过SSH协议执行命令。默认配置系统是YAML和Jinja模板。 Salt主要与Puppet , Chef和Ansible竞争。
与其他竞争工具相比,Salt具有许多功能。下面列出了其中一些重要功能。
容错能力–通过将主配置参数配置为所有可用主节点的YAML列表,盐小兵可以一次连接到多个主节点。任何主机都可以将命令定向到Salt基础结构。
灵活-Salt的整个管理方法非常灵活。可以将其实现为遵循最流行的系统管理模型,例如代理和服务器,仅代理,仅服务器或在同一环境中的所有上述所有模型。
可扩展的配置管理-SaltStack旨在每个主机处理一万个奴才。
并行执行模型-Salt可以使命令以并行方式执行远程系统。
Python API -Salt提供了一个简单的编程接口,并且被设计为模块化且易于扩展的,从而易于成型为各种应用程序。
易于安装-Salt易于安装,并提供了一个单一的远程执行架构,可以管理任意数量服务器的各种需求。
语言不可知-盐状态配置文件,模板引擎或文件类型支持任何类型的语言。
作为简单且功能丰富的系统,Salt具有许多优点,可以总结如下:
强大-Salt是强大而强大的配置管理框架,可在数以万计的系统中运行。
身份验证-Salt管理简单的SSH密钥对进行身份验证。
安全-Salt使用加密协议管理安全数据。
快速-Salt是一种非常快速,轻便的通信总线,为远程执行引擎奠定了基础。
虚拟机自动化-Salt Virt Cloud Controller功能用于自动化。
基础架构是数据,而不是代码-Salt提供了简单的部署,模型驱动的配置管理和命令执行框架。
Salt基于ZeroMQ库,它是一个可嵌入的网络库。它是轻量级的,并且是一个快速的消息传递库。基本实现在C / C++中,并且可以使用多种语言(包括Java和.Net )的本机实现。
ZeroMQ是一种无代理的对等消息处理。 ZeroMQ允许您轻松设计复杂的通信系统。
ZeroMQ具有以下五个基本模式-
同步请求/响应-用于发送请求并接收每个发送的后续响应。
异步请求/响应-请求者通过发送请求消息来发起对话,并等待响应消息。提供者等待传入的请求消息并用响应消息进行回复。
发布/订阅-用于将数据从单个进程(例如发布者)分发到多个接收者(例如订阅者)。
推/拉-用于将数据分发到连接的节点。
互斥对-用于将两个对等点连接在一起,形成一对。
ZeroMQ是一种高度灵活的联网工具,用于在集群,云和其他多系统环境之间交换消息。 ZeroMQ是SaltStack中提供的默认传输库。