Linux的企业-自动化运维工具Saltstack(grainspillar)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的企业-自动化运维工具Saltstack(grainspillar)相关的知识,希望对你有一定的参考价值。

配置内容接上篇

redhat6.5

server1 172.25.29.1 salt-master  

server2 172.25.29.2 salt-minion  haproy+keeplived

server3 172.25.29.3 salt-minion  nginx

server4 172.25.29.4 salt-minion  nginx

server5 172.25.29.5 salt-minion  haproy+keeplived

做之前配置好本地解析

一.Grains

grains是minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中。其实grains在每次的minion启动(重启)的时候都会采集,即向master汇报一次的。


二.minion端配置grains


修改server3和server4的salt-minion,设定nginx角色

技术分享



在server3和server4的/etc/salt下创建grains,内容如下

技术分享

技术分享

技术分享


3.测试grains的数据

技术分享


技术分享


4.修改top.sls文件并推送

技术分享

技术分享

推送成功

技术分享


三.mster端配置grains,不用重启服务

1.在master端创建_grains文件

技术分享

技术分享


2.修改server3和server4的grains或者是删除grains文件,做到不影响下面master这边的grains


技术分享

技术分享

技术分享


2.向server3和server4同步grains


技术分享


查看server3和server4的salt缓存

技术分享

技术分享


3.修改top.sls推送文件

技术分享

推送成功

技术分享


四.pillar用法

grain和pillar区别

(1)grains存储的是静态、不常变化的内容,pillar则相反

(2)grains是存储在minion本地,而pillar存储在master本地

(3)minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改


1.配置pillar

修改server1上的master配置文件,开通pillar base目录,可以与grains共存


技术分享

技术分享


采集主机名

技术分享


2.设置不同的主机名推送安装不同的服务

技术分享

技术分享


技术分享


3.在pillar下创建一个新的top.sls推送文件

技术分享

刷新

技术分享


4.检测和查看的相关命令

查看采集的推送项目,按照不同的主机名通过pillar下的web.sls做不同的事情

技术分享

技术分享

技术分享

技术分享


通过salt采集server3开启的服务

技术分享


远程重启server3的nginx服务

技术分享


将master server1上的文件群传给minion端

技术分享


群查看minion的/tmp下的文件,已经传过来了

技术分享


远程查看passwd文件

技术分享


远程给server4安装htppd文档

技术分享


远程给server4安装losf工具

技术分享



五.jinja模版的使用

        Jinja是基于python的模板引擎,在saltstack中我们使用yaml_jinja渲染器来根据模板生产对应的配置文件,对于不同的操作系统或者不同的情况通过jinja可以让配置文件或者操作形成一种模板的编写方式。


模版文件里面变量使用{{名称}},例如{{PORT}}

变量使用Grains:{{ grains[‘fqdn_ip4‘] }}

变量使用执行模块:{{ salt[‘network.hw_addr‘](‘eth0‘) }}

变量使用Pillar:{{ pillar[‘apache‘][‘PORT‘] }}


1.jinja模版配置

以httpd下的web.sls为例,添加模版,端口,地址

技术分享

技术分享


2.修改files下的httpd.conf配置文件为变量格式

技术分享

技术分享


3.用jinja模版推送httpd服务

技术分享

技术分享

server3 httpd服务8080端口正常

技术分享



六.jinja模版的另外三种实现方法

1.方法一

技术分享

在httpd.conf配置文件的最上面添加变量模块

技术分享

下面的监听端口上按python的方式取值

技术分享

在files下面新建 vim lib.sls

技术分享


将之前的web.sls里的template下面注释掉

技术分享

用jinja模版给server3推送httpd服务

技术分享

技术分享



2.方法二

将httpd.conf里刚才上面写的删除,因为会与下面的这个方法冲突

技术分享


监听端口修改为下图所示

技术分享

将web.sls文件修改为以下设置

技术分享


vim lib.sls

技术分享

技术分享



方法三:使用pillar

进入到pillar的base目录下

技术分享


(1)配置文件第一种写法

技术分享

vim httpd.conf

技术分享


(2)配置文件第二种写法

技术分享

vim httpd.conf

技术分享


推送

技术分享

salt server4 state.sls httpd.web


技术分享



七.salt自动化推送keepalived+nginx

1.配置keepalived salt文件

技术分享

vim keepalived.conf,添加vip

技术分享


vim install.sls

技术分享

技术分享

vim service.sls

技术分享

单击keepalived推送成功


2.由于keepalived高可用,主备的配置文件不一样,需要添加jinja模版

技术分享


在install.sls里添加jinja模版

技术分享


keepalived.conf里的state和priority写成变量

技术分享


3.新添加一台虚拟机server5做keepalived的高可用

技术分享

将server5加入到salt-key

技术分享

技术分享


4.修改top.sls文件并推送

技术分享

技术分享


5.查看推送结果

haproy+keeplived正常启动,vip在主上

技术分享


将主server2上的keepalived关闭,服务到备server5上

技术分享


负载均衡haproxy正常

技术分享

技术分享



以上是关于Linux的企业-自动化运维工具Saltstack(grainspillar)的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维工具saltstack

自动化运维工具SaltStack企业级系列课程(第二章 SaltStack组件_管理对象)

用开源自动化运维工具 SaltStack 在云平台中实现各主机统一配置管理

如何用开源自动化运维工具 SaltStack 在云平台中实现各主机统一配置管理

dW 编辑推荐:自动化运维工具 SaltStack 在云计算环境中的实践

技术沙龙腾讯蓝鲸&中国SaltStack用户组