SaltStack运维实战
刘英杰
前言
为什么要写本书
系统管理员和运维人员日常会进行大量的重复性操作,诸如安装软件、修改配置文件、创建用户、批量执行命令等。如果主机数量庞大,单靠人工来维护,单调冗繁的任务实在让人难以忍受。早期的运维人员会根据自己的生产环境写特定脚本来辅助完成这些大量重复性的工作。但是这些脚本不但复杂,难于维护,更为重要的是不可移植。总体上讲,系统管理员面临的问题主要分为两大类:一是系统状态维护(配置管理),二是远程执行命令。为了解决这些问题,诞生了很多开源软件,系统状态维护方面有Puppet、Chef、CFEngine、Ansible、SaltStack等,这些软件擅长维护系统状态,可根据定义使相应的主机达到某种状态。维护主机的整个生命周期,实现从系统安装初始化到下线整个过程的管理和控制。在远程命令执行方面的软件则有pssh、Fabric、Func、Rundeck、Ansible、SaltStack等,它们可以方便地对大量主机进行批量的命令执行操作。无论采用哪款软件,系统管理员所面临的问题都是一样的,即如何在多变复杂的环境中完成灵活的配置管理和命令执行。这就需要所用的软件本身足够强大,而且具备很好的可扩展性。SaltStack在这方面表现得十分出色,SaltStack(简称Salt)是由Thomas Hatch于2011年创建的一个开源项目。初衷只是想构建一个快速的远程执行系统。后来随着各种新功能的不断加入,演变成了现在的Salt。如今Salt已成为世界上最流行的开源项目之一,同时也是最流行的基础架构管理平台之一。
Salt灵活性强,既可进行大规模部署,也能进行小规模的系统部署。Salt的设计架构适应于任意数量的服务器,从少量本地网络系统到跨越数个不同的数据中心,拓扑结构都是简单的服务器/客户端模型,配置简单,默认的配置几乎无须更改,只需要微调即可满足特定需求。不管你有几台、几百台甚至…