文章目录

  • grains简介
  • grains模块的应用
  • pillar模块的应用

grains与pillar最主要的区别:静态取值方式 grains ,保留在minion端; pillar保留在master端

grains简介

  • grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU、内核、操作系统、虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可以利用这新信息对不同业务进行个性化配置。
  • Grains是SaltStack当中的一个数据系统,当Minion启动时Grains会把Minion的数据收集起来,比如操作系统版本、CPU 位数等。由于采用的是静态收集,只有当Minion发生重启时数据才会发生变化,在Grains的实际运用中常用于对多台Minion做操作时进行一些条件匹配,比如有上百台Minion服务器,只需要对操作系统为CentOS的做一些操作等。

grains模块的应用

  • 罗列出所有Minion的所有信息,命令执行后可以看到出现了很多信息,我们可以用这些信息来作为一些过滤条件。
[root@server1 files]# salt server2 grains.items   #取全部的保留字,包括值

[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   #列出所有保留字
  • 通过grains来做信息过滤,使用-G选项:
[root@server1 ~]# salt -G 'cpuarch:x86_64' cmd.run 'uptime'   #在所有64位CPU服务器上执行uptime

执行结果:

  • 当grains.items里的模块不满足当前情况,还可以自定义Grains,比如在server2(minion)添加一个apache模块
  • 第一种,修改配置文件
    server2:
vim /etc/salt/minion129 grains:
130   roles:
131     - apache[root@server2 salt]# systemctl restart salt-minion
  • server1采集:
[root@server1 files]# salt server2 grains.item roles
[root@server2 salt]# ps ax  看到salt-minion的进程
  • 第二种: 建立一个新的文件grains
    server3:
[root@server3 logs]# vim /etc/salt/grains
roles:- nginx     #或者写成键值对的形式   roles: nginx
  • 重启服务后查看采集的结果:
[root@server3 logs]# systemctl restart salt-minion
[root@server1 files]# salt server3 grains.item roles
  • 不重启服务第一次推看不到结果,可以在server1执行指令刷新。
[root@server1 files]# salt server3 saltutil.sync_grains   #同步到指定的minion
[root@server1 files]# salt server3 grains.item roles
  • 第三种:在server1新建目录/srv/salt/_grains
[root@server1 ~]# mkdir /srv/salt/_grains
[root@server1 ~]# cd /srv/salt/_grains/[root@server1 _grains]# vim my_grains.py
def my_grains():grains = {}grains['hello'] = 'world'     #定义键值对grains['salt'] = 'stack'return grains
  • 刷新并测试。
[root@server1 _grains]# salt server2 saltutil.refresh_modules  #同步 让模块生效
在server2查看:
[root@server2 salt]# cd /var/cache/
[root@server2 cache]# ls
httpd  ldconfig  man  salt  yum
[root@server2 cache]# cd salt/
[root@server2 salt]# tree .             #tree 查看,并没有生效
[root@server1 _grains]# salt server2 grains.item hello   没有同步
[root@server1 _grains]# salt server2 saltutil.sync_grains
[root@server1 _grains]# salt server2 grains.item hello  成功同步
server2查看:tree .
  • 测试。
[root@server1 _grains]# salt -G 'roles:apache' test.ping
[root@server1 _grains]# salt -G 'roles:nginx' test.ping
不成功可以刷新一下:
[root@server1 _grains]# salt server3 saltutil.refresh_modules
[root@server1 _grains]# salt server3 grains.item roles
[root@server1 _grains]# salt -G 'hello:world' test ping
[root@server1 _grains]# salt server2 grains.item hello
[root@server1 _grains]# salt server2 grains.item salt
  • 或者修改top.sls文件
[root@server1 salt]# vim top.sls
base:'roles:apache':- match: grain- apache.install'roles:nginx':- match: grain- nginx.service
[root@server1 salt]# salt '*' state.highstate
[root@server1 salt]# salt -G "roles:nginx" test.ping[root@server1 salt]# salt -G "hello:world" test.ping
server2:Minion did not return. [No response]
server3:Minion did not return. [No response]
ERROR: Minions returned with non-zero exit code[root@server1 salt]# salt -G "os:RedHat" test.ping   系统内的很快
[root@server1 salt]# salt -G "hello:world" test.ping
[root@server2 salt]# systemctl restart salt-minion
[root@server3 logs]# systemctl restart salt-minion
如果显示没有响应 在2和3重启服务可以解决。

pillar模块的应用

pillar,只在master端

[root@server1 ~]# vim /etc/salt/master828 pillar_roots:     #编辑配置文件,打开有关pillar设置行829   base:830     - /srv/pillar[root@server1 ~]# mkdir /srv/pillar    #新建配置文件中的目录
[root@server1 pillar]# mkdir web
[root@server1 pillar]# cd web/
[root@server1 web]# ls[root@server1 web]# vim vars.sls    #编辑变量的.sls文件{% if grains['fqdn'] == 'server2' %}
webserver: httpd
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
{% endif %}
  • 编辑top.sls文件。
[root@server1 web]# cd ..
[root@server1 pillar]# ls
web
[root@server1 pillar]# vim top.slsbase:'*':- web.vars
  • 刷新,并测试。
[root@server1 pillar]# salt '*' saltutil.refresh_pillar #刷新
[root@server1 pillar]# salt '*' pillar.items
[root@server1 pillar]# salt server2 pillar.item webserver
[root@server1 pillar]# salt server3 pillar.item webserver

Saltstack中Grains静态数据系统和Pillar动态数据系统相关推荐

  1. saltstack中grains简介

    1.什么是grains:(静态数据,minion启动时采集) Grains Static bits of information that a minioncollects about the sys ...

  2. 下一代大数据系统和4S标准

    大数据行业发展到今天,它创造的价值和带来的社会效应,大家已经看得很明白,同时很多问题和不足也暴露出来,特别是hadoop能够提供的数据处理能力,现在已经挖掘到极限,但是现在各行业对数据的存储和计算需求 ...

  3. django 静态数据_如何在Django中使用静态数据?

    django 静态数据 Static Data means those data items that we cannot want to change, we want to use them as ...

  4. Linux之Saltstack中grains、pillar取值和jinja模板的应用

    一.grains和pillar介绍 1. Grains简介 Grains是SaltStack的一个组件,存放在SaltStack的minion端.当salt-minion启动时会把收集到的数据静态存放 ...

  5. saltstack中grains与pillar详解

    一.grains 简介 Grains是SaltStack的一个组件,存放在SaltStack的minion端. 当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当mini ...

  6. saltstack中grains详解

    一.grains简介 (1) Grains是SaltStack的一个组件,存放在SaltStack的minion端. (2) 当salt-minion启动时会把收集到的数据静态存放在Grains当中, ...

  7. ssms18还原数据_SSMS 18中的静态数据屏蔽

    ssms18还原数据 In this article we are going to talk about Static Data Masking, a new feature for the SQL ...

  8. C#.Net工作笔记010---c#中的静态扩展方法_可动态给string等_添加共通方法好用

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 之前,给list添加排序的扩展方法的时候用过.下面的作用是去掉list中重复的数据. /// &l ...

  9. 什么是C中的“静态”功能?

    问题是关于普通的c函数,而不是注释中阐明的c ++ static方法. 我了解什么是static变量,但是什么是static函数? 而且为什么要声明一个函数,比如说void print_matrix ...

最新文章

  1. VMware View 5.0 Ready! 资源汇总(持续更新)
  2. sybase isql 重启_学习这篇文章,搭建Sybase数据库不再是难题!
  3. Coding: 一亿个数找最大的1000个数
  4. Maxim and Biology
  5. 转载:CSS垂直居中总结
  6. jvm分配内存_为JVM分配内存:一个案例研究
  7. eclipse 中文乱码
  8. HDFS查看文件的前几行-后几行-行数
  9. Go error 处理实践
  10. android 画布线条加粗,Android 对TextView添加删除线,下划线,加粗,斜体等效果
  11. LayaAir Sprite 旋转缩放
  12. 联控智能无刷电机板子运行STM32 FOC 5.x电机库的程序,电机转一会儿会自动停下来的解决办法
  13. qt信号阻塞blockSignals的运用
  14. android圆形头像边框,利用Android中BitmapShader制作自带边框的圆形头像
  15. IDM与其他下载器加速器优缺点介绍
  16. 如何不开会员,把易企秀图片下载保存本地
  17. 人工智能细分领域受关注|人工智能|领域|智能
  18. Luogu 3386(二分图最大匹配)
  19. 如何设置谷歌浏览器背景图片
  20. 爬取百度贴吧的完整实例

热门文章

  1. 公众号运营出路在哪?粉丝圈社区破局全攻略
  2. NGUI之学习制作简单例子(一)
  3. 小程序 日期时间段(起止)选择器组件
  4. 免费好用无广告的开源 gif制作软件 screentogif
  5. json.loads时TypeError: __init__() got an unexpected keyword argument ‘encoding‘ 的解决方案
  6. 解决:IDE编译报错:Dangling metacharacter
  7. Java dangling metacharacter *
  8. 向量的内、外积及其几何含义
  9. 什么是“负载均衡(SLB)”
  10. 解决谷歌浏览器被桔梗导航劫持问题