24.1 自动化运维介绍
24.2 saltstack安装
24.3 启动saltstack服务
24.4 saltstack配置认证
24.1 自动化运维介绍
认识自动化运维
传统运维效率低,大多工作人为完成
传统运维工作繁琐,容易出错
传统运维每日重复做相同的事情
传统运维没有标准化流程
传统运维的脚本繁多,不能方便管理
自动化运维就是要解决上面所有问题
常见自动化运维工具
1.Puppet (www.puppetlabs.com) #出现的比较早
基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。
2.Saltstack(官网 https://saltstack.com,文档docs.saltstack.com )
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
#使用的串行效率很快。而expect使用的并行(for循环,执行完一个在继续执行下一个,效率就会很慢)
#除了这种cs架构(服务端客户端),也支持只装一个命令的
#支持的机器会更多
3.Ansible (www.ansible.com )
更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24.2 saltstack安装/24.3 启动saltstack服务
1.saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html
2.可以使用salt-ssh远程执行,类似ansible,
3.也支持c/s模式,下面我们将讲述该种模式的使用,需要准备两台机器
~133.128为服务端(中控中心),133.130为客户端
~设置hostname以及hosts,aming-01,aming-02
#实际机器量很多的情况下,可以搞一个内部的dns(带域名的),类似什么A1.axinlinux.com、A2.axinlinux.com,所有的机器都是这种形式的。这样的话hosts就不用配置了,直接写一个dns ip就直接指导哪一个机器是谁。因为临时做实验所以写了个hosts
4.两台机器全部安装saltstack yum源
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm #可根据以上的官方文档,安装更新的yum源
5.128上执行 yum install -y salt-master(哪个为中控中心就安装master) salt-minion
6.130上执行 yum install -y salt-minion
7.128上编辑配置文件(服务端master)
vi /etc/salt/minion //增加
master: aming-01
启动服务systemctl start salt-master; systemctl start salt-minion
8.130上编辑配置文件(客户端minion)
vi /etc/salt/minion //增加
master: aming-01
启动服务systemctl start salt-minion
服务端监听4505和4506两个端口,4505为消息发布的端口,4506为和客户端通信的端口
实例:
01为服务端,02为客户端
[root@axinlinux-01 ~]# hostname
axinlinux-01
[root@axinlinux-01 ~]# vim /etc/hosts
192.168.208.128 axinlinux-01
192.168.208.130 axinlinux-02
[root@axinlinux-02 ~]# hostname
axinlinux-02
[root@axinlinux-02 ~]# vim /etc/hosts
192.168.208.128 axinlinux-01
192.168.208.130 axinlinux-02
[root@axinlinux-01 ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
[root@axinlinux-02 ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
[root@axinlinux-01 ~]# yum list |grep salt #可看到很多刚才执行yum时所产生的rpm包,01上需要安装的是:
salt-master.noarch 2018.3.3-1.el7 salt-latest #这两个是01要安装的,其他的暂不接触
salt-minion.noarch 2018.3.3-1.el7 salt-latest
salt-ssh.noarch 2018.3.3-1.el7 salt-latest #ssh这个后续我们再讲
[root@axinlinux-01 ~]# yum install -y salt-master salt-minion
[root@axinlinux-02 ~]# yum install -y salt-minion
[root@axinlinux-01 ~]# vim /etc/salt/minion
master: axinlinux-01 #改为master为hosts设置的01机器的主机名
[root@axinlinux-02 ~]# vim /etc/salt/minion
master: axinlinux-01 #客户端也要改
[root@axinlinux-02 ~]# systemctl start salt-minion #先启动客户机的minoon
[root@axinlinux-02 ~]# ps aux |grep salt
[root@axinlinux-02 ~]# netstat -lntp #虽然minion是跟master通过tcp/ip通信,但是minion不监听任何端口。master才会监听端口
[root@axinlinux-01 ~]# systemctl start salt-master
[root@axinlinux-01 ~]# systemctl start salt-minion
[root@axinlinux-01 ~]# ps aux |grep salt
[root@axinlinux-01 ~]# netstat -lntp #master监听两个端口
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 2906/python #4505来发送消息
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 2912/python #master和minion用来通信的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24.4 saltstack配置认证
1.master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的
#也就是一个密钥对,之后才可以去传输数据
2.minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub为公钥,它会把公钥传输给master
3.master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,通过salt-key工具接受这个公钥,一旦接受后就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub
4.以上过程需要借助salt-key工具来实现
5.执行如下命令 salt-key -a aming-01// -a后面跟主机名,可以认证指定主机
6.salt-key -a aming-02
salt-key命令用法
-a 后面跟主机名,认证指定主机
-A 认证所有主机 #后面什么后不用跟
-r 跟主机名,拒绝指定主机
-R 拒绝所有主机
-d 跟主机名,删除指定主机认证
-D 删除全部主机认证
-y 省略掉交互,相当于直接按了y
实例:
[root@axinlinux-01 ~]# ls /etc/salt/pki/master/
master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
[root@axinlinux-01 ~]# salt-key -a axinlinux-02 #如果直接是-A可以将所有的机器全部认证
The following keys are going to be accepted:
Unaccepted Keys:
axinlinux-02
Proceed? [n/Y] y #按y
Key for minion axinlinux-02 accepted.
[root@axinlinux-01 ~]# salt-key #然后再次输入salt-key
Accepted Keys: #已经通过的,也就是已经接受了02的公钥
axinlinux-02
Denied Keys: #被拒绝的
Unaccepted Keys: #默认的,也就是机器里能识别到的
axinlinux-01
Rejected Keys:
[root@axinlinux-01 ~]# cat /etc/salt/pki/master/minions/axinlinux-02 #所以在这就有了02的公钥(这个文件就是客户机上minion.pub)
[root@axinlinux-02 ~]# cat /etc/salt/pki/minion/minion.pub #cat02的公钥看是不是跟01接收到的公钥一致
[root@axinlinux-01 ~]# salt-key -A #直接-A(也就是将本机也认证)
The following keys are going to be accepted:
Unaccepted Keys:
axinlinux-01
Proceed? [n/Y] y
Key for minion axinlinux-01 accepted.
[root@axinlinux-01 ~]# salt-key #才看一下,就已经全部通过了
Accepted Keys:
axinlinux-01
axinlinux-02
Denied Keys:
Unaccepted Keys:
Rejected Keys: