Saltstack (grains、pillar、jinja模版、haproy+keeplived)

配置内容接上篇

  • 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,内容如下

1. 测试grains的数据

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

推送成功

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

1. 在master端创建_grains文件

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

3. 向server3和server4同步grains

查看server3和server4的salt缓存

4. 修改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’ }}
变量使用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

3. 方法三:使用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正常

发布于:2019-11-05 08:21:50