saltstack自動化運維管理----------(grains、pillar)

saltstack自動化運維管理----------(grains、pillar)

1.grains

1.grains簡介

Grains是SaltStack的一個組件,存放在SaltStack的minion端。
當salt-minion啓動時會把收集到的數據靜態存放在Grains當中,只有當minion重啓時纔會進行數據的更新。由於grains是靜態數據,因此不推薦經常去修改它。
應用場景:信息查詢,可用作CMDB。在target中使用,匹配minion。在state系統中使用,配置管理模塊

2.信息查詢

用於查詢minion端的IP、FQDN等信息

  1. 默認可用的grains:
salt '*' grains.ls

在這裏插入圖片描述
2. 查看每一項的值:

salt '*' grains.items

在這裏插入圖片描述
3. 取單項的值:

salt server5 grains.item ipv4
salt server5 grains.item fqdn

在這裏插入圖片描述

3.自定義grains項

在server4中:

在server4的/etc/salt/minion中定義:

vim /etc/salt/minion
##寫入
grains:
  roles: apache
  
重啓salt-minion,否則數據不會更新:
systemctl  restart salt-minion

在這裏插入圖片描述

在server5中:

在server5的/etc/salt/minion中定義:

vim /etc/salt/minion
##寫入
grains:
  roles: nginx

重啓salt-minion,否則數據不會更新:
systemctl  restart salt-minion

在這裏插入圖片描述

4.編寫grains模塊

1。編寫模塊

在salt-master端創建_grains目錄:

mkdir /srv/salt/_grains
vim /srv/salt/_grains/my_grain.py
##寫入
def my_grain():
    grains = {}
    grains['linux'] = 'redhat'
    grains['hello'] = 'world'
    return grains
salt '*' saltutil.sync_grains	#同步grains到minion端

在這裏插入圖片描述
在這裏插入圖片描述

2。grains匹配運用

在target中匹配minion:

salt -G roles:apache cmd.run hostname
salt -G roles:nginx cmd.run hostname
salt -G hello:world cmd.run hostname

在這裏插入圖片描述

在top文件中匹配:

vim /srv/salt/top.sls
##寫入
base:
  'roles: apache':
    - match: grain
    - apache
  'roles: nginx':
    - match: grain
    - nginx

在這裏插入圖片描述

2.pillar

1.pillar簡介

pillar和grains一樣也是一個數據系統,但是應用場景不同。
pillar是將信息動態的存放在master端,主要存放私密、敏感信息(如用戶名密碼等,而且可以指定某一個minion纔可以看到對應的信息。
pillar更加適合在配置管理中運用。

2.聲明pillar

定義pillar基礎目錄:

vim /etc/salt/master
##修改
pillar_roots:
  base:
    - /srv/pillar
mkdir /srv/pillar


重啓salt-master服務:
/etc/init.d/salt-master restart

注意:默認目錄就是/srv/pillar,可以不用修改配置文件,服務業就不需要重啓。

3.自定義pillar項

定義項:

vim /srv/pillar/top.sls
##寫入
base:
  '*':
    - packages

vim /srv/pillar/apache.sls
##寫入
{% if grains['fqdn'] == 'server5' %}
package: nginx
{% elif grains['fqdn'] == 'server4' %}
package: httpd
{% endif %}

注意: 這裏會匹配所有minion,現在只有兩臺minion,所以endif後面不加參數,否則報錯。如果有更多的minion,則需要寫
刷新pillar數據:
salt '*' saltutil.refresh_pillar

查詢pillar數據:
salt 'server4' pillar.items package
salt 'server5' pillar.items package

4.pillar數據匹配

命令行中匹配
salt -I package:nginx cmd.run hostname

state系統中使用

state系統中使用
vim /srv/salt/apache/init.sls

web:
  pkg.installed:
    - pkgs:
      - {{ pillar['package'] }}
      -php
  service.running:
    - name: httpd
    - enable: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf

/etc/httpd/conf/httpd.conf
  file.managed:
    - source: salt://apache/files/httpd.conf

在server2上安裝了apache,在server3上安裝了nginx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章