文章目录
- SaltStack是什么
- Salt是什么
- Salt的主要功能
- Salt提供了以下几项核心能力
- Salt建立在许多优秀的技术之上
- 关于使用许可
- SaltStack Open 开源项目
- SaltStack Enterprise 商业软件
- Salt vs. 其它多种类似工具工具
- SaltStack专业资格认证的介绍
- SaltStack Certified Administrator (SSCA)
- SaltStack Certified Engineer (SSCE)
- SaltStack适合什么样的企业或团队
- 关于SaltStack的版本号与代码名称
- Version Numbers - Salt 的软件版本号经历了三个发展阶段
- Code Names - Salt的代码名称
- SaltStack在2020年最新技术发展趋势
- 更多的网络自动化配置与维护
- 安全扫描、安全配置、安全基线以及安全补丁的管理
- 混合云基础设施的统一管理
- 通过开发的思路解决运维的问题
SaltStack是什么
Salt是什么
Salt,是一种批量的、自动化的基础设施管理工具,部署轻松,在几分钟内可运行起来。扩展性好,很容易管理上万台服务器,且速度够快,服务器之间秒级通讯。
salt底层采用动态的连接总线, 使其可以用于远程执行, 配置管理, 任务编配等等。
开发Salt的初衷是为了将远程执行领域中发现的最佳解决方案结合在一起,使其更好,更快,更具延展性。 Salt能够通过简单且易管理的接口快速处理大量信息,管理从数十个,到数百个、甚至数千个单独的服务器。
Salt的主要功能
- 一个配置管理系统,能够将远程节点维护在一个预定义的配置状态(例如,确保安装特定的软件包并运行特定的服务,使用指定的配置参数值等);
- 一个分布式远程执行系统,用于在远程节点上单独或通过任何自定义的目标节点选择标准来执行命令和查询数据;
- 一个天然适合处理系统、网络和信息安全运维开发和自动化运维工作的基础通信服务组件。
Salt提供了以下几项核心能力
- 并行地在远程系统中执行管理命令
- 使用安全加密的协议
- 使用尽可能最小和最快的网络载荷
- 提供简单的编程接口
Salt建立在许多优秀的技术之上
- 网络层使用ZeroMQ网络库构建,因此在Salt守护程序中包含了一个透明的AMQ代理。
- Salt使用公钥与Master守护程序进行身份验证,然后使用速度更快的AES加密算法对负载通信进行加密。
- Salt利用msgpack处理通信数据的序列化,体积更小、速度更快,实现了更加快速且轻便的网络通信。
关于使用许可
SaltStack Open VS. SaltStack Enterprise
SaltStack Open 开源项目
- 可免费使用,是在Apache 2.0许可下开发的,可用于开源或私有的项目(可以商用,须带上license)。
- 开源版本已经具备了Salt所有的重要功能,并覆盖到了大多数常见的设备与系统的管理。
- Github项目地址 https://github.com/saltstack/salt
SaltStack Enterprise 商业软件
- 付费使用,需要通过官网联系、询价、试用或购买;
- 除Cli命令行工具外,提供配置管理用途的Web Dashboard;
- 更广泛的设备类型与操作系统运行支持;
- SaltStack Enterprise API (eAPI)
- Security in SaltStack Enterprise - SecOps
Salt vs. 其它多种类似工具工具

- Puppet更适于处理大型的、异构特征突出的服务器环境;
- Chef更偏重于以开发的方式处理运维的工作或问题,相对适用于以开发为主的团队;
- Ansible更适合做那些“一次性”远程命令执行工作,例如系统部署、应用发布、打补丁等;
- Saltstack在可伸缩性、响应速度和部署架构上有出色表现,它相较于Puppet则更精简,比Chef学习成本更低,比Ansible更适合配置管理大规模、高并发的环境。
SaltStack专业资格认证的介绍
SaltStack Certified Administrator (SSCA)
- 拥有实际的SaltStack软件使用经验;
- 完成了 SaltStack Enterprise I ;
- 通过 SSCA 考试。

