自动化运维——saltstack简介及部署

1. Saltstack简介

  • saltstack是一个配置管理系统,能够维护预定义状态的远程节点。

  • saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。

  • saltstack是运维人员提高工作效率、规范业务配置与操作的利器。

Salt的核心功能:

使命令发送到远程系统是并行的而不是串行的
使用安全加密的协议
使用最小最快的网络载荷
提供简单的编程接口

Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

2. saltstack通信验证机制

SaltStack 的通讯架构模型

Salt 采用服务端-代理的通讯模型(也可以通过 SSH 方式实现非代理模式)。服务端称为 Salt master,代理端称为 Salt minion。

Salt master 负责发送命令予 Salt minion,随后收集并展示这些命令的执行结果。一台 Salt master 可以管理几千台的系统。

saltstack通信机制

SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。

在这里插入图片描述
Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口。

在这里插入图片描述

Salt minion 验证机制

(1) 当 minion 启动时,其将搜索网络中的 master。当找到时, minion 将发送公钥给 Salt master,从而实现初次握手。其过程如下图所示。

在这里插入图片描述

(2) 当初次握手后,Salt minion 的公钥将被保存在服务端,此时 master 需要使用过 salt-key 命令接收公钥(也可以采用自动机制)。注意:在 Salt minion 的公钥被接收前,Salt master 是不会将密钥发放给 minion 的,也就是说 minion 在此之前不会执行任何命令。
(3) 当 Salt minion 的公钥被接收后,Salt master 就会把公钥连同用于加解密 master 信息的可变动 AES 密钥发送至 Salt minion。其中,返回给 Salt minion 的 AES 密钥由 minion 的公钥加密,可由 Salt minion 解密。

3. saltstack安装与部署

部署环境:

server1 	172.25.254.1 	salt-master
server2 	172.25.254.2 	salt-minion
server3 	172.25.254.3 	salt-minion

以上主机系统为 rhel7.6,且防火墙和selinux均为关闭状态。

参考文档:

官网:https://www.saltstack.com/

安装可以参考:https://repo.saltstack.com/#rhel

设置官方YUM仓库(每个主机都要操作):

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

salt-master主机配置

安装master端:

[root@server1 yum.repos.d]# yum install salt-master -y

设置master自启动并启动服务:

[root@server1 ~]# systemctl enable --now salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.

master端的配置文件为/etc/salt/master。

启动后查看端口可以看出开启了4505和4506两个端口:

在这里插入图片描述

salt-minion端配置

安装minion端:

以下操作以server2为例,server3和server2的操作相同:

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

minion端的配置文件为/etc/salt/minion:

[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
[root@server2 salt]# cat -n minion | grep 16
第16行设置master主机的ip:
    16	master: 172.25.254.1

在这里插入图片描述
设置自启动

[root@server2 salt]# systemctl enable --now salt-minion

server3与server2操作相同。

配置连接

(1)salt-master端:

[root@server1 salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server2
Rejected Keys:

可以看出server2正在等待确认,使用以下命令确认:

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

其中参数说明:
-A表示接受所有,-a表示指定接受,-d表示指定删除,-D表示全部删除

再次查看公钥情况可以看出server2和server3已经确认

在这里插入图片描述
他们之间的公钥保存在/etc/salt/pki目录中

(2)部署完成后可以使用以下命令测试:

[root@server1 ~]# salt '*' test.ping
server2:
    True
server3:
    True
[root@server1 ~]# 

在这里插入图片描述

其中,’*'代表agent端的所有主机(即server2和server3),test表示模块,作用与python中的模块类似,ping表示test模块中的函数,作用与python中的函数类似。

备注:

若salt-minion端更改主机名后需进行如下设置

当salt-minion端更改主机名后我们在master端查看会发现没有改变,此时我们需要将保存salt-minion端主机名的缓存删除,缓存保存在/etc/salt/minion_id文件中,删除这个文件后重启salt-minion即可。

[root@server2 salt]# cd /etc/salt/
[root@server2 salt]# ls
cloud           cloud.maps.d       master    minion.d   proxy
cloud.conf.d    cloud.profiles.d   master.d  minion_id  proxy.d
cloud.deploy.d  cloud.providers.d  minion    pki        roster
[root@server2 salt]# cat minion_id
server2[root@server2 salt]#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值