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正常

未分类

未分类