SaltSack自动化运维(2)——环境安装及部署

1.先了解基础知识

saltstack是基于python开发的一套C/S架构配置管理工具,它的底层使用ZeroMQ消息队列pub/sub方式通信,
使用SSL证书签发的方式进行认证管理。ZeroMQ使SaltStack能快速在成千上万台机器上进行各种操作,
而且采用RSA Key方式确认身份,传输采用AES加密,使传输的安全性得到保障。

saltstack是基于C/S架构的服务模式,服务器端叫做Master,客户端叫作Minion
并且有消息队列中的发布与订阅(pub/sub)服务模式,minion与master之间通过ZeroMQ消息队列通信
Master和Minion端都以守护进程的模式运行,一直监听配置文件里面定义的ret_port也就是4506端口(接收minion请求)
和publish_port也就是4505端口(ZMQ的发布消息)
当minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证
如下图(salt-master端的4505和4506端口,被两个客户端(172.25.2.2和172.25.2.3)所连接)

在这里插入图片描述

2.SaltSack的工作机制

Master和Minion都以守护进程的方式运行
Master监听配置文件里定义的ret_port(接收minion请求),和publish_port(发布消息)的端口
当Minion运行时,它会自动连接到配置文件里定义的Master地址ret_port端口进行连接认证
当Master和Minion可以正常通信后,就可以进行各种各样的配置管理工作了

3.搭建实验环境

三台rhel7.3的虚拟机

主机信息主机功能
server1(172.25.2.1)master节点
server2(172.25.2.2)minion节点1
server3(172.25.2.3)minion节点2

(1)在真机上创建三个全新的快照
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)用真机连接三台虚拟机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)在真机上搭建共享yum源,里面包含saltstack的安装包=
在这里插入图片描述
在这里插入图片描述
到此为止基本的实验环境已经搭建完毕,接下来我将部署saltstack

4.salt的具体步骤如下:

第一步:salt stack的master与minion之间通过ZeroMq进行消息传递,使用了ZeroMq的发布-订阅模式,连接方式包括tcp,ipc。
第二步:salt命令,以ls查看为例,将cmd.run ls命令从salt.client.LocalClient.cmd_cli发布到master,获取一个Jobid,根据jobid获取命令执行结果。
第三步:master接收到命令后,将要执行的命令发送给客户端minion。
第四步:minion从消息总线上接收到要处理的命令,交给minion._handle_aes处理。
第五步:minion._handle_aes发起一个本地线程调用cmdmod执行ls命令。
线程执行完ls后,调用minion._return_pub方法,将执行结果通过消息总线返回给master。
第六步:master接收到客户端返回的结果,调用master._handle_aes方法,将结果写的文件中。
第七步:salt.client.LocalClient.cmd_cli通过轮询获取Job执行结果,将结果输出到终端。

5.saltstack工具的软件依赖

saltstack对于python版本和python模块有一定的要求

Python版本大于2.6或版本小于3.0
msgpack-pythonsaltstack消息交换库
YAMLsaltstack配置解析定义语法
Jinja2saltstack states配置模板
MarkupSafePython unicode转换库
apache-libcloudsaltstack对云架构编排库
RequestsHTTP Python库
ZeroMQsaltstack消息系统
pyzmqZeroMQ Python库
PyCryptoPython密码库
M2CryptoOpenssl Python包装库

6.saltstack的安装部署(yum安装)

官网地址:https://docs.saltstack.com
Centos服务器安装地址:https://repo.saltstack.com/#rhel

(1)在server1上编写yum源的配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)server2和server3也需要使用网络yum源文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)在server1上安装master节点
在这里插入图片描述
(4)在server2和server3上安装minio节点
在这里插入图片描述
在这里插入图片描述
(5)查看master节点的配置文件,可以看出saltstack使用root用户通信,并且开启服务(主节点)
在这里插入图片描述
这里先保持默认配置直接启动服务,后面再涉及到配置文件的修改。
在这里插入图片描述
在这里插入图片描述
4505端口:用来链接slave,发布订阅
4506端口:请求响应,模式为:zmq(消息队列)
在这里插入图片描述
(6)修改minion节点的配置文件(从节点),开启服务

