千家信息网

saltstack详解+部署apache服务

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,saltstack介绍1、 saltstack是使用python语言开发的;2、 轻量级的管理工具,批量执行命令;3、常用模块:pkg(包)、file(文件)、cmd(执行命令或脚本)、user、 s
千家信息网最后更新 2026年10月31日saltstack详解+部署apache服务

saltstack介绍

1、 saltstack是使用python语言开发的;
2、 轻量级的管理工具,批量执行命令;
3、常用模块:pkg(包)、file(文件)、cmd(执行命令或脚本)、user、 service、cron
4、saltstack数据系统
Grains (静态数据)
pillar (动态数据)

saltstack三大功能,远程执行,配置管理,云管理SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

saltstack基本原理

SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信master可以发送任何指令让minion执行了,salt有很多可执行模块,比如说cmd模块,在安装minion的时候已经自带了,它们通常位于你的python库中,locate salt | grep /usr/可以看到salt自带的所有东西。这些模块是python写成的文件,里面会有好多函数,如cmd.run,当我们执行salt '*' cmd.run 'uptime'的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果。master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受消息的。

具体步骤如下

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

优点:

首先,他速度快,基于消息队列+线程,跑完多台设备,都是毫秒级别的
其次,非常灵活,源码是python,方便理解和自定义模块(python 语言相对于其他的perl、ruby等还是很好理解的)
命令简单,功能强大

缺点:部署minion端较为不便

saltstack几个重要的组件
grainsgrains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip等静态信息。
grains的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的

pillarpillar 和 grains 不一样,是在 master 上定义的,并且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)可以存在 pillar 里,还可以定义变量等。

State
他是saltstack的最核心功能,通过预先指定好的sls文件对被控主机进行管理:包/文件/网络配置/系统服务/系统用户等。

Saltstack 批量部署apache

实验环境:
master:192.168.136.167
web01:192.168.136.168
web02:192.168.136.185

#添加主机名,三台机器都要添加,并且主机要改成相应的名称[root@master ~]# vim /etc/hosts192.168.136.167 master.saltstack.com192.168.136.168 web01.saltstack.com192.168.136.185 web02.saltstack.com#每台都需要关闭防火墙[root@master ~]# vim /etc/hostname master.saltstack.com[root@web01 ~]# vim /etc/hostname web01.saltstack.com[root@web02 ~]# vim /etc/hostname web02.saltstack.com#安装epel源(三台都要装)[root@master ~]# yum install -y epel-release[root@master ~]# yum -y install salt-master[root@master ~]# vim /etc/salt/master 15行 interface: 192.168.175.132   //监听地址215行 auto_accept: True        //避免要运行salt-key来确认证书认证416行 file_roots:base:- /srv/salt           //saltstack文件根目录位置,目录需要创建710行组分类:nodegroups:group1: 'web01.saltstack.com'group2: 'web02.saltstack.com'552行 pillar_opts: True        //开启pillar功能,同步文件功能529行 pillar_roots:base:- /srv/pillar         //pillar的主目录,需要创建创建salt与pillar文件根目录:mkdir /srv/saltmkdir /srv/pillar启动服务器:systemctl start salt-mastersystemctl enable salt-masternetstat -anpt | egrep '4505|4506'创建salt与pillar文件根目录:mkdir /srv/saltmkdir /srv/pillar

--------------------以下在被控端上操作-------------------

在两台上分别配置:yum -y install salt-minionvi /etc/salt/minion修改配置如下:16行 master: 192.168.175.132     //指定主控端IP78行 id: web01.saltstack.com     //指定被控端主机名启动被控端服务systemctl start salt-minion在主控端测试与被控端的通信状态!salt '*' test.pingweb01.saltstack.com:Trueweb02.saltstack.com:Truesalt '*' cmd.run 'df -h'   //远程执行命令salt-key   //查看在 master 上已经被接受过的客户端查看被控主机上grains所有值:(每次minion在启动是都会获取客户端信息)salt 'web01.saltstack.com' grains.items (静态数据)salt 'web01.saltstack.com' pillar.items  (动态数据)配置管理安装Apache下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:修改配置文件vi /etc/salt/master     // 打开如下内容的注释file_roots:base:- /srv/salt/注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。mkdir /srv/saltvi /srv/salt/top.slsbase:'*':- apache注意:'*',则表示在所有的客户端执行 apache 模块。vi /srv/salt/apache.slsapache-service:pkg.installed:- names:                // 如果只有一个服务,那么就可以写成 -name: httpd 不用再换一行- httpd- httpd-develservice.running:- name: httpd- enable: True注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。重启服务#systemctl restart salt-master执行命令#salt '*' state.highstate 
命令 文件 服务 管理 配置 模块 消息 数据 结果 功能 客户 客户端 主机 信息 环境 系统 函数 服务器 动态 根目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 苏州找大状互联网科技有限公司 深圳恒合互联网络科技有限公司 厦门中拓互联网络科技有限公司 科技互联网技术 互联网金融 科技 亿策互联网科技 上海喔噻互联网科技 互联网 视角下的科技创新 火传媒上海互联网科技 互联网科技公司有哪些 科技类的互联网平台 互联网媒体平台算高科技产业 坤平互联网科技 元气玛特互联网科技公司是外包吗 同城互联网络科技 北京天晋互联网科技有限公司 互联网科技的前景 互联网的黑科技实验室 六子台科技互联网展会 科技互联网产品 互联网科技网站 湖南洣水互联网科技有限公司扣款 互联网对科技的发展 广州市恰铎互联网科技有限公司 深圳市罗太互联网科技有限公司 萌小萌互联网科技河南有限公司 科技互联网行业投资研究 重庆科技产业互联网有哪些 互联网科技创新方面的资料
0