博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
salt 之 pillar
阅读量:6624 次
发布时间:2019-06-25

本文共 5235 字,大约阅读时间需要 17 分钟。

参考:https://docs.saltstack.com/en/latest/topics/pillar/index.html

grains 和pillar的区别

  grains 负责采集客户端的基本信息的,可以在客户端自定义然后汇报给服务端,也可在服务端配置然后下发给客户端。grains是静态的,不常变化的。比如主机名,IP,接口。

   grains是minion每一次启动的时候都会采集的静态数据,再向master汇报一次。可以用在salt的模块和其他组件。

   pillar 给minion定义你需要的数据,这些数据库可以被salt的其他组件使用。数据是动态的,
 
区别:
    1、grains是静态、不常变化的;pillar则是动态的
    2、grains是存储在minion本地,而pillar存储在master本地
    3、minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改

 

pillar是在master端配置定义的,可以配置指定的数据给指定的minion访问,所以可以配置敏感的数据。

 

默认的pillar_roots目录是: /srv/pillar/ 不存在需要创建。

配置pillar_roots目录

[root@cong-33 pillar]# cat /etc/salt/master |grep -A 3 "pillar_roots"

pillar_roots:
base:
- /srv/salt/pillar    ##我配置的pillar_roots目录是在/srv/salt/pillar
#
[root@cong-33 pillar]#

配置打开系统自带的pillar参数

[root@cong-33 pillar]# cat /etc/salt/master |grep "^pillar_opts"pillar_opts: True  [root@cong-33 pillar]#

重启master端的salt-master服务

[root@cong-33 pillar]# /etc/init.d/salt-master restart

 

pillar目录,pillar文件编写

[root@cong-33 pillar]# pwd/srv/salt/pillar[root@cong-33 pillar]# lltotal 24-rw-r--r--. 1 root root  28 Oct 30 16:27 data.sls-rw-r--r--. 1 root root 112 Nov 15 09:45 httpd.sls-rw-r--r--. 1 root root  28 Nov 14 17:34 ip.sls-rw-r--r--. 1 root root  73 Nov 15 09:45 top.sls  ##pillar的入口文件-rw-r--r--. 1 root root  74 Nov 14 19:32 uid.sls-rw-r--r--. 1 root root  11 Oct 31 09:31 user.sls[root@cong-33 pillar]#

查看pillar的入口文件top.sls

[root@cong-33 pillar]# cat top.sls base:        ##配置文件的环境选项    '*':      ##minion,这里是匹配所有的minion。可以使用正则匹配        - ip    ##会引用pillar_roots目录下的ip.sls文件,或ip/init.sls文件,优先读取ip.sls        - user        - uid        - httpd     'web*':    ##匹配以web开头的minion_id,然后执行这个定义下面的文件操作         - vim[root@cong-33 pillar]#

 

查看pillar文件

[root@cong-33 pillar]# cat ip.sls ip: {
{ grains['ipv4'][1] }}    ##设置pillar的ip key,value是使用grains的信息,根据grains获取IP信息[root@cong-33 pillar]# cat user.sls user: cong    ##配置pillar的user kye,值为cong[root@cong-33 pillar]# cat uid.sls user_id:    ##pillar信息的一个嵌套, thatch: 1000 shouse: 1001 utahdave: 1002 redbeard: 1003[root@cong-33 pillar]# cat httpd.sls   ##根据grains获取系统类型,然后根据系统类型设置软件包的名称{
% if grains['os'] == 'CentOS' %}apache: httpd{
% elif grains['os'] == 'Debian' %}apache: apache2{
% endif %}[root@cong-33 pillar]#

 

刷新pillar数据到minion

[root@cong-33 pillar]# salt '*' saltutil.refresh_pillarcong-55:    Truecong-49:    ##这个minion没启动所以报错    Minion did not return. [Not connected][root@cong-33 pillar]#

 

查看pillar信息

[root@cong-33 pillar]# salt 'cong-55' pillar.lscong-55:    - apache    - ip    - user_id    - user    - master[root@cong-33 pillar]# salt 'cong-55' pillar.item ipcong-55:    ----------    ip:        192.168.1.126[root@cong-33 pillar]# salt 'cong-55' pillar.item apachecong-55:    ----------    apache:        httpd[root@cong-33 pillar]# salt 'cong-55' pillar.item user_idcong-55:    ----------    user_id:        ----------        redbeard:            1003        shouse:            1001        thatch:            1000        utahdave:            1002[root@cong-33 pillar]# salt 'cong-55' pillar.item user_id:redbeardcong-55:    ----------    user_id:redbeard:        1003[root@cong-33 pillar]#

在minion端获取

[root@cong-55 ~]# salt-call pillar.item user_idlocal:    ----------    user_id:        ----------        redbeard:            1003        shouse:            1001        thatch:            1000        utahdave:            1002[root@cong-55 ~]# salt-call pillar.item user_id:thatchlocal:    ----------    user_id:thatch:        1000[root@cong-55 ~]#

 

这样我们在写sls文件是也可以条用pillar的信息数据了。

 

 

pillar的函数

[root@cong-33 pillar]# salt 'cong-55' sys.list_functions pillarcong-55:    - pillar.data    - pillar.ext    - pillar.fetch    - pillar.file_exists    - pillar.filter_by    - pillar.get    - pillar.item    - pillar.items    - pillar.keys    - pillar.ls    - pillar.obfuscate    - pillar.raw[root@cong-33 pillar]#

 

查看函数的使用方法

[root@cong-33 pillar]# salt 'cong-55' sys.doc pillar.lspillar.ls:    New in version 2015.8.0    Calls the master for a fresh pillar, generates the pillar data on the    fly (same as :py:func:`items`), but only shows the available main keys.    CLI Examples:        salt '*' pillar.ls    [root@cong-33 pillar]# salt 'cong-55' sys.doc pillar.itempillar.item:    New in version 0.16.2    Return one or more pillar entries from the :ref:`in-memory pillar data    
`. delimiter Delimiter used to traverse nested dictionaries. Note: This is different from :py:func:`pillar.get
` in that no default value can be specified. :py:func:`pillar.get
` should probably still be used in most cases to retrieve nested pillar values, as it is a bit more flexible. One reason to use this function instead of :py:func:`pillar.get
` however is when it is desirable to retrieve the values of more than one key, since :py:func:`pillar.get
` can only retrieve one key at a time. New in version 2015.8.0 CLI Examples: salt '*' pillar.item foo salt '*' pillar.item foo:bar salt '*' pillar.item foo bar baz [root@cong-33 pillar]#

 

转载于:https://www.cnblogs.com/LYCong/p/7878192.html

你可能感兴趣的文章
String hashCode 方法为什么选择数字31作为乘子
查看>>
最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...
查看>>
测试妹子的呐喊:为什么总是收不到推送?
查看>>
linux NFS
查看>>
Android性能优化:手把手带你全面了解 内存泄露 & 解决方案
查看>>
Jquery DataTable基本使用
查看>>
New UWP Community Toolkit
查看>>
JDBC连接数据库(二)
查看>>
leetcode 674. Longest Continuous Increasing Subsequence
查看>>
Extensions in UWP Community Toolkit - SurfaceDialTextbox
查看>>
Golang 语言的单元测试和性能测试(也叫 压力测试)
查看>>
springboot数据库连接池使用策略
查看>>
Java中CAS详解
查看>>
Java线程的学习_线程池
查看>>
Android 虚拟导航挡住应用底部解决方案(屏幕底部的三个按键)
查看>>
工厂函数
查看>>
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
native.js是什么且如何使用
查看>>
Android Application Task Activities的关系
查看>>