SaltStack 概述学习手册

收录于 2023-04-20 00:10:05 · English · بالعربية · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

SaltStack 是一个开源配置管理和远程执行引擎。它在所有机器上远程执行命令。它是一个基于python的软件。Thomas S Hatch是 SaltStack 的创建者和首席架构师。SaltStack 使用 ZeroMQ 消息传递库来处理所有网络层的高速需求。Salt 简单、可扩展且快速。本教程将探讨 SaltStack 的基本原理、SaltStack 设置、Minion 文件系统,然后逐步介绍远程执行步骤、配置管理、云管理、Python API 操作,最后以一个完整的工作示例结束。
在本章中,我们将学习 SaltStack 的基础知识。 SaltStack 的远程执行功能允许管理员在各种机器上并行运行命令以及灵活的目标系统。 Salt 配置管理建立了一个 master-minion 模型,以快速、轻松、灵活且安全地使基础架构组件符合给定的政策。

什么是 SaltStack?

Salt 是一个非常强大的自动化框架。 Salt 架构基于远程执行命令的思想。所有网络都是围绕远程执行的某些方面设计的。这可以像要求 远程 Web 服务器 显示静态网页一样简单,也可以像使用 shell 会话以交互方式向远程服务器发出命令一样复杂。 Salt 是更复杂的远程执行类型之一。
Salt 旨在允许用户明确地针对多台机器直接发出命令。 Salt 是基于 Master 的思想,它控制着ols 一个或多个 Minions。命令通常从 Master 发送到目标组 Minion,然后执行命令中指定的任务,然后将结果数据返回给 Master。 master 和 minion 之间的通信通过 ZeroMQ 消息总线进行。
SaltStack 模块与支持的 minion 操作系统通信。 Salt Master 默认在 Linux 上运行,但任何操作系统都可以是 Minion,目前 Windows、VMware vSphere 和 BSD Unix 变体都得到很好的支持。 Salt Master 和 Minions 使用密钥进行通信。当 minion 首次连接到 master 时,它会自动将 key 存储在 master 上。 SaltStack 还提供 Salt SSH,提供"无代理"系统管理。

需要 SaltStack

SaltStack 专为速度和规模而打造。这就是为什么它被用于管理具有数万台服务器的大型基础设施,包括 LinkedIn、WikiMedia 和 Google。
想象一下,您有多个服务器并且想要对这些服务器执行操作。您需要登录每一个,并一次对每一个执行这些操作,然后您可能需要执行复杂的操作,例如安装软件,然后根据某些特定条件配置该软件。
假设您有 10 台甚至 100 台服务器。想象一下,一次登录每个服务器,在这 100 台机器上发出相同的命令,然后在所有 100 台机器上编辑配置文件成为一项非常乏味的任务。为了克服这些问题,您希望一次更新所有服务器,只需输入一个命令即可。 SaltStack 为您提供了所有此类问题的解决方案。

SaltStack 的特点

SaltStack 是一个开源配置管理软件和远程执行引擎。 Salt 是一个命令行工具。虽然用 Python 编写,但 SaltStack 配置管理与语言无关且简单。 Salt 平台使用推送模型通过 SSH 协议执行命令。默认配置系统是 YAMLJinja 模板。 Salt 主要与 PuppetChefAnsible 竞争。
与其他竞争工具相比,Salt 提供了许多功能。下面列出了其中一些重要功能。
容错-Salt Minion 可以通过将 master 配置参数配置为所有可用 master 的 YAML 列表来一次连接到多个 master。任何 master 都可以将命令定向到 Salt 基础架构。 灵活-Salt 的整个管理方法非常灵活。它可以实施为在同一环境中遵循最流行的系统管理模型,例如代理和服务器、仅代理、仅服务器或以上所有模型。 可扩展的配置管理-SaltStack 旨在为每个 master 处理一万个 minion。 并行执行模型-Salt 可以启用命令以并行方式执行远程系统。 Python API-Salt 提供了一个简单的编程接口,它被设计为模块化且易于扩展,使其易于适应不同的应用程序。 易于设置-Salt 易于设置,并提供单一的远程执行架构,可以管理任意数量服务器的不同需求。 Language Agnostic-Salt 状态配置文件、模板引擎或文件类型支持任何类型的语言。

SaltStack 的好处

作为一个简单且功能丰富的系统,Salt 提供了许多好处,它们可以总结如下-
健壮-Salt 是功能强大且健壮的配置管理框架,适用于数以万计的系统。 Authentication-Salt 管理用于身份验证的简单 SSH 密钥对。 Secure-Salt 使用加密协议管理安全数据。 Fast-Salt 是非常快速、轻量级的通信总线,为远程执行引擎提供基础。 虚拟机自动化-Salt Virt 云控制器功能用于自动化。 基础设施即数据,而不是代码-Salt 提供了一个简单的部署、模型驱动的配置管理和命令执行框架。

ZeroMQ 简介

Salt 基于 ZeroMQ 库,它是一个可嵌入的网络库。它是轻量级且快速的消息传递库。基本实现是在 C/C++ 和多种语言的本地实现,包括 Java.Net 可用。
ZeroMQ 是一种无代理的对等消息处理。 ZeroMQ 可让您轻松设计复杂的通信系统。
ZeroMQ 具有以下五种基本模式-
同步请求/响应-用于发送请求并接收每个发送的后续回复。 异步请求/响应-请求者通过发送请求消息启动对话并等待响应消息。提供者等待传入的请求消息并回复响应消息。 发布/订阅-用于将数据从单个进程(例如发布者)分发给多个接收者(例如订阅者)。 推/拉-用于将数据分发到连接的节点。 Exclusive Pair-用于将两个对等点连接在一起,形成一对。
ZeroMQ 是一种高度灵活的网络工具,用于在集群、云和其他多系统环境之间交换消息。 ZeroMQ 是 SaltStack 中提供的 默认传输库