SaltStack - 概述

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

什么是SaltStack?

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

Salt旨在允许用户直接向多台计算机明确定位和发出命令. Salt基于Master的想法,Master控制一个或多个 Minions .命令通常从Master发送到目标Minions组,然后执行命令中指定的任务,然后将结果数据返回给Master.主设备和配件之间的通信通过 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上管理拥有成千上万台服务器的大型基础设施.

想象一下,你有多台服务器,并希望对这些服务器做些什么.您需要登录每个人并在每个人身上做一件事,然后您可能想做一些复杂的事情,比如安装软件,然后根据某些特定标准配置该软件.

我们假设您有十台甚至100台服务器.想象一下,一次一个地登录到每个服务器,在这100台机器上发出相同的命令,然后在所有100台机器上编辑配置文件变得非常繁琐.要克服这些问题,您只需键入一个命令即可立即更新所有服务器. SaltStack为您提供所有此类问题的解决方案.

SaltStack的功能

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

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

  • 容错 : 通过将主配置参数配置为所有可用主设备的YAML列表,Salt minions可以一次连接到多个主设备.任何主人都可以将命令指向Salt基础设施.

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

  • 可扩展配置管理 :  SaltStack旨在为每个主人处理一万个小兵.

  • 并行执行模型 :  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中提供的默认传输库.