saltstack简介
- 作为一个运维人员,很大一部分工作是在业务的配置管理和状态维护以及版本发布上,而当业务场景及公司规模上了一定规模后,人为手工的去做这些工作将变得极其困难,此时我们将需要利用一些自动化运维的工具来达到批量管理的目的。
常用的自动化运维工具有:
- ansible
- puppet
- saltstack
此三款属同类工具,皆可用来提高运维管理的效率,但它们又各有优势,目前主流的自动化运维工具是ansible和saltstack。其中ansible无需安装客户端,这是其最大的优势,而saltstack则需要安装客户端工具,类似zabbix的agent。应用场景方面,ansible常用于小型企业,而saltstack则常用于中大型企业。但不论其特点如何,本质上均属同类,所以只需要掌握一种即可轻松胜任运维工作。
saltstack部署
环境说明:
主机类型 | IP | 系统 |
---|---|---|
控制机 | 192.168226.128 | redhat7 |
被控机 | 192.168.226.129 | redhat7 |
- 在控制机上安装saltstack主控端软件
//安装软件包
[root@master ~]# yum -y install epel-release
[root@master ~]# yum -y install salt salt-cloud salt-master salt-minion salt-ssh salt-syndic
//修改主控端的配置文件
[root@master ~]# sed -i '/^#master:/a master: 192.168.226.128' /etc/salt/minion
[root@master ~]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.226.128
//启动salt-master和salt-minion,并设置开机自启
[root@master ~]# systemctl start salt-master
[root@master ~]# systemctl start salt-minion
[root@master ~]# systemctl enable salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.
[root@master ~]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.
[root@master ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 *:4505 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 100 *:4506 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
- 在被控机上安装salt-minion客户端
//安装软件包
[root@minion ~]# yum -y install epel-release
[root@minion ~]# yum -y install salt-minion
//修改配置文件
[root@minion ~]# sed -i '/^#master:/a master: 192.168.226.128' /etc/salt/minion
[root@minion ~]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.226.128
//启动服务
[root@minion ~]# systemctl start salt-minion
[root@minion ~]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.
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发送控制指令了
//查看当前证书
[root@master ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
master
minion
Rejected Keys:
//接受指定minion的新证书
[root@master ~]# salt-key -ya minion
The following keys are going to be accepted:
Unaccepted Keys:
minion
Key for minion minion accepted.
[root@master ~]# salt-key -L
Accepted Keys:
minion
Denied Keys:
Unaccepted Keys:
master
Rejected Keys:
//接受所有minion的新证书
[root@master ~]# salt-key -yA
The following keys are going to be accepted:
Unaccepted Keys:
master
Key for minion master accepted.
[root@master ~]# salt-key -L
Accepted Keys:
master
minion
Denied Keys:
Unaccepted Keys:
Rejected Keys:
//测试指定受控端主机是否存活
[root@master ~]# salt "minion" test.ping
minion:
True
[root@master ~]# salt "minion" cmd.run hostname
minion:
minion
//测试所有受控端主机是否存活
[root@master ~]# salt '*' test.ping
minion:
True
master:
True
安装完成。