salt的grains工具和pillar工具使用详解

什么是grains工具?

Salt附带一接口,用于获取有关底层系统的信息。Salt的grains主要存储静态数据,用来收集minion端的一些数据,比如:操作系统,域名IP地址,内核,操作系统类型,内存或者其他系统属性。
Minion端在启动时会读取grains数据,如果有新的grains数据需要重启minion服务或者在master端使用salt命令进行刷新

一.grains工具的使用

方法1:
之前用saltstack自动化部署apache服务(server2)和nginx服务(server3)。
内容详见博客地址:
https://blog.csdn.net/chaos_oper/article/details/91446525
1.server2的roles为apache

[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
120 grains:
121   roles:
122    - apache
[root@server2 salt]# systemctl restart salt-minion

2.server3的roles为nginx

[root@server3 salt]# vim minion
120 grains:
121   roles:
122     - nginx
[root@server3 salt]# systemctl restart salt-minion

3.在master端查看minion的角色

[root@server1 salt]# salt '*' grains.item roles

在这里插入图片描述
方法2:

1.在master端/srv/salt目录下创建_grains目录

[root@server1 salt]# mkdir _grains

2.在_grains目录下创建python模块脚本

[root@server1 salt]# cd _grains/
[root@server1 _grains]# vim my_grains.py
#!/usr/bin/env python
def my_grains():
    grains= { 'foo':'bar','hello':'world'}
    grains['salt'] = 'stack'
    return grains

3.刷新

[root@server1 _grains]# salt '*' saltutil.sync_grains

在这里插入图片描述
4.在minion端查看推送

[root@server2 salt]# cd /var/cache/salt/minion/files/base/
[root@server2 base]# ls
apache  _grains  top.sls
[root@server2 base]# cd _grains/
[root@server2 _grains]# ls
my_grains.py
[root@server2 _grains]# cat my_grains.py 
#!/usr/bin/env python
def my_grains():
    grains= { 'foo':'bar','hello':'world'}
    grains['salt'] = 'stack'
    return grains

5.测试

[root@server1 _grains]# salt '*' grains.item hello

在这里插入图片描述

[root@server1 _grains]# salt '*' grains.item salt

在这里插入图片描述

[root@server1 _grains]# salt -G 'roles:apache' test.ping
[root@server1 _grains]# salt -G 'roles:nginx' test.ping
[root@server1 _grains]# salt -G 'salt:stack' test.ping

在这里插入图片描述
6.修改top.sls

[root@server1 salt]# vim top.sls
base:
  'roles:apache':
    - match: grain
    - apache.service
  'roles:nginx':
    - match: grain
    - nginx.service

7.高级方式推送
[root@server1 salt]# salt ‘*’ state.highstate
8.测试
[root@server1 salt]# salt server2 grains.item fqdn
[root@server1 salt]# salt server2 grains.item os
在这里插入图片描述

二.在Pillar中存储静态数据

  • Pillar是Salt用来分发全局变量到所有minions的一个接口。Pillar data的管理类似于Salt State Tree。
  • 存储敏感数据。不像是state tree, pillar只对匹配类型的minion有效。 这使它为特定的minion存储敏感数据非常有用.

1.声明master pillar

Salt Master服务器维护了一个pillar_roots 设置 ,和在Salt文件服务器上使用的file_roots结构对应。和Salt 文件服务器类似,master配置文件中的 pillar_roots选项也是基于环境映射到目录。Pillar数据被映射到基于top文件匹配到的Minion上,top 文件是和state top文件一样的方式列出的。Salt pillar可以使用和标准的top 文件同样的匹配器类型。

在master端主配置文件将pillar工具打开:

vim /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar

修改完配置文件后重启:systemctl restart salt-master
2. 在 /srv/创建目录:mkdir pillar
3. 进入到创建的目录,创建web目录,在web目录中创建文件:vim vars.sls

{% if grains['fqdn'] == 'server2' %}
webserver: httpd
state: master
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
state: backup
{% endif %}

4.在piller目录下,创建top.sls文件

base:
  '*':
    - web.vars

5.刷新:salt ‘*’ saltutil.refresh_pillar

6.测试:
在这里插入图片描述在这里插入图片描述

发布了108 篇原创文章 · 获赞 127 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chaos_oper/article/details/91468358