stackstack pillar and grains

http://732233048.blog.51cto.com/9323668/1640792
参考:
    pillar:http://docs.saltstack.cn/zh_CN/latest/topics/tutorials/pillar.html
    grains:http://docs.saltstack.cn/zh_CN/latest/topics/targeting/grains.html#targeting-grains
            http://www.furion.info/414.html
    pillar和grains:
    
    
    
pillar:
salt 一个很是重要的组件,它用于给特定的minion定义任何须要的数据(数据是动态的),这些数据,这些数据库能够被salt 其余的组件 如state 使用

能够根据须要自定义pillar 变量,若是用户和uid ,




grains:
主要负责搜集minion端一些文本信息,若是:主机名,ip,接口,操做系统等等,这些信息都是静态的,grains 能够自定义,能够在minion端自定义,而后minion断搜集本地信息发送给master,断,也能够在master端自定义,而后master断把自定义的grains 推送到minion断,去采集minon端相关信息。

咱们能够等到一个大体的判断,若是你想定义的属性值是常常变化的,那请采用pillar,若是是很固定的,不易变化的请使用grains


我一般会把pillar或grains 当作一个很大的字典,字典名就是pillar活grains;在grains 字典忠会有不少键值对,每一个键对应一个值,如:{{ grains['os'] }} 的值就是CentOS







pillar:

      命令:
      salt '*' pillar.items
      salt '*' pillar.items users
      
      
##建立pillar目录:
[root@dbm133 ~]# mkdir /srv/pillar/
 
##pillar目录树:
[root@dbm133 ~]# cd /srv/pillar/
[root@dbm133 pillar]# tree
.
├── file
│   └── init.sls
└── top.sls
 
##pillar入口文件:
[root@dbm133 pillar]# cat top.sls 
base:
  '*':
    - file
 
##pillar的.sls文件
[root@dbm133 pillar]# cd file/
[root@dbm133 file]# ll
total 4
-rw-r--r-- 1 root root 29 Jul 21 13:40 init.sls
[root@dbm133 file]# cat init.sls 
files:
    file1: /tmp/scj/file10          ##pillar变量格式就是键值对,key:value;此处是嵌套
name: jeff
 
##当pillar数据在master变动时,minions须要刷新本地数据,能够经过saltutil.refresh_pillar函数完成
salt '*' saltutil.refresh_pillar         ##全部minion刷新本地数据
 
 
 
 
调用pillar变量:

##建立.sls文件:
[root@dbm133 httpd]# pwd
/srv/salt/web/httpd
[root@dbm133 httpd]# cat conf.sls 
{{ pillar['files']['file1'] }}:     ##调用pillar变量,两个花括号;能够改为{{ pillar.get('files:file1','') }}
  file:
    - managed
    - source: salt://web/files/file1
    - template: jinja               ##必定要指定template: jinja,只有这样才会去找pillar变量
 
##配置salt://web/files/file1文件:
[root@dbm133 files]# pwd
/srv/salt/web/files
[root@dbm133 files]# cat file1 
hello {{ pillar['name'] }}          ##调用pillar变量,两个花括号,调用pillar字典中name键所对应的值
 
###在.sls文件和配置文件里均可以调用pillar变量和grains变量





推送到minion:


salt zszz_192.168.186.132 state.highstate








grains:
   命令:
        salt '*' grains.ls            查看grains全部分类
        salt '*' grains.items         查看grains全部信息
        salt '*' grains.item os       查看grains某个分类信息
        
        


:在master端定义:
##在master端定义,须要用python去编写
##建立_grains目录
[root@dbm133 ~]# mkdir /srv/salt/_grains            #必须是_grains目录
[root@dbm133 ~]# cd /srv/salt/_grains
[root@dbm133 _grains]# vi mygrains.py
#!/usr/bin/python
#encoding:utf-8
 
def mygrain():
    grain1={}               #须要定义一个字典,由于grains就是一个大的字典
    grain1['company']='chengmeng'
    grain1['zhiwei']='yunwei'
    return grain1
 
##把自定义grains推送到minion端:
[root@dbm133 ~]# salt '*' saltutil.sync_all
zszz_192.168.186.135:
    ----------
    beacons:
    grains:
        - grains.mygrains                   ##mygrains 即:python脚本名
    modules:
    outputters:
    renderers:
    returners:
    states:
    utils:
zszz_192.168.186.132:
    ----------
    beacons:
    grains:
        - grains.mygrains
    modules:
    outputters:
    renderers:
    returners:
    states:
    utils:
相关文章
相关标签/搜索