24.1 自动化运维介绍
24.2 saltstack安装
24.3 启动saltstack服务
24.4 saltstack配置认证
24.1 自动化运维介绍
- 传统运维缺点- 传统运维效率低,大多工作人为完成
- 传统运维工作繁琐,容易出错
- 传统运维每日重复做相同的事情
- 传统运维没有标准化流程
- 传统运维的脚本繁多,不能方便管理
 
自动化运维就是要解决上面所有问题Puppet 官网 www.puppetlabs.com
基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。
Saltstack 官网 https://saltstack.com
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
Ansible 官网 www.ansible.com
更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。
24.2 saltstack安装
saltstack介绍文档 https://docs.saltstack.com/en/latest/topics/index.html
saltstack最新yum源 https://repo.saltstack.com/#rhel
可以使用salt-ssh远程执行,类似ansible,也支持c/s模式。
192.168.80.101 kun01 既做服务端 也做客户端
192.168.80.102 kun02 做客户端
步骤
1.为两台机器设置hostname和hosts
| 1 | [root@kun01 ~]# hostnamectl set-hostname kun01 | 
在两台机器上1
2
3
4[root@kun01 ~]# vim /etc/hosts
192.168.80.101 kun01
192.168.80.102 kun02
2.两台机器按照saltstack yum源
| 1 | [root@kun01 ~]# yum install -y http://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm | 
问题1 官方yum源下载不了
[root@kun02 ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
已加载插件:fastestmirror
无法打开 https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm ,跳过。
解决 https改为http yum源路径也1
2
3
4
5[root@kun01 ~]# yum install -y http://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
[root@kun02 ~]# vim /etc/yum.repos.d/salt-latest.repo
baseurl=http://repo.saltstack.com/yum/redhat/7/$basearch/latest
3.安装salt-master和salt-minion
在kun011
[root@kun01 ~]# yum install -y salt-master salt-minion
在kun021
[root@kun02 ~]# yum install -y salt-minion
24.3 启动salt相关服务
步骤
1.在kun01上编辑minion配置文件启动服务
| 1 | [root@kun01 ~]# vim /etc/salt/minion | 
| 1 | [root@kun01 ~]# systemctl start salt-minion | 
2.在kun02上编辑minion配置文件启动服务
| 1 | [root@kun02 ~]# vim /etc/salt/minion | 
| 1 | [root@kun02 ~]# systemctl start salt-minion | 
问题2 启动不了minion服务
9月 07 23:52:09 kun02 salt-minion[1747]: File “/usr/lib/python2.7/site-packages/salt/utils/user.py”, lin…dule>
9月 07 23:52:09 kun02 salt-minion[1747]: import salt.utils.win_functions
9月 07 23:52:09 kun02 salt-minion[1747]: File “/usr/lib/python2.7/site-packages/salt/utils/win_functions…dule>
9月 07 23:52:09 kun02 salt-minion[1747]: import psutil
9月 07 23:52:09 kun02 salt-minion[1747]: File “/usr/lib64/python2.7/site-packages/psutil/init.py”, l…dule>
9月 07 23:52:09 kun02 salt-minion[1747]: import psutil._pslinux as _psplatform
9月 07 23:52:09 kun02 salt-minion[1747]: AttributeError: ‘module’ object has no attribute ‘_pslinux’
解决 重新下载并安装psutil包1
2
3
4[root@kun02 ~]# wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.2.tar.gz
[root@kun02 ~]# tar zxvf psutil-3.2.2.tar.gz
[root@kun02 ~]# cd psutil-3.2.2
[root@kun02 psutil-3.2.2]# python setup.py install
| 1 | [root@kun01 ~]# netstat -lntp |grep python | 
服务端上监听4505和4506两个端口,4505是消息发布的端口,4506是和客户端通信的端口。客户端上是不会监听端口。
24.4 saltstack配置认证
- saltstack认证过程 - master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的 
 minion在第一次启动时会在- /etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub为公钥,它会把公钥传输给master- 1 
 2- [root@kun02 ~]# ls /etc/salt/pki/minion/ 
 minion.pem minion.pub
- master第一次启动时也会在 - /etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,通过salt-key工具接受这个公钥,一旦接受后就会在- /etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在- /etc/salt/pki/minion目录下,并命名为- minion_master.pub- 1 
 2- [root@kun01 ~]# ls /etc/salt/pki/master/ 
 master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
 
salt-key:saltstack认证工具
-a  后面跟主机名,认证指定主机-A 认证所有主机-r  跟主机名,拒绝指定主机-R  拒绝所有主机-d 跟主机名,删除指定主机认证-D 删除全部主机认证-y 省略掉交互,相当于直接按了y
| 1 | [root@kun01 ~]# salt-key | 
| 1 | [root@kun01 ~]# salt-key -a kun01 -y ##认证kun01 -y放主机名后面 | 
| 1 | [root@kun01 ~]# salt-key -r kun02 ##拒绝kun02 | 
| 1 | [root@kun01 ~]# salt-key -d kun01 -y ##删除kun01 | 
| 1 | [root@kun01 ~]# salt-key -A ##认证所有机器 | 
