saltstack安装、配置认证、远程执行命令

saltstack介绍

saltstack(官网saltstack.com,官方文档docs.saltstack.com )基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能

saltstack安装

A机器(服务器):192.168.234.128
B机器(客户端):192.168.234.130

设置两台机器的hostname:

hostnamectl set-hostname linux01
hostnamectl set-hostname linux02

分别修改两台机器的hosts文件:

[root@linux01 ~]# vim /etc/hosts

添加以下内容:

192.168.234.128 linux01
192.168.234.130 linux02

分别在两台机器安装saltstack yum源:

[root@linux01 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

#该yum源只适合centos7系统Python2版本

centos7系统Python3版本:https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm

centos8:https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el8.noarch.rpm

在服务端安装salt-master和salt-minion:

[root@linux01 ~]# yum -y install salt-master salt-minion

在客户端安装salt-minion:

[root@linux02 ~]# yum -y install salt-minion

#当有多台机器时,要批量操作的机器都需安装salt-minion,类似于zabbix的zabbix-agent包

分别在客户端和服务端编辑配置文件:

[root@linux01 ~]# vim /etc/salt/minion

添加以下内容:

master: linux01

#注意hostname前要有一个空格

在客户端启动服务:

[root@linux02 ~]# systemctl start salt-minion

在服务端启动服务:

[root@linux01 ~]# systemctl start salt-master salt-minion

在服务端查看监听端口:

[root@linux01 ~]# netstat -lntp|grep python
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      14057/python        
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      14063/python

#4505为消息发布的端口,4506为和客户端通信的端口,客户端虽然是通过tcp与服务端通信,但是客户端不监听任何端口

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

在服务端查看所有minion的hostname:

[root@linux01 ~]# salt-key 
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux01
linux02
Rejected Keys:

认证指定主机:

[root@linux01 ~]# salt-key -a linux01
The following keys are going to be accepted:
Unaccepted Keys:
linux01
Proceed? [n/Y] y
Key for minion linux01 accepted.

[root@linux01 ~]# salt-key 
Accepted Keys:
linux01
Denied Keys:
Unaccepted Keys:
linux02
Rejected Keys:

#主机linux01认证后就到了Accepted Keys分类中

salt-key工具参数说明:

参数 说明
-A 认证所有主机
-a 后面跟主机名,认证指定主机
-r 跟主机名,拒绝指定主机
-R 拒绝所有主机
-d 跟主机名,删除指定主机认证
-D 删除全部主机认证
-y 省略掉交互,相当于直接按了y

补充:使用-r参数拒绝主机时,只能拒绝Unaccepted Keys分类中的主机,如果要拒绝Accepted Keys分类中的主机或删除Rejected Keys分类中的主机使用-d参数即可,当主机删除后,需要在对应的机器重启salt-minion服务才会在服务端salt-key工具的Unaccepted Keys分类中显示

saltstack远程执行命令

检测所有机器通信是否正常:

[root@linux01 ~]# salt '*' test.ping
linux02:
    True
linux01:
    True

#True表示正常,*号表示所有已认证的minion端

cmd.run执行命令:

[root@linux01 ~]# salt '*' cmd.run 'uptime'
linux02:
     18:01:02 up 18:55,  1 user,  load average: 0.01, 0.07, 0.17
linux01:
     18:01:02 up 1 day,  2:36,  2 users,  load average: 0.72, 0.43, 0.43

在指定的机器执行命令:

[root@linux01 ~]# salt 'linux02' cmd.run 'head -1 /proc/cpuinfo'
linux02:
    processor	: 0

#在指定的机器执行命令,直接输入主机名即可

补充:这里的*号必须是在master上已经被接受过认证的客户端,可以通过salt-key查到;关于这部分内容,它支持通配、列表以及正则。 比如两台客户端linux01、linux02 那就可以写成salt 'linux0*'或者salt ‘linux-0[12]’ ,使用列表需要加-L参数:salt -L ‘linux01,linux02’ ,使用正则需要使用-E参数:salt -E ‘linux(01|02)’

发布了114 篇原创文章 · 获赞 851 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Powerful_Fy/article/details/103717099