自动化管理工具Saltstack之Grains和Pillar

一、Grains工具:

Saltstack里的Grains功能,讲的是minion端的静态变量,在master端通过Grains可以获得minion对应的变量值。
1.打开server2的grains工具包

[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
grains:
  roles:
    - httpd

[root@server2 salt]# systemctl restart salt-minion
[root@server1 salt]# salt server2 grains.item roles     ##可以获得对应的变量值

自动化管理工具Saltstack之Grains和Pillar_第1张图片

[root@server1 salt]# mkdir /srv/salt/_grains
[root@server1 salt]# cd /srv/salt/_grains
[root@server1 _grains]# vim my_grains.py
#!/usr/bin/env python
def my_grains():
    grains = {}
    grains['roles'] = 'nginx'
    grains['hello'] = 'world'
    return grains

[root@server3 system]# yum install -y tree
[root@server3 system]# cd /var/cache
[root@server3 cache]# cd salt/
[root@server3 salt]# tree minion/        


[root@server1 _grains]# salt server3 saltutil.sync_grains
[root@server1 _grains]# salt server3 grains.item roles
[root@server1 _grains]# salt server3 grains.item hello

自动化管理工具Saltstack之Grains和Pillar_第2张图片

[root@server1 salt]# ls
_grains  httpd  nginx  top.sls  users
[root@server1 salt]# vim top.sls                   
base:
  'roles:httpd':
    - match: grain
    - httpd.service

  'roles:nginx':
    - match: grain
    - nginx.service

[root@server1 salt]# salt server[2,3] state.highstate

自动化管理工具Saltstack之Grains和Pillar_第3张图片

[root@server1 pillar]# salt -G 'roles:httpd' test.ping
[root@server1 pillar]# salt -G 'roles:nginx' test.ping

自动化管理工具Saltstack之Grains和Pillar_第4张图片

二、pillar工具的配置

[root@server1 salt]# vim /etc/salt/master
 843 pillar_roots:
 844   base:
 845     - /srv/pillar
[root@server1 salt]# systemctl restart salt-master
[root@server1 salt]# mkdir /srv/pillar
[root@server1 salt]# systemctl restart salt-master


[root@server1 salt]# cd /srv/pillar
[root@server1 pillar]# vim web.sls
[root@server1 pillar]# cat web.sls 
{% if grains['fqdn'] == 'server2' %}      如果主机名字等于server2
webserver: httpd
{% elif grains['fqdn'] == 'server3' %}     如果主机名字等于server3
webserver: nginx 
{% endif %}
[root@server1 pillar]# vim top.sls
[root@server1 pillar]# cat top.sls 
base:
  '*':
    - web
[root@server1 pillar]# salt '*' pillar.items

自动化管理工具Saltstack之Grains和Pillar_第5张图片

[root@server1 pillar]# salt '*' saltutil.refresh_pillar
[root@server1 pillar]# salt -I 'webserver:nginx' test.ping
[root@server1 pillar]# salt -I 'webserver:httpd' test.ping

自动化管理工具Saltstack之Grains和Pillar_第6张图片

你可能感兴趣的:(运维)