修改配置文件(注意每个冒号后面都要跟一个空格,这是书写规范)
指定master为server1
master: 172.25.2.1 #这里要指向salt-master服务器,可以是IP,也可以是域名,也可以是主机名,不过主机名就要写/etc/hosts了,
如果用的是内部DNS服务器的话可以用主机名或者域名的形式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里基本的环境已经部署完毕

(7)添加连接密钥(查看密钥并加入)/在master添加minion

第一次查看server2和server3没有与master建立连接的原因:
是因为启动minion服务后,会产生/etc/salt/minion_id ,而这个文件里面的内容不会因为你主机名的改变、服务的重启、机器的重启而改变,所以如果你的主机名发送了变化,想让master端那里的证书认证名称也跟着发送变化的话,就要删除/etc/salt/minion_id文件或者清空/etc/salt/minion_id文件里面的内容,然后重启minion服务。

salt-key -L #查看当前证书的签证情况(第一次客户端的证书在未验证Unaccepted Keys:的下面)
salt-key -A通过此证书的验证
salt-key -L #再次查看(发现出现在了Accepted Keys:下面表示已经通过了验证,可以建立通信了)
在这里插入图片描述

master 秘钥对默认存储在/etc/salt/pki/master/master.pub  /etc/salt/pki/master/master.pem
master 端认证的公钥存储在:/etc/salt/pki/master/minions/
minion 秘钥对默认存储在/etc/salt/pki/minion/minion.pub  /etc/salt/pki/minion/minion.pem
minion 存放的master公钥/etc/salt/pki/minion/minion_master.pub
minion_id 默认存储在/etc/salt/minion_id

(8)测试

测试服务器端是否能控制客户端
在这里插入图片描述
(9)安装监听端口的命令lsof
监听状态是指网络服务端程序所处的一种状态,在该状态下,服务端程序等待客户端的链接
在这里插入图片描述
通过端口查看,返现有两台机器与master端的端口建立了连接。
可以看到4505和4506两个端口的作用
在这里插入图片描述
查看进程
在这里插入图片描述
安装python-setproctitle,查看python端口情况,每个进程的功能是啥
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动化运维工具——ansible是一款开源的IT自动化工具,广泛应用于软件部署、配置管理和任务协同等领域。它的最大特点是简单易用、功能强大且跨平台。 首先,ansible具有简单易用的特点。它使用简单的YAML语言作为配置文件,无需编写复杂的脚本。用户只需要简单地定义主机和操作即可完成任务的执行。这使得即便是非开发人员,也能轻松上手使用ansible进行自动化管理。 其次,ansible功能强大。它支持广泛的操作系统、云平台和网络设备,并提供了丰富的模块化功能。通过在任务中使用ansible的模块,我们可以实现系统配置、软件安装、文件传输等各种常见操作。此外,ansible不仅支持并发执行任务,还能够将任务分组执行,并提供了强大的变量和条件控制功能。 再次,ansible跨平台。无论是在Linux、Unix还是Windows系统上,ansible都能够良好地运行。此外,它还支持云平台,如AWS、Azure等,以及网络设备,如Cisco、Juniper等。这使得ansible成为一个非常灵活的自动化运维工具,能够满足各种不同环境和需求的自动化管理。 最后,ansible还具有良好的社区支持。ansible拥有庞大的用户社区和活跃的开发者社区,有大量的文档、示例和插件可供参考和使用。这使得我们在使用ansible时能够获得快速解答和支持,同时也能够从社区中学习到更多的技巧和经验。 总而言之,ansible是一款简单易用、功能强大且跨平台的自动化运维工具。它在软件部署、配置管理和任务协同等方面具有广泛的应用,并且得到了良好的社区支持。无论是企业还是个人,都可以通过ansible来提高工作效率和自动化管理水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值