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: