设为首页 收藏本站
查看: 1011|回复: 0

[经验分享] saltstack grains与pillar使用和订制

[复制链接]

尚未签到

发表于 2018-7-31 09:02:54 | 显示全部楼层 |阅读模式
  一、grains与pillar简介
  grains是minion启动时加载,在minion运行过程中不会发生变化,所以是静态数据。grains数据的定制可以在各minion端,也可以放在master端;grains中包含许多的信息,如:运行的内核版本,操作系统,网络接口地址,MAC地址,cpu,内存等等信息。
  Pillar是Salt用来分发全局变量到所有或指定minion的一个定制接口,所以相对grains来说可以称为动态的数据,保存在master端。
  由于涉及的配置文件采用yaml格式,如果对yaml语法不在熟悉请访问这里
  http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt
  最好也了解下jinjia2的格式,如不熟悉请访问这里
  http://docs.jinkan.org/docs/jinja2/intro.html
  saltstack的安装部署请看这里
  http://dyc2005.blog.51cto.com/270872/1967147
  二、grains日常使用入门
  1、获取minion的grains所有数据
salt "minion_152" grains.items类似如图:
DSC0000.png

  2、获取单项grains值
#salt "minion_152" grains.item os  如图:
DSC0001.png

  3、获取grains中的所有项(键)
#salt "minion_152" grains.ls     #以minion_152上的为例
DSC0002.png

  这样就可通过grains.item  项去获取具体对应的值啦
  4、在minion上订制grains数据
  订制grains数据有两种方法分别如下:
  方法一:
  修改/etc/salt/minion配置文件去掉12行左右的注释
  default_include: minion.d/*.conf
  在/etc/salt/minion.d目录下
  创建一个test.conf 内容如下:
grains:  
   Data:
  
      - test
  
   Project:
  
      - wgdbl_game
  重启minion
#salt "minion_152" grains.items  如图:
DSC0003.png

  方法二:
  在master操作
mkdir -pv /srv/salt/_grains  
cd  /srv/salt/_grains
  
cat hello.py
#!/usr/bin/python  
def GrainsHello():
  
    grains = {}
  
    grains["project"] = "myTestProject"
  
    grains["name"] = "san game"
  
    return grains
  在服务端写好脚本再同步刷新到指定minion
#salt "minion_152" saltutil.sync_grains  如图:
DSC0004.png

  推送更新成功。
  此时到minion_152所在的机器
  /var/cache/salt/minion/files/base/_grains/会发现 在master端创建的hello.py grains脚本已经推送至此,如图:
DSC0005.png

  并且在该minion下的
  /var/cache/salt/minion/extmods/grains 下有执行的标记生成了hello.pyc
DSC0006.png

  第一种方法是grains中的纯静态指定minion下生成并且要重启minion生效,第二种方法可以统一放在胳端管理,再推送到各指定minions 动态生成管理。
  三、pillar的使用
  1、获取指定minion上pillar的数据
  首先与grains不同的是要获取pillar需要在master的配置文件中打开
  取消552行的注释如下:
  pillar_opts: True
  并重启salt-master
#salt  "minion_152" pillar.data  
如图:
DSC0007.png

  注意:最好不要在线上使用 salt "*" pillar.data   这想会卡的哦。
  2、pillar数据定制
  配置master的pillar的根目录
  取消529 -532 的注释
529 pillar_roots:  
530   base:
  
531     - /srv/pillar
  创建根目录
  mkdir -pv /srv/pillar
  重启salt-master
  切换到/srv/pillar目录
  创建pillar顶层入口文件(相当于目录)top.sls,注意必须要以sls后缀。
cat top.sls  
base:   "*":
  
   - data   "minion_152":
  
   - minion152
  创建 data.sls
  cat data.sls
project_name: san  
subject:
  
   - zgws
  
   - wgdbl
  创建 minion152.sls
  cat minion152.sls
Minion_152: info  
HostName:
  
   - zgws_game01
  
IP:
  
   - 172.16.3.152
  
game:
  
   - zgws
  向minion同步pillar数据
#salt "minion_152" saltutil.refresh_pillar  如图:
DSC0008.png 查看minion_152 pillar数据

#salt "minion_152" pillar.data  

  
#salt "minion_152" pillar.items
  如图:
DSC0009.png


  由于只对minion_152进行推送更新pIllar 因此其他的minion不会收到更新。
  3、pillar配置文件中增加jinjia2格式的判断
  cat top.sls
base:  
   "*":
  
      - data
  
   "minion_152":
  
      - minion152
  
      - osinfo
  创建osinfo.sls
  cat osinfo.sls
OS_INFO:  
    - {{ grains.os}}
  
    {% if grains["os"] == "CentOS"%}
  
    - Linux System
  
    {% endif %}
  刷新pillar数据
#salt "minion_152" saltutil.refresh_pillar  查看minion_152 pillar数据
  如图:

  通过grains和pillar可以很方便的定制出特定的数据,pillar 配置是完全保存在master端的,而grains既可以保存在master端也可以单独至minion端,每次修改需要重启minion端。pillar偏向敏感数据的统一存放在master端且灵活修改。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543899-1-1.html 上篇帖子: Saltstack批量部署tomcat(多实例) 下篇帖子: saltstack设置minion分组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表