SaltStack Certified Engineer (SSCE)
- 拥有实际的SaltStack软件使用经验;
- 完成了 SaltStack Enterprise I ($2195)、II ($2495);
- 通过 SSCE 考试。

注:每个培训课程需要持续5个半天或3个整天。
培训形式除现场授课外,也支持远程视步会议参加。
参加SaltStack Enterprise培训课程的学员,可以得到一次免费参加认证考试并获得相应证书的机会。
认证考试形式为,在一个小时内,完成从数百个考题中随机抽选出的80道题,允许查阅资料,但必须独立完成。

SaltStack适合什么样的企业或团队
当符合以下条件之一或同时满足多个条件时,建议优先选用SaltStack作为公司基础设施的自动化运维与配置管理软件使用:
- 企业技术平台部署规模至少在100个主机节点以上时(可以包含任何物理机、虚机、云主机,甚至于容器);
- 企业的产品服务类型是以建设、运营和运维自有的产品、技术系统和软硬件基础设施时;
- 企业更加重视产品服务、系统网络以及安全配置的基准,强调标准化、一致性、规范性、可控性以及持续性时;
- 技术团队希望可以集中配置管理生产或测试环境中大量的不同型号的网络设备时;
- 技术团队希望可以基于一个相同的技术栈,统一处理系统配置、网络配置以及安全扫描与配置工作时;
- 技术团队希望可以统一管理混合云环境时;
- 技术团队希望基于Python技术栈建设自有的配置管理、运维管理服务平台时;
关于SaltStack的版本号与代码名称
Version Numbers - Salt 的软件版本号经历了三个发展阶段
- 在早期的发展阶段,是使用典型的语义版本控制。 v0.17版本是该样式的最后一个版本。
- 自2014年起,Salt使用基于日期的系统作为版本号。 版本号的格式为YYYY.MM.R。 创建发行版本时反映的年份(YYYY)和月份(MM)。 错误修正版本号(R)在该功能版本中以递增的形式出现。v2014.1.0是该样式命名的第一个版本,v2019.2则是这种风格最后一个版本。
- 自2020年起,Salt使用基于主要功能的和基于补丁的系统来获取版本号。 版本号的格式为MAJOR.PATCH。例如v3000.3是撰写本文时Salt最新发布的一个版本,此时距v3000.2版本的发布仅过了2周。v3000.2版本是为应急修复CVE-2020-11651、CVE-2020-11652两个安全漏洞而紧急发布的版本,而v3000.3补丁版本的发布又是因为上一个版本因为急于封堵安全漏洞而发布得过于仓促,结果导致没处理好saltutil.sync_all函数的跨版本兼容性问题。
Code Names - Salt的代码名称
为了便于区分将来的版本和当前的版本,使用了代码名称。 使用了元素周期表来推导出下一个代号。 v2014.1.0是第一个为代码命名代号的版本,即Hydrogen,每个后续版本都将转到下一个原子的序号。
目前已经分配了的代码名称有:
- Hydrogen: 2014.1.0
- Helium: 2014.7.0
- Lithium: 2015.5.0
- Beryllium: 2015.8.0
- Boron: 2016.3.0
- Carbon: 2016.11.0
- Nitrogen: 2017.7.0
- Oxygen: 2018.3.0
- Fluorine: 2019.2.0
- Neon: 3000
- Sodium: 3001
- Magnesium: 3002
- Aluminium: 3003
SaltStack在2020年最新技术发展趋势
更多的网络自动化配置与维护
网络自动化的方法实际上在v2016.11.0版本中就已引入。 网络自动化功能的支持是基于salt proxy minions实现的。
随着SDN技术的发展,以及各种超大规模网络基础设施的发展,云计算、容器集群、大数据平台等分布式技术系统对网络基础设施提出越来越多的且日益复杂、多变的使用需求,提供一种集中式的、统一的,可自动化配置管理网络设施、多品牌的网络设备、多变的网络配置的技术平台,就越发变得急切。
因此,SaltStack在近年来也在持续地将网络的自动化作为主要功能建设的一个重点,在这一领域也完成了很多有代表性的客户项目落地。
当前,Salt已经可以配置管理大多数常见的主流型号的企业网络设备,如交换机、防火墙等。
Salt在集成第三方的支持跨平台的网络自动化工具方面,所取得的成绩和效果会更加突出一些。
- Napalm,https://napalm-automation.net/ ,https://napalm.readthedocs.io/en/latest/support/index.html#
- Netmiko,https://github.com/ktbyers/netmiko,https://docs.saltstack.com/en/latest/ref/proxy/all/salt.proxy.netmiko_px.html
此外,Salt还面向一些特定厂商的网络设备提供了专用的自动化配置功能模块:
- Arista,一家专做SDN网络设备的国际厂商
- Cisco
- Juniper
安全扫描、安全配置、安全基线以及安全补丁的管理
在SaltStack Enterprise版本中,信息安全管理功能已经连续两年成为Salt公司重点建设和推广的服务了,并为此专门开发了一个名为Security in SaltStack Enterprise - SecOps的salt模块。
从官网介绍的一些成功案例可以了解到,Salt SecOps模块主要是提供了统一的安全扫描、安全配置、安全基线维护以及打补丁的管理。这一功能是由Salt公司主导的,而不是由社区所发起,所以SecOps模块在Salt开源版本中无法使用。但是可以推断出来的是,以上这些信息安全管理或配置变更管理的功能,仍然是基于Salt的远程执行、配置管理、任务编排等基础功能模块进行的集成开发与定制。
混合云基础设施的统一管理
当前,越来越多的公司开始面临着同时需要运维管理混合云、多云的基础设施的挑战。既在使用IDC自建或托管的软硬件基础设施,又把一部分的产品或服务放到了云上,甚至是同时会使用几朵不同厂商的云。怎么样才能快捷、高效且安全的配置、管理混合云环境条件下的各种资源,是摆在很多公司面前的一个难题。
Salt Cloud是Salt面向混合云的基础设施的统一管理解决方案,这也是Salt近年来发展非常迅速的一个领域,而且社区的贡献也相当得活跃,在模块插件支持方面,几乎已经覆盖到了国内外常见的各种云。以国内有代表性的云平台为例,目前已经可以支持的就有阿里云、腾讯云、青云等,而且按照salt cloud插件驱动开发规范,可以按需定义和支持更多的云。
详情见以下链接:
- 支持的云平台范围列表
- 针对特定云平台的Salt-Cloud配置方法
- 云平台功能支持对比
通过开发的思路解决运维的问题
由于生产环境越发的复杂,要管理好这样的环境,我们需要利用Salt这样的自动化工具处理系统配置、通信传输、驱动适配、事件消息等底层的工作。方便我们集中更多的精力,关注应用业务逻辑的优化管理。让Salt去适配兼容那些纷杂多样的设备、型号、系统,方便我们按相同的逻辑统一管理资源和配置。
因此,越来越多的公司,在通过运维开发建设自己适用的统一的资源、服务、配置管理平台,生产环境的复杂程度导致了很多内部工具必须由自己开发,因为很少有第3方工具可以适配这种复杂情况。运维工程师是自己工具的直接使用者,能深刻得理解要开发的工具的重点在哪里,也更容易获取直接的和高质量的用户使用反馈。
借助Salt的强大能力,规划和实施相应技术管理平台的开发建设,相当于是站在巨人的肩膀上。大量的基础管理功能都可以直接通过Salt来实现,我们只需要关注和实现好系统或应用层面的管理逻辑即可。
目前,Salt提供了两类API技术的实现,各有利弊,适用于不同的场景,选用适合自己的就好。
- Python client API - SaltStack Python客户端程序API开发指南
- netapi modules - SaltStack netapi模块
Salt API使用参考资料:https://github.com/watermelonbig/SaltStack-Chinese-ManualBook/blob/master/19.APIs.md