欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自动化运维--SaltStack

程序员文章站 2022-06-29 08:46:18
...

一、SaltStack基础

1.SaltStack原理

1)SaltStack由master(服务端)和minion(客户端)组成,master和minion通过ZeroMQ(消息队列)通信
2)master端监听4505和4506端口,4505为master和minion认证通信端口,4506为master发送命令或接收minion的命令返回信息
3)当客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端进行控制,客户端检查到连接断开后,会定期向master请求注册连接

2.SaltStack常用模块

1)pkg模块:应用于软件包管理,包括增删改查
2)file模块:管理文件操作,包括文件同步、设置文件权限和所属用户组、删除文件等操作
3)cmd模块:在minion上执行命令或脚本
4)user模块:管理用户账户操作
5)service模块:管理系统服务
6)cron模块:管理计划任务

二、SaltStack的部署

1.因为SaltStack要使用证书认证,所以所有计算机名称要改为FQDN名称
2.在master和minion上安装epel源
yum -y install epel-release

3.更改epel源

vim /etc/yum.repos.d/epel.repo

自动化运维--SaltStack

4.在master端安装master
yum -y install salt-master
5.在minion上安装minion
yum -y install salt-minion
6.修改master的主配置文件
vim /etc/salt/master
	interface: 192.168.1.2		#监听地址,为安全起见建议写内网ip,第15行
	auto_accept: True				#master自动认证minion的认证,第215行
	file_roots:  #SaltStack的文件根目录,默认没有该目录,需手动创建,第416行
  		base:
    		- /srv/salt
	pillar_roots:			#pillar的主目录,默认没有还目录,需手动创建,第529行
  		base:
    		- /srv/pillar
	pillar_opts: True		#开启pillar(私密性数据加密传输)功能,第552行
	nodegroups:		#minion组,第710行
  		group1: 'www.http1.com,www.http2.com'
  		group2: 'www.squid.com'

7.创建配置文件中没有的目录

mkdir /srv/salt
mkdir /srv/pillar
8.启动master
service salt-master start

查看是否启动
自动化运维--SaltStack

9.修改minion的配置文件
vim /etc/salt/minion
	master: 192.168.1.2	#master的ip
	id: www.http2.com		#被管理端,即本机的主机名
10.启动minion
service salt-minion start
11.测试主与从的通信状态

自动化运维--SaltStack

11.salt的使用
语法:salt [ options] '<target>' <function> [arguments]

1)查看系统中的所有模块

salt '*' sys.list_ modules	

2)查看指定模块用法

salt '*' sys.doc 模块名

3)查看某个模块下所有选项

salt '*' sys.list_functions 模块名

4)查看某个选项的用法

salt '*' sys.state_doc 选项

三、SaltStack批量部署服务(以nginx为例)

原理
  主要使用grains、pillar、state组件完成,grains和pillar采集被控端的数据生成变量,前者采集静态的数据,如磁盘个数、CPU个数等,后者采集动态数据,如CPU使用率等。state通过grains和pillar收集的信息,创建安装并自定配置nginx

1.创建grains目录,将目录下定制文件同步到被控端主机上,然后获取被控端主机打开文件句柄数
mkdir /srv/salt/_grains
vim /srv/salt/_grains/nginx_config.py

自动化运维--SaltStack
3)同步grains模块

salt '*' saltutil.sync_all

4)获取打开文件句柄数

salt '*' grains.item max_open_file

自动化运维--SaltStack

2.配置pillar,在主控端创建文件入口,入口的作用是定义pillar的数据覆盖被控主机的有效范围

1)创建入口文件

vim /srv/pillar/top.sls
	base:
  		group1:		#组名
    		- match: nodegroup
    		- http1server  #自定义名字
  		group2:		#组名
    		- match: nodegroup
    		- http2server  #自定义名字

2)创建“自定义名字.sls”定义nginx的安装目录

vim /srv/pillar/http1server.sls
	nginx:
		root: /usr/local
vim /srv/pillar/http2server.sls
	nginx:
		root: /usr/local

4)查看pillar的配置情况
自动化运维--SaltStack

3.配置state,通过预定义好的sls文件,对被控主机进行管理,如程序包、文件、网络配置、系统服务、系统用户等

1)首先定义state的入口文件top.sls

vim /srv/salt/top.sls
	base:
	 	 '*':
  	 	  - nginx

2)定义被控主机的状态,安装nginx,配置文件并启动

vim /srv/salt/nginx.sls

自动化运维--SaltStack

4.使用jinja定义nginx的配置文件

1)因为上面定义了nginx配置文件的源路径,所以先创建nginx目录

mkdir /srv/nginx

2)编写nginx的配置文件

vim /srv/salt/nginx/nginx.con

自动化运维--SaltStack
自动化运维--SaltStack
3)执行命令,让客户端自动安装nginx并配置启动

salt '*' state.highstate

自动化运维--SaltStack
完成