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是运维人员提高工作效率、规范业务配置与操作的利器。

salt基本原理

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,ipc
salt命令,将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方法,将执行结果通过消息总线返回给master
master接收到客户端返回的结果,调用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

#添加主机名,三台机器都要添加,并且主机要改成相应的名称
[[email protected] ~]# vim /etc/hosts
192.168.136.167 master.saltstack.com
192.168.136.168 web01.saltstack.com
192.168.136.185 web02.saltstack.com

#每台都需要关闭防火墙
[[email protected] ~]# vim /etc/hostname
master.saltstack.com

[[email protected] ~]# vim /etc/hostname
web01.saltstack.com

[[email protected] ~]# vim /etc/hostname
web02.saltstack.com

#安装epel源(三台都要装)
[[email protected] ~]# yum install -y epel-release
[[email protected] ~]# yum -y install salt-master

[[email protected] ~]# 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/salt
mkdir /srv/pillar

启动服务器:
systemctl start salt-master
systemctl enable salt-master

netstat -anpt | egrep ‘4505|4506‘

创建salt与pillar文件根目录:
mkdir /srv/salt
mkdir /srv/pillar

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

在两台上分别配置:
yum -y install salt-minion

vi /etc/salt/minion
修改配置如下:
16行 master: 192.168.175.132     //指定主控端IP
78行 id: web01.saltstack.com     //指定被控端主机名

启动被控端服务
systemctl start salt-minion

在主控端测试与被控端的通信状态!
salt ‘*‘ test.ping

web01.saltstack.com:
True
web02.saltstack.com:
True

salt ‘*‘ 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/salt
vi /srv/salt/top.sls
base:
‘*‘:
- apache
注意:‘*‘,则表示在所有的客户端执行 apache 模块。

vi /srv/salt/apache.sls
apache-service:
pkg.installed:
- names:                // 如果只有一个服务,那么就可以写成 –name: httpd 不用再换一行
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。

重启服务
#systemctl restart salt-master
执行命令
#salt ‘*‘ state.highstate 

原文地址:https://blog.51cto.com/14449524/2469961

时间: 2024-11-10 01:43:47

saltstack详解+部署apache服务的相关文章

自动化运维系列之SaltStack批量部署Apache服务

自动化运维系列之SaltStack批量部署Apache服务 saltstack原理 SalStack由master和minion构成,master是服务端,表示一台服务器:minion是客户端,表示多台服务器.在Master上发送命令给符合条件的minion,Minion就会执行相应的命令.Master和Minion之间是通过ZeroMQ(消息队列)进行通信的. SaltStack的Master端的监听端口是4505和4506,4505端口是Master和Minion认证通信端口:4506端口是

ansible-playbook一键化部署apache服务

原创 chaos_oper 最后发布于2019-06-13 21:31:44 阅读数 463 收藏展开Playbook(任务剧本) playbook是简单易用的自动化语言编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是JSON格式的* YML文件playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础.Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式.实战:playbook

详解区块链服务——部署区块链

部署区块链服务 步骤1:资源准备为了更稳定的运行区块链服务需准备2台8u16g机器来进行服务的部署.注册并登陆华为云账号,进入华为云管理控制台, 选择计算/云容器引擎服务(见图2). 点击创建Kubernetes集群按钮,进入创建虚拟机的界面,在集群名称输入框中命名集群的名字,按需选择自己要使用的配置(可以采用默认配置)并点击下一步按钮进入图3界面. 在图3的界面上选择2台8核16GB内存的机器,在弹性IP栏点击现在购买弹性IP,公网弹性IP主要用于对公网发布BCS代理的访问地址.在云容器引擎左

【详解】DNS服务工作原理、正反向解析和主从同步

目录: 一.理论部分 二.实验部分 ******************************理论部分*************************************** 正文: 一.什么是DNS服务. DNS服务是互联网的基础性服务之一.全称为Domain Name System(域名系统).DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,提供将域名转换成对应IP地址的信息条目,能够使用户更方便的通过域名(如baidu.com)去访问互联网,而不用去记住能够被机器直接

Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 一.chkconfig 的使用语法 1.chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <levels等级代号>][系统服务][on/off/reset] 2.参数用法: --add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文

smb协议详解和samba服务的配置

理论部分 samba:基于smb协议使网络上的计算机能共享文件 samba的核心是smbd和nmbd两个守护进程 smbd:管理samba服务器上的共享目录 nmbd:进行netbios名解析,使客户端能浏览服务器的共享资源 协议端口: smbd:tcp 445和tcp139 nmbd:udp 137/138 工作流程: (图片来源网络) samba服务器的安装和配置 1.安装samba     yum install samba -y 2.修改配置文件/etc/samba/smb.conf #

步骤详解安装Apache web服务器

1.在上右键è安装 安装后apache web服务器自动启动. 在右下角出现. Apache安装之后有一个默认的网站目录 在浏览器上通过网站就可以访问到该目录下的文件. 2.测试 在浏览器输上请求localhost后看到此界面说明apache安装成功. 为什么可以访问到默认目录下的文件呢? 是因为在apache/conf/httpd.conf中配置了DocumentRoot指向该目录. 现在在该目录放一个PHP文件,通过浏览器访告诉访问该PHP文件. 为什么会出现这种情况呢? 因为web服务器接

详解CentOS 7 服务控制及优化启动过程

一.服务控制及切换运行级别1.服务控制常见的服务控制类型start 启动stop 停止restart 重启(慎用)reload 重载,无需停止服务[常用]status 查看状态系统引导级别图常见的systemd电源管理命令 2.切换运行级别1).查看系统的运行级别命令:runlevel2).切换系统的运行级别命令:systemctl isolate multi-user.target 或者 init 3 (切换字符终端界面)命令:systemctl isolate graphical.targe

Rsync 服务部署与参数详解

Rsync 简介 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台. 传统的 scp 和 cp 工具拷贝每次均为完整拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝功能.因此,从同步数据的性能及效率上,Rsync工具更胜一筹. 官网地址: 1 https://download.samba.org/pub/rsync/rsync.html 2 # 或者 3 https://