当前位置: 首页>编程语言>正文

saltstack的state详解 saltstack web界面


saltstack自动化运维部署与管理

  • 1、介绍
  • 2、安装与配置
  • 3、远程执行
  • 4、sls文件
  • 5、部署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源配置成功,结果如下就成功

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx,第1张

同样的server2和server3也需要上述操作。

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

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_linux_02,第2张

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	 #测试是否成功

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_apache_03,第3张

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack_04,第4张

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

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_05,第5张

master端可以md5sum /etc/salt/pki/master/master.pub 查看master的公钥,同样minion端也可以查看,两边的公钥互相拥有

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_linux_06,第6张

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack_07,第7张

master端yum install -y python-setproctitle 可以通过ps ax查看具体解释

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack_08,第8张

3、远程执行

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

简单实验,成功返回名称

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack的state详解_09,第9张

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

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_linux_10,第10张

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

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack的state详解_11,第11张

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文件
结果如下

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_12,第12张

在saltsatack中,base路径就是/srv/salt/,apache.sls在base下可以直接识别,如下放到子目录下无法直接识别,需要写具体路径。

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_apache_13,第13张

或者把apache.sls改为init.sls文件,saltsatack会自动查找init文件,无需写多层子目录。

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_14,第14张

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。

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_apache_15,第15张

salt server2 state.sls apache 执行后,成功把server2的httpd端口修改为8080

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_16,第16张

5、部署ngnix

配置一个自动部署nginx的文件。首先建立子目录,创建init.sls文件,想安装nginx

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack_17,第17张

配置文件内容如下:

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_18,第18张

执行salt server3 state.sls nginx,如下,成功

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack的state详解_19,第19张

接下来开启nginx服务,创建service.sls文件。首先调用ngnix模块,就可以把前面写的init.sls文件调用来安装;建立ngnix用户,无法登陆,设定家目录位置;然后把配置文件和service推到minion端;执行开启动作,监控是否/usr/local/nginx/conf/nginx.conf是否和master端的文件一致,如果不一致,重启服务。

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_20,第20张

在server1端,修改nginx配置文件

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_saltstack_21,第21张

server1执行salt server3 state.sls nginx.service

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_nginx_22,第22张

执行curl server3,测试,成功出现nginx测试页

saltstack的state详解 saltstack web界面,saltstack的state详解 saltstack web界面_linux_23,第23张



https://www.xamrdz.com/lan/5cp1939506.html

相关文章: