运维实操——saltstack自动化运维部署httpd和ngnix

1、介绍

saltstack是一个配置管理系统,能够维护预定义状态的远程节点,saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据, saltstack是运维人员提高工作效率、规范业务配置与操作的利器。
Salt的核心功能有:
(1)使命令发送到远程系统是并行的而不是串行的
(2)使用安全加密的协议
(3)使用最小最快的网络载荷
(4)提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标,不止可以通过主机名,还可以通过系统属性,不同的属性会执行不同的动作。
官网:https://www.saltstack.com/

2、安装与配置

提前准备三台虚拟机server1当master端,server2和server3是minion端。提前准备saltstack的安装包,这里使用salt-3000.3-1.el7.noarch版本
首先把安装包和依赖性的文件放在真机的/var/www/html中,开启apache服务

[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# vim salt.repo 							#server1设置软件仓库
[salt]
name=salt
baseurl=http://172.25.11.250:/3000 									#3000是安装包的目录名称
gpgcheck=0

[root@server1 yum.repos.d]# scp salt.repo server2:/etc/yum.repos.d/ #同样的复制给server2和server3
[root@server1 yum.repos.d]# scp salt.repo server3:/etc/yum.repos.d/
[root@server1 yum.repos.d]# yum repolist 							#列出yum源
[root@server1 yum.repos.d]# yum list salt-* 						#检测是否yum源配置成功,结果如下就成功

在这里插入图片描述
同样的server2和server3也需要上述操作。

master端:
yum install -y salt-master	         #安装master端
systemctl enable salt-master	     #设置开机自启动
systemctl start salt-master	         #启动master服务
netstat -antlp						 #查看端口4505和4506

在这里插入图片描述

minion端(Server2/server3):
yum repolist
yum list salt-*
yum install -y salt-minion.noarch	         #安装minion端
vim /etc/salt/minion
master: 172.25.11.1		          		     #设置master主机的ip(该文件中编写的此行要顶格写)
systemctl enable --now salt-minion.service
master端:
salt-key -L  		 #寻找有哪些安装了minion端
salt-key -A 		 #全部添加
salt '*' test.ping	 #测试是否成功

在这里插入图片描述
在这里插入图片描述

master端:
yum install lsof #也可安装lsof工具,通过下述指令方式查看远程连接是否建立
lsof -i :4505
lsof -i :4506 #下图说明成功建立

在这里插入图片描述
master端可以md5sum /etc/salt/pki/master/master.pub 查看master的公钥,同样minion端也可以查看,两边的公钥互相拥有
在这里插入图片描述
在这里插入图片描述
master端yum install -y python-setproctitle 可以通过ps ax查看具体解释
在这里插入图片描述

3、远程执行

Salt命令由三个主要部分构成:salt '<target>' <function> [arguments]

简单实验,成功返回名称
在这里插入图片描述

funcation是module提供的功能,Salt内置了大量有效的functions.
arguments通过空格来界定参数:
salt 'server2' sys.doc pkg				#查看模块文档
salt 'server2' pkg.install httpd		#安装httpd
salt 'server2' pkg.remove httpd			#卸载httpd
编写远程执行模块
Server1端:
[root@server1 salt]# mkdir /srv/salt/_modules
[root@server1 salt]# cd /srv/salt/_modules/
[root@server1 _modules]# vim my_disk.py
		def df():
 		   return __salt__['cmd.run']('df -h')					#查看挂载情况

[root@server1 _modules]# salt server2 saltutil.sync_modules 	#同步模块
[root@server1 _modules]# salt server2 my_disk.df				#相当于在server2中执行df -h

在这里插入图片描述

在 server2:
yum install -y tree				#方便查看效果,安装tree
tree /var/cache/salt/minion/	#可以看到出现my_disk.py,已成功同步

在这里插入图片描述

4、sls文件

Salt 状态系统的核心是SLS,或者叫SaLt State 文件。SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件使用的是YAML语法,注意以下规则:
(1)缩进:Salt需要每个缩进级别由两个空格组成,不要使用tabs
(2)冒号:字典的keys在YAML中的表现形式是一个以冒号结尾的字符串
(3)短横杠:想要表示列表项,使用一个短横杠加一个空格

Server1:
cd /srv/salt/
vim apache.sls
	httpd:						# ID声明
  	  pkg.installed				# 状态声明,函数声明
salt server2 state.sls apache	#让server2执行apache下的sls文件
结果如下

在这里插入图片描述
在saltsatack中,base路径就是/srv/salt/,apache.sls在base下可以直接识别,如下放到子目录下无法直接识别,需要写具体路径。
在这里插入图片描述
或者把apache.sls改为init.sls文件,saltsatack会自动查找init文件,无需写多层子目录。
在这里插入图片描述
sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。使用子目录来做组织是个很好的选择。init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以apache/init.sls就是表示apache。如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.

现在继续修改init.sls文件,赋予更多功能,如下,模块名称叫apache,分为三个部分,第一个部分是安装httpd和php;第二个部分是把source位置的配置文件发到目的地,这样就可以对minion端的服务的配置进行修改(我把端口修改为8080);第三部分是开启httpd服务,监控apache模块下的file(即第二部分)两个文件是否一致,如果不一致,重启httpd。
在这里插入图片描述
salt server2 state.sls apache 执行后,成功把server2的httpd端口修改为8080
在这里插入图片描述

5、部署ngnix

配置一个自动部署nginx的文件。首先建立子目录,创建init.sls文件,想安装nginx
在这里插入图片描述
配置文件内容如下:
在这里插入图片描述
执行salt server3 state.sls nginx,如下,成功
在这里插入图片描述
接下来开启nginx服务,创建service.sls文件。首先调用ngnix模块,就可以把前面写的init.sls文件调用来安装;建立ngnix用户,无法登陆,设定家目录位置;然后把配置文件和service推到minion端;执行开启动作,监控是否/usr/local/nginx/conf/nginx.conf是否和master端的文件一致,如果不一致,重启服务。
在这里插入图片描述

在server1端,修改nginx配置文件
在这里插入图片描述
server1执行salt server3 state.sls nginx.service
在这里插入图片描述
执行curl server3,测试,成功出现nginx测试页
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值