SaltStack - 概述



在本章中,我们将学习 SaltStack 的基础知识。SaltStack 的远程执行功能允许管理员使用灵活的目标系统在各种机器上并行运行命令。Salt 配置管理建立了主从模型,可以快速、非常容易、灵活且安全地使基础设施组件符合给定策略。

什么是 SaltStack?

Salt 是一个非常强大的自动化框架。Salt 架构基于远程执行命令的想法。所有网络都围绕远程执行的某个方面设计。这可能很简单,例如要求**远程 Web 服务器**显示静态 Web 页面,也可能很复杂,例如使用 shell 会话与远程服务器交互式地发出命令。Salt 是更复杂类型的远程执行示例之一。

Salt 旨在允许用户直接显式地定位并向多台机器发出命令。Salt 基于主控器的概念,主控器控制一个或多个**Minion**。命令通常从主控器发出到目标 Minion 组,然后 Minion 执行命令中指定的任务,然后将结果数据返回给主控器。主控器和 Minion 之间的通信通过**ZeroMQ 消息总线**进行。

SaltStack 模块与支持的 Minion 操作系统通信。**Salt 主控器**默认在 Linux 上运行,但任何操作系统都可以作为 Minion,目前 Windows、VMware vSphere 和 BSD Unix 变体都得到很好的支持。Salt 主控器和 Minion 使用密钥进行通信。当 Minion 首次连接到主控器时,它会自动将密钥存储在主控器上。SaltStack 还提供**Salt SSH**,它提供“无代理”系统管理。

SaltStack 的需求

SaltStack 构建于速度和规模之上。这就是为什么 LinkedIn、WikiMedia 和 Google 使用它来管理拥有数万台服务器的大型基础设施的原因。

假设您有多台服务器,并且希望对这些服务器执行操作。您需要登录到每个服务器,并逐个在每个服务器上执行这些操作,然后您可能希望执行复杂的操作,例如安装软件,然后根据某些特定条件配置该软件。

假设您有十台甚至 100 台服务器。想象一下,一次登录到每台服务器,在这些 100 台机器上发出相同的命令,然后编辑所有 100 台机器上的配置文件,这将成为一项非常繁琐的任务。为了克服这些问题,您希望通过键入单个命令即可立即更新所有服务器。SaltStack 为所有此类问题提供了完美的解决方案。

SaltStack 的特性

SaltStack 是一种开源配置管理软件和远程执行引擎。Salt 是一个命令行工具。虽然是用 Python 编写的,但 SaltStack 配置管理与语言无关且简单。Salt 平台使用推送模型通过 SSH 协议执行命令。默认配置系统是**YAML** 和**Jinja 模板**。Salt 主要与**Puppet**、**Chef** 和**Ansible** 竞争。

与其他竞争工具相比,Salt 提供了许多功能。下面列出了一些重要的功能。

  • **容错性** - Salt Minion 可以通过将主控器配置参数配置为所有可用主控器的 YAML 列表,一次连接到多个主控器。任何主控器都可以将命令发送到 Salt 基础设施。

  • **灵活** - Salt 的整个管理方法非常灵活。它可以实现为遵循最流行的系统管理模型,例如代理和服务器、仅代理、仅服务器或所有上述模型在同一环境中。

  • **可扩展的配置管理** - SaltStack 旨在处理每个主控器一万个 Minion。

  • **并行执行模型** - Salt 可以使命令能够以并行方式执行远程系统。

  • **Python API** - Salt 提供了一个简单的编程接口,并且设计为模块化且易于扩展,以便轻松地将其塑造成各种应用程序。

  • **易于设置** - Salt 易于设置,并提供了一个单一的远程执行架构,可以管理任意数量服务器的不同需求。

  • **与语言无关** - Salt 状态配置文件、模板引擎或文件类型支持任何类型的语言。

SaltStack 的优势

Salt 作为一个简单且功能丰富的系统,提供了许多优势,可以总结如下 -

  • **健壮** - Salt 是一个功能强大且健壮的配置管理框架,适用于数万个系统。

  • **身份验证** - Salt 管理简单的 SSH 密钥对进行身份验证。

  • **安全** - Salt 使用加密协议管理安全数据。

  • **快速** - Salt 非常快速,轻量级通信总线为远程执行引擎提供基础。

  • **虚拟机自动化** - Salt Virt 云控制器功能用于自动化。

  • **基础设施作为数据,而不是代码** - Salt 提供了一个简单的部署、模型驱动的配置管理和命令执行框架。

ZeroMQ 简介

**Salt** 基于**ZeroMQ** 库,它是一个可嵌入的网络库。它轻量级且快速的消息库。基本实现是用**C/C++**,并且提供了包括**Java** 和**.Net** 在内的多种语言的原生实现。

ZeroMQ 是一个无代理的对等消息处理。ZeroMQ 允许您轻松设计复杂的通信系统。

ZeroMQ 带有以下五种基本模式 -

  • **同步请求/响应** - 用于发送请求并接收对每个发送请求的后续回复。

  • **异步请求/响应** - 请求者通过发送请求消息启动对话并等待响应消息。提供者等待传入的请求消息并回复响应消息。

  • **发布/订阅** - 用于将数据从单个进程(例如发布者)分发到多个接收者(例如订阅者)。

  • **推送/拉取** - 用于将数据分发到连接的节点。

  • **独占对** - 用于将两个对等节点连接在一起,形成一个对。

ZeroMQ 是一种高度灵活的网络工具,用于在集群、云和其他多系统环境之间交换消息。ZeroMQ 是 SaltStack 中提供的**默认传输库**。

广告