saltstack详解+部署apache服务
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,saltstack介绍1、 saltstack是使用python语言开发的;2、 轻量级的管理工具,批量执行命令;3、常用模块:pkg(包)、file(文件)、cmd(执行命令或脚本)、user、 s
千家信息网最后更新 2025年12月01日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安全错误
数据库的锁怎样保障安全
信息系统可以用数据库管理吗
坐标数据库
管理打印服务器实验报告
天行代理服务器下载
气象局网络安全制度
欧柏泰克互联网科技专修学院
互联网人士谈科技
网络安全法第二十一条处罚规定
数据库工程师包括什么意思
服务器 集中管理
数据库建表关系图工具有哪些
蓝帽杯网络安全与执法竞赛
网络安全问题作文英语大学
厦门加固服务器价格多少
国家网络安全知识竞赛的规则
网络安全 市场 未来
数据库差集怎么写
为啥5g手机无法连接服务器
qq协议软件开发教程
动态数据库pdf
政策型数据库
企业网络安全学习内容
旅行网络安全监督管理职责
湖南apple软件开发
正规网络安全案例报价
网络安全好看视频
2017网络安全宣传策划
极简互联网科技
数据库专业对口怎么写
动态数据库pdf