1. saltstack 概述
1.1 saltstack简介
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等。
1.2 saltstack服务架构
在saltstack架构中服务器端叫Master,客户端叫Minion。
在Master和Minion端都是以守护进程的模式运行
1.3 salt端口
安装好salt之后开始配置,salt-master默认监听两个端口:
- 4505 publish_port 提供远程命令发送功能
- 4506 ret_port 提供认证,文件服务,结果收集等功能
2. rpm包下载
下载地址>> https://repo.saltstack.com/yum/redhat/
3. 实验环境
主机类型 | IP | 要安装的应用 |
控制机 | 192.168.153.135 | salt、salt-cloud、salt-master、salt-minion、salt-ssh、salt-syndic |
被控机 | 192.168.153.136 | salt-minion |
两台主机均关闭防火墙和selinux
4. 在控制机上安装saltstack主控端软件
4.1 安装repo包
rpm -ivh salt-repo-latest-2.el7.noarch.rpm
4.2 清空yum缓存
yum clean all
4.3 安装master端所需软件包
yum -y install salt salt-cloud salt-master salt-minion salt-ssh salt-syndic
4.4 修改主控端的minion配置文件
sed -i '/^#master:/a master: 192.168.153.135' /etc/salt/minion
#切记:“master: ” 冒号后要添加一个空格,然后再写IP
4.5 启动主控端的salt-master和salt-minion,并设置开机自启
systemctl start salt-master
systemctl start salt-minion
systemctl enable salt-master
systemctl enable salt-minion
5. 在被控机上安装salt-minion客户端
5.1 安装repo包
rpm -ivh salt-repo-latest-2.el7.noarch.rpm
5.2 清空yum缓存
yum clean all
5.3 安装master端所需软件包
yum -y install salt-minion
5.4 修改主控端的minion配置文件
sed -i '/^#master:/a master: 192.168.153.135' /etc/salt/minion
#切记:“master: ” 冒号后要添加一个空格,然后再写IP
5.5 启动受控端的salt-minion并设置开机自启
systemctl start salt-minion
systemctl enable salt-minion
6. master端接受所有minion等待认证的key
salt-key -yA
7. saltstack配置文件介绍
saltstack的配置文件在/etc/salt目录
配置文件 | 说明 |
/etc/salt/master | 主控端(控制端)配置文件 |
/etc/salt/minion | 受控端配置文件 |
配置文件/etc/salt/master默认的配置就可以很好的工作,故无需修改此配置文件。
配置文件/etc/salt/minion常用配置参数
- master:设置主控端的IP
- id:设置受控端本机的唯一标识符,可以是ip也可以是主机名或自取某有意义的单词
配置文件详细介绍链接>>
8. saltstack认证机制
saltstack主控端是依靠openssl证书来与受控端主机认证通讯的,受控端启动后会发送给主控端一个公钥证书文件,在主控端用salt-key命令来管理证书。
salt-minion与salt-master的认证过程:
- minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成一对密钥,然后将公钥发给master
- master收到minion的公钥后,通过salt-key命令接受该公钥。此时master的/etc/salt/pki/master/minions目录将会存放以minion_id命名的公钥,然后master就能对minion发送控制指令了
salt-key常用选项
-L //列出所有公钥信息
-a minion //接受指定minion等待认证的key
-A //接受所有minion等待认证的key
-r minion //拒绝指定minion等待认证的key
-R //拒绝所有minion等待认证的key
-f minion //显示指定key的指纹信息
-F //显示所有key的指纹信息
-d minion //删除指定minion的key
-D //删除所有minion的key
-y //自动回答yes
查看当前证书情况
[root@host-135 master]# salt-key -L
Accepted Keys:
host-135
host-136
Denied Keys:
Unaccepted Keys:
Rejected Keys:
9. saltstack 模块
9.1 列出所有salt的sys模块
salt 'host-136' sys.list_modules
9.2 test 模块下的ping方法测试指定主机是否存活
[root@host-135 master]# salt 'host-136' test.ping
host-136:
True
[root@host-135 master]# salt '*' test.ping
host-136:
True
host-135:
True
9.3 pkg 模块
安装nginx服务
salt 'host-136' pkg.install "nginx"
查询nginx服务版本
salt 'host-136' pkg.version "nginx"
卸载nginx服务
salt 'host-136' pkg.remove "nginx"
9.4 service 模块
开启nginx服务
salt 'host-136' service.start "nginx"
查询nginx服务状态
salt 'host-136' service.status "nginx"
停掉nginx服务
salt 'host-136' service.stop "nginx"
9.5 cmd 超级模块,所有shell命令都能执行
salt 'host-136' cmd.run 'ps -ef|grep python'