SaltStack - 概述

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

什么是 SaltStack?

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

Salt 旨在允许用户明确定位并直接向多台机器发出命令。 Salt 是基于 Master 的理念,Master 控制一个或多个 Minions。通常,Master 会向目标 Minions 组发出命令,Minions 随后会执行命令中指定的任务,并将结果数据返回给 Master。Master 和 Minions 之间的通信通过 ZeroMQ 消息总线进行。

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

SaltStack 的需求

SaltStack 专为速度和规模而构建。这就是为什么它被用于管理 LinkedIn、WikiMedia 和 Google 等拥有数万台服务器的大型基础设施。

想象一下,您有多台服务器,并想对这些服务器执行操作。您需要登录到每台服务器,并在每台服务器上一次执行这些操作,然后您可能想要执行一些复杂的事情,例如安装软件,然后根据某些特定标准配置该软件。

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

SaltStack 的功能

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

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

  • 容错 − Salt minions 可以通过将 master 配置参数配置为所有可用 master 的 YAML 列表来一次连接到多个 master。任何 master 都可以将命令定向到 Salt 基础架构。

  • 灵活 − Salt 的整个管理方法非常灵活。它可以按照最流行的系统管理模型实施,例如代理和服务器、仅代理、仅服务器或在同一环境中同时采用以上所有模型。

  • 可扩展配置管理 − SaltStack 设计用于处理每个主服务器的一万个从服务器。

  • 并行执行模型 − Salt 可以启用命令以并行方式执行远程系统。

  • Python API − Salt 提供了一个简单的编程接口,它被设计为模块化且易于扩展,以便于适应不同的应用程序。

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

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

SaltStack 的好处

Salt 是一个简单且功能丰富的系统,它提供了许多好处,可以总结如下−

  • 强大 − Salt 是一个功能强大且强大的配置管理框架,适用于数以万计的系统。

  • 身份验证 − Salt 管理用于身份验证的简单 SSH 密钥对。

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

  • 快速 − Salt 是一种非常快速、轻量级的通信总线,为远程执行引擎提供了基础。

  • 虚拟机自动化 − Salt Virt Cloud Controller 功能用于自动化。

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

ZeroMQ 简介

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

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

ZeroMQ 具有以下五种基本模式 −

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

  • 异步请求/响应 − 请求者通过发送请求消息发起对话并等待响应消息。提供者等待传入的请求消息并使用响应消息进行回复。

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

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

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

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