Linux自动化工具之SaltStack介绍与安装
2020-02-22自动化运维90root360°c
A+ A-一、SaltStack简介
salt是一个新的基础平台管理工具, 只需要花费数分钟即可运行起来, 扩展性足以支撑管理上万台服务器, 数秒钟即可完成数据传递. 经常被描述为Func加强版+Puppet精简版. SaltStack采用C/S架构.
简单的说: salt是一种全新的基础设施管理方式, 部署轻松, 在几分钟内可运行起来, 扩展性好. 很容易管理上万台服务器, 速度快, 服务器之间秒级通信. salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等.
最为重要的一点, salt是开源的. 而且是python实现的自动化运维工具, 这意味着我们可以对其进行一些改动, 在其基础之上加上我们想要的功能, 对其进行二次开发.
二、环境介绍
系统Centos_6.6 x64两台, 一台为master,另一台为minion.
三、SaltStack安装
1. 如果机器内没有epel, 请下载.(2台机器都执行)
[[email protected] ~]# rpm -Uvh http://ftp.Linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
2. 由于salt的master和minion包是分开的, 所以机器需要安装相应的包, 通常情况下, 一个master会对应多个minion
2.1 在master运行
[[email protected] ~]# yum -y install salt-master
2.2 在minion上运行
[[email protected] ~]# yum -y install salt-minion
四、SaltStack配置
1. 修改master配置文件
[[email protected] ~]# vim /etc/salt/master
interface: 192.168.1.48 #服务端ip.
[[email protected] ~]# /etc/init.d/salt-master start
2. 修改被管理端(minion)
[[email protected] ~]# vim /etc/salt/minion
master: 192.168.1.48 #master的主机名或ip. IP地址后面有一个空格
id: vps4051 #本机标识符,默认为主机名
[[email protected] ~]# /etc/init.d/salt-minion start
3. 日志文件默认路径
[[email protected] ~]# tail -f /var/log/salt/master #master
[[email protected] ~]# tail -f /var/log/salt/minion #minion
4. 接受minion的托管请求
minion向master投诚后, 还需要master接受才行. 这个过程叫做”授信”.
[[email protected] ~]# salt-key -L

其中Unaccepted Keys是未许可的minion. 可使用下面的命令通过认证
[[email protected] ~]# salt-key -a vps4051

五、测试
1. 基本操作命令通用格式
格式: 命令 对象 执行模块 参数
salt ‘*’ cmd.run “ping -c 4 www.baidu.com"
2. 安装配置好之后, 首先要测试一下连通性, salt会列出每个认证过的minion连通状态(true或false).
[[email protected] ~]# salt '*' cmd.run "uptime"

3. 批量重启服务
[[email protected] ~]# salt '*' cmd.run "/etc/init.d/httpd restart"

4. 批量查看系统时间
[[email protected] ~]# salt '*' cmd.run "uptime"

注意, 默认情况下master和minion之间使用以下端口进行通信:
4505(publish_port):salt的消息发布系统
4506(ret_port):salt客户端与服务端通信的端口
cmd.run 为模块,又称之为超级命令. 可以执行Linux中的任何命令.
六、Salt States
SLS(代表Salt State文件)是Salt State系统的核心. SLS描述了系统的目标状态, 由格式简单的数据构成. 这经常被称作配置管理.
1. 默认的数据 - YAML

这些数据确保名为apache的软件包处于已安装状态, 服务进程apache处于运行状态.
第1行是这段数据的ID, 被称作ID声明. 这个ID是要将执行这些命令的名字.
第2行和第4行表示State声明开始, 使用了pkg和service这两个states. pkg使用系统本地的软件包管理器管理将要安装的软件, service管理系统守护进程.
第3行和第5行是要执行的funcation. 这些function定义了名字为ID的软件包和服务的目标状态. 此例中, 软件包应当处于已安装状态, 服务必须运行.
第6行关键字require. 这呗称为必要语句(Requisite), 它确保了apache服务只有在成功安装软件后才会启动.

