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:






你可能感兴趣的:(and,pillar,grains,stackstack)