企業——saltstack自動化部署軟件之Grains、Pillar

一.什麼是Grains和Pillar?

  Grains:grains是minion第一次啓動的時候採集的靜態數據,能夠用在salt的模塊和其餘組件中。其實grains在每次的minion啓動(重啓)的時候都會採集,即向master彙報一次的。grains是minion啓動時加載的,在運行過程當中不會發生變化,因此是靜態數據。grains中包含諸如運行的內核版本,操做系統等信息。在master端經過Grains能夠得到minion對應的變量值。python

  Pillar:Pillar是在salt 0.9.8版本後才添加的功能組件。它跟grains的結構同樣,也是一個字典格式,數據經過key/value的格式進行存儲。在Salt的設計中,Pillar使用獨立的加密sesstion,因此Pillar能夠用來傳遞敏感的數據,例如ssh-key,加密證書等。
     存儲位置:存儲在master端,存放須要提供給minion的信息
     應用場景:敏感信息:每一個minion只能訪問master分配給本身的信息
nginx

 

二.Grains的相應的配置

 查看遠端服務器的數據的命令:
   salt wf2 grains.item os      ##查看 wf2 的 os 的類型
    salt wf2 grains.item ipv4    ##查看 wf2 的 ip
    salt -G 'os:redhat' cmd.run hostname      ## -G表示匹配   'os:redhat'表示前面匹配全部紅帽的系統  cmd 表示匹配到一致的遠端的服務器執行cmd後面的命令
    更改信息的方式有兩種:一在minion端更改,二在master端更改web


1. 在minion端,有兩種方法更改grains

 方法一:在minion的配置文件中更改默認的 roles 值
   cd /etc/salt/
   ls
   vim minion
    grains:
      roles:
        - apache      ##更改默認的roles的值
   /etc/init.d/salt-minion restart     ##由於是靜態的更改配置文件,因此要從新啓動服務

   測試:在master上    salt wf2 grains.item roles     ##能夠看到輸出的是,剛更改的配置文件的數據
  apache

 

 方法二:在minion端的salt下編寫一個文件
   cd /etc/salt
   ls
   vim grains
    roles: nginx     ##由於不是更改的配置文件,因此不須要重起
   
   測試:在master端上    salt wf3 grains.item roles
        ##雖然編寫了配置文件,可是master端沒有識別這個文件,並不知道這個文件的存在,因此須要觸發一下,模塊刷一下
    salt wf3 saltutil.sync_grains    ##刷新
    salt wf3 grains.item roles    ##再次查看,就能夠看到添加的文件裏面的信息vim


2在master端,有兩種方法更改grains

     ##什麼系統操做什麼命令  role自定義角色
     ##無需重起,只須要在master上觸發一下grains服務器


 方法一:編輯top.sls文件
  top file中不須要匹配主機名,批量的配置服務器
   vim top.sls
    base:
      "wf1":
        - haproxy.service
      "roles:apache":
        - match: grain
        - apache.install
      "roles:nginx":
        - match: grain
        - nginx.service

 方法二:在master端,編寫py腳本     優勢是:不須要登錄遠程的服務端
   mkdir _grains
   cd _grains/
   vim my_grains.py
     #!/usr/bin/env python
     def my_grains():
         grains = {}
         grains['hello'] = 'westos'
         grains['salt'] = 'stack'
         return grainsa
   salt wf3 saltutil.sync_grains  ##查看 wf3 的 grains 的值
   
   測試:
   在wf3處: cd /var/cache/salt -> tree . -> 將my文件傳送了過來
   在wf1處: salt wf3 grains.item hello/salt

==================================================================================
注意:若是同時編寫了這些,那麼這四個的優先級又是什麼呢?
   1.grains    ##配置文件中的grains的默認的(或者更改的)值
   2./etc/salt/grains    ##在 minion 端編寫的文件
   3./etc/salt/minion    
   4._grains/my_grains.py    ##在master上面添加的目錄和文件
==================================================================================網絡

 

三.Pillar的相應的配置

 wf1上:
   cd /etc/salt/
   vim master
      pillar_roots:
        base:
          - /srv/pillar
   /etc/init.d/salt-master restart

   mkdir /srv/pillar
   cd /srv/pillar
   mkdir web
   cd web
   vim install.sls
      {% if grains['fqdn'] == 'wf2' %}
      webserver: httpd
      {% elif grains['fqdn'] == 'wf3' %}
      webserver: nginx
      {% endif %}

   cd ..
   vim top.sls
      base:
        '*':
          - web.install

   測試:  salt '*' pillar.items
      salt '*' saltutil.refresh_pillar    ##刷新
      salt wf2/3 pillar.item webserver     ##單獨看的話,就查看不了,須要刷新
      salt '*' saltutil.refresh_pillar    ##刷新
      salt wf2/3 pillar.item webserver    ##刷新事後就能夠查看

==================================================================================   
注意:pillar的用法:-I 匹配  -S掃描整個網絡
   salt -I 'webserver:httpd' test.ping
   salt -S 172.25.254.0/24 test.ping
==================================================================================
ssh

相關文章
相關標籤/搜索