saltstack之grains(静态数据)+pillar(动态参数) jinja模板

1.基本概念

(1)什么是Pillar?

Pillar是在salt 0.9.8版本后才添加的功能组件。它跟grains的结构一样,也是一个字典格式,数据通过key/value的格式进行存储。
在Salt的设计中,Pillar使用独立的加密sessiion,所以Pillar可以用来传递敏感的数据,例如ssh-key,加密证书等。
存储位置:存储在master端存放需要提供给minion的信息
应用场景:敏感信息,每个minion只能访问master分配给自己的信息

(2)pillar和grains的区别

本质上都是key / value 型的数据库。
Grains 是存储在minon上的数据,minion启动后就进行Grain计算,是一种静态数据。
Pillar 数据存储在master, 是动态数据,每个minion只能看到自已的pillar。
一个minion可以告诉master它的数据,而minion则需要从master索要pillar数据。
grains存储的是静态、不常变化的内容,pillar则相反
grains是存储在minion本地,而pillar存储在master本地
minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改

grains 这个跟puppet的facter一样,负责采集客户端一些基本信息
可以在客户端自定义 然后自动汇报上来 也可以从服务器端定义然后推下去 采集完后 再汇报上来
pillar 这个东西如果跟grains 比较的话 他的灵活性强点 向怎么定义就怎么定义 然后取值即可

2.grains演示过程如下

(1)在server1上可以直接利用grains采集静态数据
[root@server1 files]# salt server2 grains.item os
[root@server1 files]# salt server2 grains.item fqdn #取完整的主机名 包括域名等
[root@server1 files]# salt server2 grains.item nodename #只取主机名
[root@server1 files]# salt server2 grains.ls #列出所有保留字
在这里插入图片描述
(2)saltstack中的grains相当于ansible中的setup,可以查看远程主机的基本信息
在这里插入图片描述
(3)在minion端设置开启grains,并且重启服务
vim /etc/salt/minion
在这里插入图片描述
在这里插入图片描述
(4)在server1上通过grains查看角色
在这里插入图片描述
(5)在server3上编写文件,然后重启服务
vim grains
在这里插入图片描述
(6)在server1上查看
在这里插入图片描述
在这里插入图片描述
(7)在server1上设置grains
SaltStack可以分为Master和Minion,自定义modules模块可以让你更加便捷的在两者之间进行信息收集和获取
首先需要在master机器的file_roots 下建一个_modules文件夹,里面放.py 文件,也就是自定义模块
建立目录,编写文件
在这里插入图片描述
vim my_grains.py
在这里插入图片描述
py文件里面要加return 返回值
(8)在server1上测试,对_modules里面的文件同步到minion
在这里插入图片描述
在server2缓存目录利用tree工具查看
在这里插入图片描述
同步grains给server2
在这里插入图片描述
在这里插入图片描述
在server2上发现了扩展模块
在这里插入图片描述
salt '’ grains.ls #列出grains的所有key
salt ‘
’ grains.items # 查看所有grains信息,查看所有item
salt ‘*’ grains.item fqdn #查看单个item

grains的一些用法
[root@server1 salt]# salt server2 grains.item ipv4 ##查看server2的ipv4的信息
server2:

ipv4:
- 127.0.0.1
- 172.25.15.2
[root@server1 salt]# salt server2 grains.item uuid ##查看server2的uuid
server2:

uuid:
026611d5-381c-42ab-bb83-e307d4e89b1a
[root@server1 salt]# salt server2 grains.item os ##查看server2的os
server2:

os:
RedHat
[root@server1 salt]# salt -G ‘os:RedHat’ test.ping ##对系统为RedHat的主机进行test.ping方法
server2:
True
server3:
True
server1:
True
[root@server1 ~]# salt -G ‘host:server2’ cmd.run hostname
#对host为server2的用户执行shell命令hostname
server2:
server2

grains在top FILE中的使用案例(通过匹配不同主机执行不同脚本:
在server4上写grains文件,然后重启服务minion
在这里插入图片描述
在server1上查看grains
在这里插入图片描述
写top.sls然后推
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上则是通过匹配不同主机执行不同脚本

3.pillar,动态数据
(1)在master节点上面设置
在这里插入图片描述
在这里插入图片描述
systemctl restart salt-master.service
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
base:
’:
- web.vars
全局推一个web/vars.sls的脚本
在这里插入图片描述
刷新所有节点,获取pillar信息
salt '
’ saltutil.refresh_pillar
salt ‘’ pillar.items
在这里插入图片描述
[root@server1 pillar]# salt ‘server2’ pillar.items
[root@server1 pillar]# salt ‘server3’ pillar.items
[root@server1 pillar]# salt ‘server4’ pillar.items
在这里插入图片描述
[root@server1 pillar]# salt '
’ pillar.items
[root@server1 pillar]# salt -I ‘webserver:httpd’ test.ping
[root@server1 pillar]# salt -I ‘webserver:nginx’ test.ping
[root@server1 pillar]# salt -I ‘webserver:haproxy’ test.ping
在这里插入图片描述
在这里插入图片描述

grains与pillar比较
在这里插入图片描述

三、jinja模板
Jinja是基于python的模板引擎,在saltstack中我们使用yaml_jinja渲染器来根据模板生产对应的配置文件,对于不同的操作系统或者不同的情况通过jinja可以让配置文件或者操作形成一种模板的编写方式。
通过master端使用jinja模板直接修改minion的http配置文件:
server1(master端)
jinja模块的使用
{% %}:定义
{{ }}:取值
脚本定义固定端口

编辑http安装文件(使用jinja模板)
[root@server1 apache]# vim install.sls
在这里插入图片描述
修改http配置文件
在这里插入图片描述
执行文件
[root@server1 httpd]# salt server2 state.sls apache.install
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
利用grains推送
grains
在这里插入图片描述
在这里插入图片描述
salt server2 state.sls apache.install
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值