https://docs.saltstack.com/en/getstarted/system/index.html
1 基本介绍
通过观察它的实际运行,你可以大致理解salt如何工作。这意味着,在控制台上显示的数据之外,有很多东西是很难注意到的。这个部分的教程解释了salt如何工作,salt的子系统,salt的模块化架构使用,扩展salt以管理整个基础架构。
我们进入salt特定的组件之前,理解一点salt如何处理架构管理是很好的。
REAL-TIME COMMUNICATION实时通信
所有salt minion同时接受命令。这意味着升级10个或10000个系统,耗费的时间是十分相近的。数千系统的查询可以几秒之内完成。salt获取信息的方式是实时查询,而不是依赖于数据库。
NO FREELOADERS!没有空载
salt minions做自己的工作。来着salt master的通信是一个轻量级的指令,通常是:如果minion上有这些属性,使用这个命令和这个参数。当收到命令,salt minion决策是否和属性匹配。每个salt minion都把需要的所有命令存储在本地,所以命令可以被执行,并且结果很快返回到salt master。salt master不为minion做任何事。消息使用MessagePack进行高效序列化。在内部,salt使用Tornado 作为异步网络库。
SALT LOVES TO SCALE可扩展
salt为高性能和扩展性设计。salt的通信系统,使用ZeroMQ或原始TCP,在master和minion之间建立持久的数据管道,这是性能优势。并且salt使用前沿技术来处理多线程和并发。
NORMALIZE EVERYTHING规范化
规范化让salt可以跨平台管理。无论你使用什么系统,salt的命令和状态都一样。
返回的的结果也是一致的数据结构。
AUTOMATE EVERYTHING自动化
salt的事件驱动架构,不是只让你自动做系统配置初始化,还可以随意自动扩展,维护和执行持续管理。salt用户可以自动部署和维护复杂的分布式网络应用和数据库,自定义应用,文件爱你,账户,标准包,云资源等等。
2 插件
没有插件的讨论是不完整的。理解salt的插件化结构很必要。
salt的核心框架提供了一个高速的通信和事件总线。这套框架连接并验证所管理的系统,并为它们提供发送通知的方法。
在这个核心框架的顶层,salt的剩余特性,暴露为一组松耦合可插拔的子系统。
PLUGGABLE SUBSYSTEMS可插拔子系统
salt包含超过20个插件子系统,但是大部门用户只对直接管理系统的少部分插件感兴趣,下面的表格包含了最常见子系统的列表:
认证:运行一个job之前授权用户
文件服务器:分发文件
安全的数据存储:使用户定义的变量和另外的数据安全可用
状态代表:描述你的基础架构和系统配置
返回格式化:格式化job的结果为规范化的数据结构
结果缓存:发送job结果到 long-term存储
远程执行:运行各种任务,来安装软件,分发文件,等管理系统的操作
配置:配置目标系统,以达到预期状态
WHAT DOES IT MEAN TO BE “PLUGGABLE”?
salt没有为任何子系统定义一个内建的方式来执行任务,每个子系统都是将它的工作委托给插件。salt给每个系统提供了默认的插件,但是在大多数情况下更改插件就像更新一个配置文件一样简单。这种可插拔使得salt非常灵活。
为了说明,这个图表展示了几个常见的子系统,以及每个子系统最常见的插件。
这个图表只展示了少数可用的子系统和插件,但它可以让你对salt的大致体系有了解。
SUBSYSTEMS DURING A JOB RUN
job运行时,多个子系统会被调用以处理这个job。下面的图表展示了一个典型状态的运行job或远程执行job的子系统流程
PLUG-INS? IT SOUNDS LIKE YOU ARE TALKING ABOUT SALT MODULES!
在salt中,插件都是python模块,一般就叫做模块,或者子系统模块,比如认证模块,文件服务器模块等等。
每个salt模块是众多子系统中的一个插件,理解这个,就理解它们之间的关系。
在每个步骤中,子系统把工作委托给配置的插件。比如,在step7中的job returner可能是mysql、redis,或者根本没有配置。
在每个步骤,都有很多插件可以执行任务,从而导致数百种可能的Salt配置和工作流程。
FLEXIBILITY
这种灵活性使sal成为t非常强大、可自定义的工具,但也使得你在学习的时候不太容易得到标准答案。
回答几个常见问题:
- 如何开始salt的工作?可以从任意接口,比如python、rest api,命令行,或者salt内建的调度器。
- salt如何格式化结果?可以是yaml,json,plain text,python数据结构等等,也可以使用参数改变格式。
- salt用什么格式来声明配置?根据您的使用情况,从15种支持的格式中选择一种,您还可以选择模板语言。格式是基于每个文件指定的,因此您可以同时使用多种格式。
- 结果存储在哪里?您想要的任何地方,您有30个选择!
只有你自己知道自己的基础架构是怎么样的,在今天复杂的环境中,没有一个方案是绝对最优的,salt的灵活性需要你自己去整合。
SALT COMPONENTS
当你了解salt中关于插件的只是,希望你开始理解salt的每个组件实际上都是可插拔的子系统,有其对应的插件。像graiins,pilliar,runners,所有可插拔