saltstack详解+部署apache服务
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,saltstack介绍1、 saltstack是使用python语言开发的;2、 轻量级的管理工具,批量执行命令;3、常用模块:pkg(包)、file(文件)、cmd(执行命令或脚本)、user、 s
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
山西品质软件开发设施检测中心
厦门大象精灵软件开发有限公司图片
管理软件开发选择臻动传媒
服务器内存三大厂家
计算机网络技术算理科吗
科密考勤系统读取数据库
服务器整蛊
我的世界tis服务器主播
数据库中记录上移
中小学生家庭与网络安全教育
我的世界服务器日志在哪里看
数据库课程综合实验
用友输出帐套备份数据库异常
兖州四维跳跃软件开发有限公司
2005 数据库可疑
服务器防火墙配置
数据库删除创建的用户
网络技术专业主要方向
如何判断软件开发等级
u8管理服务器在哪打开
观看护苗网络安全心得体会
上海品质网络技术展示
access数据库资产管理
网络安全法四十九条
高级软件开发师考试
网络安全口令解说
网络安全防盗防诈骗黑板报
图书馆的网络安全管理论文
国外药典数据库
网络安全天融信价格