saltstack

一,简介

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

二,程序安装
安装SALTSTACK时首先需要下载官方的yum源
在这里插入图片描述
安装saltstack的master端
在这里插入图片描述
在在其他两台虚拟机安装时发现使用官方yum源下载速度有限制,所以采用阿里云的有关yum源并拷贝给其他虚拟机进行使用
在这里插入图片描述
在这里插入图片描述
开始安装saltstack的minion端并分别进行配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进行连接验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三,远程管理
(一)配置管理

Salt 状态系统的核心是SLS,或者叫SaLt State 文件.
SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理.
sls文件命名:
1.sls文件以”.sls”后缀结尾,但在调用是不用写此后缀.
2.使用子目录来做组织是个很好的选择.
3.init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以"apache/init.sls" 就是表示"apache".
4.如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.
(二)Salt命令由三个主要部分构成:
下面展示一些 内联代码片

salt '<target>' <function> [arguments]
1.target: 指定哪些minion, 默认的规则是使用glob匹配minion id. 
(1)salt '*' test.ping
(2)Targets也可以使用正则表达式:
salt -E 'server[1-3]' test.ping
(3)Targets也可以指定列表:
salt -L 'server2,server3' test.ping
2.funcation是module提供的功能,Salt内置了大量有效的functions. 
salt '*' cmd.run 'uname -a'
3.arguments通过空格来界定参数:
salt 'server2' sys.doc pkg			#查看模块文档,本地帮助
salt 'server2' pkg.install httpd
salt 'server2' pkg.remove httpd

注:了解YAML语法
默认的SLS文件的renderer是YAML renderer.YAML是一个有很多强大特性的标记性语言.Salt使用了一个YAML的小型子集,映射非常常用的数据结构,像列表和字典.YAML renderer的工作是将YAML数据格式的结构编译成为Python数据结构给Salt使用.
规则一: 缩进
YAML使用一个固定的缩进风格表示数据层结构关系.而Salt需要每个缩进级别由两个空格组成,不要使用tabs.
规则二: 冒号
Python的字典当然理所当然是简单的键值对.其他语言的用户应该知道这个数据类型叫哈希表或者关联数组.字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。
my_key: my_value
规则三: 短横杠
想要表示列表项,使用一个短横杠加一个空格.多个项使用同样的缩进级别作为同一列表的一部分.
(三)编写远程执行模块
由于配置文件中默认的base路径如图
在这里插入图片描述
但是经过查看/srv目录下并不存在salt目录,所以我们需要自己手动创建
之后开始编写远程执行模块例子
在这里插入图片描述
运行模块查看结果
在这里插入图片描述
四.grains
(一)grains简介

Grains是SaltStack的一个组件,用于导出有关底层系统的信息,存放在SaltStack的minion端,收集操作系统,域名,IP地址,内核,操作系统类型,内存和许多其他系统属性的.
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新.
由于grains是静态数据,因此不推荐经常去修改它.
应用场景:
1.信息查询,可用作CMDB
2.在target中使用,匹配minion
3.在state系统中使用,配置管理模块
(二)自定义grains项
1.修改minion配置文件策略以生成grains并重启服务
在这里插入图片描述
在这里插入图片描述
查看结果
在这里插入图片描述

2.在/etc/salt/grains中定义grains
在这里插入图片描述
在这里插入图片描述
在master端同步并查看
在这里插入图片描述
3.编写grains模块;在salt-master端创建_grains目录
在这里插入图片描述
在这里插入图片描述
同步
在这里插入图片描述
查看结果
在这里插入图片描述
(四)grains匹配运用
1.在master端匹配minion端
在这里插入图片描述
2.master端在top文件中匹配minion端
(1)编写top.sls文件
在这里插入图片描述
在这里插入图片描述
(2)分别编写在server2上安装apache和把nginx源码包放到server3:/mnt中的.sls文件
在server2上安装apache:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了方便后面的集体推送。我们把install.sls文件名改为init.sls
在这里插入图片描述

把nginx源码包放到server3:/mnt中:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进行集体推送
在这里插入图片描述
进行结果验证
在这里插入图片描述
在这里插入图片描述
3.分类部署服务
在这里我们在上一步的基础上进行对在server3上对nginx进行部署的.sls文件的完善
要完成对nginx的部署,我们首先要获取配置文件nginx.conf和服务启动脚本nginx.service
首先我们在一闲置机器上解压源码包并获取nginx.conf
在这里插入图片描述
然后进入仓库下载nginx.service
在这里插入图片描述
在这里插入图片描述
之后开始修改.sls文件
在这里插入图片描述

