saltstack

saltstack是一个新的基础平台管理工具,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。

文章目录

  • 一:Saltstack介绍
  • 二:saltstack三大功能
    • 2.1优点 :
    • 2.2 缺点:
  • 三: Saltstack几个重要的组件:
    • 3.1 grains
    • 3.2 pillar
    • 3.3 State
  • 四:演示
    • 4.1 修改主机名和hosts文件
    • 4.2 关闭防火墙和核心防护
    • 4.3 所有节点安装epel源
    • 4.4 管理端单独安装salt-master
    • 4.5 管理端安装完成后,修改主配置文件/etc/salt/master
    • 4.6 创建管理端的配置文件中开启的salt与pillar文件根目录:
    • 4.7 在管理端开启salt-master服务
    • 4.8在被控端上操作,安装salt-minion
    • 4.9 修改被控端的salt-minion配置文件
    • 4.10 启动被控端服务
    • 4.11 在控制端测试与被控端的通信状态
    • 4.12 查看被管理主机的挂载情况
    • 4.13 查看动静态数据
    • 4.14 查看在 master 上已经被接受过的客户端
  • 五:配置管理apache
    • 5.1 修改管理端配置文件
    • 5.2 创建要生成的目录
    • 5.3 编写top.sls文件,确定在所有节点执行apache文件
    • 5.4 编写apache要执行文件
    • 5.5 此时在/src/salt/路径下有两个文件
    • 5.6 重启服务
    • 5.7 执行命令,触发文件执行
    • 5.8 到被控端验证结果

一:Saltstack介绍

1、 saltstack是使用python语言开发的;
2、 轻量级的管理工具,批量执行命令;
3、常用模块:pkg(包)、file(文件)、cmd(执行命令或脚本)、user、 service、cron
4、saltstack数据系统
Grains (静态数据)
pillar (动态数据)

二:saltstack三大功能

远程执行

配置管理

云管理
saltstack_第1张图片

2.1优点 :

1.他速度快,基于消息队列+线程,跑完多台设备,都是毫秒级别的
2.非常灵活,源码是python,方便理解和自定义模块(python 语言相对于其他的perl、ruby等还是很好理解的)
命令简单,功能强大

2.2 缺点:

部署minion端较为不便

三: Saltstack几个重要的组件:

3.1 grains

grains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip等静态信息
grains的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的

3.2 pillar

pillar 和 grains 不一样,是在 master 上定义的,并且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)可以存在 pillar 里,还可以定义变量等。可以理解为动态数据

3.3 State

他是saltstack的最核心功能,通过预先指定好的sls文件对被控主机进行管理:包/文件/网络配置/系统服务/系统用户等。

四:演示

master 管理端
web 被管理端

4.1 修改主机名和hosts文件

每个主机名都修改,hosts文件一样
saltstack_第2张图片
在这里插入图片描述

4.2 关闭防火墙和核心防护

在这里插入图片描述

4.3 所有节点安装epel源

yum install -y epel-release  

4.4 管理端单独安装salt-master

yum -y install salt-master

4.5 管理端安装完成后,修改主配置文件/etc/salt/master

vi /etc/salt/master
修改如下:
15行 interface: 192.168.175.132   //监听本地地址
215行 auto_accept: True        //避免运行salt-key来确认证书认证
416行 file_roots:
          base:					#注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。
          - /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的主目录站点,需要创建,站点不要开多,相同的开一个就行

cat /etc/salt/master | grep -v ^$ | grep -v ^#      //查看对主配置文件做的更改

4.6 创建管理端的配置文件中开启的salt与pillar文件根目录:

mkdir /srv/salt
mkdir /srv/pillar

在这里插入图片描述

4.7 在管理端开启salt-master服务

systemctl start salt-master
systemctl enable salt-master

netstat -anpt | egrep '4505|4506'

在这里插入图片描述

4.8在被控端上操作,安装salt-minion

在两台被管理端上分别配置:

yum -y install salt-minion

在这里插入图片描述

4.9 修改被控端的salt-minion配置文件

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

4.10 启动被控端服务

  systemctl start salt-minion

在这里插入图片描述

4.11 在控制端测试与被控端的通信状态

salt '*' test.ping		#*代表所有主机
web01.saltstack.com:
    True
web02.saltstack.com:
    True

saltstack_第3张图片

4.12 查看被管理主机的挂载情况

 salt '*' cmd.run 'df -h'   //远程执行命令

saltstack_第4张图片

针对固定的某一台主机就换成具体的主机名
saltstack_第5张图片

4.13 查看动静态数据

查看被控主机上grains所有值:(每次minion在启动时获取到的客户端信息)
salt ‘web01.saltstack.com’ grains.items (静态数据)
salt ‘web01.saltstack.com’ pillar.items (动态数据)
saltstack_第6张图片

4.14 查看在 master 上已经被接受过的客户端

salt-key  
Accepted Keys			允许
Denied Keys				被限制
Unaccepted Kyes		没有通过
Rejected Keys				拒绝

saltstack_第7张图片
此时管理状态便已经配置完成

五:配置管理apache

下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:

5.1 修改管理端配置文件

vi /etc/salt/master     // 打开如下内容的注释
file_roots:
  base:

- /srv/salt/
  注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。

5.2 创建要生成的目录

mkdir /srv/salt

在这里插入图片描述

5.3 编写top.sls文件,确定在所有节点执行apache文件

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

vi /srv/salt/top.sls
base:
  '*':		#指定所有主机
    - apache	#指定执行操作文件apache
注意:'*',则表示在所有的被控客户端执行 apache 模块。

5.4 编写apache要执行文件

在这里插入图片描述
saltstack_第8张图片

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

5.5 此时在/src/salt/路径下有两个文件

在这里插入图片描述

5.6 重启服务

  systemctl restart salt-master

在这里插入图片描述

5.7 执行命令,触发文件执行

salt '*' state.highstate	

saltstack_第9张图片

5.8 到被控端验证结果

saltstack_第10张图片
在这里插入图片描述

你可能感兴趣的:(自动化运维)