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:
相關文章
相關標籤/搜索