在这里插入图片描述
由于内容较多,所以我们采用安装与配置分离的方式进行部署,上面为部署部分,下面为安装部分
在这里插入图片描述
在这里插入图片描述
对nginx.conf和nginx,service进行更改
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
进行集体推送

在这里插入图片描述
在这里插入图片描述
验证
在这里插入图片描述
五.Jinja模板
1.Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作
2.通过jinja模板可以为不同服务器定义各自的变量
3.两种分隔符: {% … %} 和 {{ … }},前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上
(一)使用Jinja模板创建文件
在这里插入图片描述
在这里插入图片描述

推送并验证
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
(二)使用jinja模板改变文件(这里以apache配置文件httpd.conf为例)
在进行实验之前我们需要从已经安装apache的机器上拷贝一份httpd.conf到server1:/srv/salt/apache/files/
在这里插入图片描述
然后对其进行更改
注意:由于生产环境较复杂,所以这里采用变量的形式进行更改
在这里插入图片描述
更改发布文件使效果更直观,这里我们在发布文件中写入采集系统型号和主机名的变量
在这里插入图片描述
在这里插入图片描述
修改apache/init,sls文件
在这里插入图片描述
在这里插入图片描述
向已经安装过apache的server2推送
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果验证
在这里插入图片描述
注意:此时虽然第一次执行端口没有变化,但配置文件已经修改,手动重启apache后观察到其生效
在这里插入图片描述

在这里插入图片描述
六.pillar
(一)pillar简介

1.pillar和grains一样也是一个数据系统,但是应用场景不同,pillar数据不会缓存到minion端
2.pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息
3.pillar更加适合在配置管理中运用
(二)声明pillar
由于我们需要启用pillar,所以我们要对master端的配置文件进行修改,由于配置文件中没有找到pillar有关模块,所以这里我们在文件末尾手动添加并重启master端
在这里插入图片描述
在这里插入图片描述
由于pillar在配置文件中的根目录是我们手动添加的,所以也应该手动创建
在这里插入图片描述
配置变量声明有关文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进行pillar数据刷新
在这里插入图片描述
查询变量验证结果
在这里插入图片描述
(三)pillar数据匹配
实验1:apache+keepalived形成高可用
在这里盗一张图解释此实验原理
在这里插入图片描述
我们通过pillar变量来给两台虚拟机部署keepalived实现高可用,由于两台虚拟机一台安装了aoache另一台安装了nginx所以测试结果非常显著
在我们进行.sls文件书写之前需要先得到keepalived的配置文件keepalived.conf
这里我们在一台闲置机器上安装keepalived并拿出keepalived.conf文件
在这里插入图片描述
在这里插入图片描述
首先修改pillar变量文件
在这里插入图片描述
在这里插入图片描述
然后书写控制keepalived安装的文件init.sls
在这里插入图片描述
在这里插入图片描述

这里我们引用前面使用的pillar变量
最后对keepalived配置文件进行修改
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
修改发布文件
在这里插入图片描述
在这里插入图片描述
群体发布
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
验证效果
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
实验二:在server2上安装zabbix-server zabbix-agent zabbix-web以监控在server3安装的mysql
1.在server3安装mysql
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2.在server2上安装zabbix-server zabbix-agent zabbix-web

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

在这里插入图片描述
在这里插入图片描述
获取编辑所有需要更改的配置文件
在这里我们所需要的配置文件需要在另外一台空闲机器上安装服务后获取
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
群体推送

在这里插入图片描述
由于zabbix.conf.php需要初始化以后才可以获取,所以这里会有报错
在这里插入图片描述
初始化完成后将配置文件拷贝再群体推送
在这里插入图片描述

七.saltstackapi
安装salt-api
在这里插入图片描述
生成密钥
在这里插入图片描述
生成证书
在这里插入图片描述
在这里插入图片描述
编写api.conf(指定认证文件路径)与auth.conf(进行认证)文件
注意:认证文件路径的书写必须为实际路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加saltapi用户并启动salt-api并重启master端以部署服务
在这里插入图片描述
进行端口及证书认证
在这里插入图片描述
注意:上图中token为认证令牌,下面进行连通测试时需要用到
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值