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为公钥,它会把公钥传输给master1
2[root@kun02 ~]# ls /etc/salt/pki/minion/
minion.pem minion.pubmaster第一次启动时也会在
/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 ##认证所有机器 |