SaltStack--Grains和Pillars

Grains

  • Grains是saltstack组件中非常重要的组件之一,它用来记录minion的系统信息(操作系统、域名、IP地址、内核信息、操作系统类型、内存信息以及其他更多的系统信息)。

  • Grain收集的信息是静态的,在minion第一次启动时采集数据(除非下次重起,否则数据不会变化)。

[root@server1 apache]# salt '*' grains.items  # 列出主机的详细信息,可用于资产管理
[root@server1 apache]# salt '*' grains.item os	# 列出所有主机的系统版本
server3:
    ----------
    os:
        RedHat
server2:
    ----------
    os:
        RedHat

salt '*' grains.item fqdn_ip4  # 列出所有主机的IP地址
  • 自定义grains
  • 可在minion端设置
[root@server1 apache]# salt '*' grains.item roles
server3:
    ----------
    roles:
server2:
    ----------
    roles:
    
在minion端的/etc/salt/minion文件中打开grains的注释
[root@server2 ~]# vim /etc/salt/minion
grains:
  roles:
    - apache
Grain收集的信息是静态的,在minion第一次启动时采集数据,所以我们需要重启Minion
[root@server2 ~]# systemctl restart salt-minion
[root@server1 apache]# salt '*' grains.item roles
server3:
    ----------
    roles:
server2:
    ----------
    roles:
        - apache
  • 在master端设置
[root@server1 salt]# ls
apache  _grains  nginx		#在/srv/salt下新建目录_grains
[root@server1 salt]# cd _grains/
[root@server1 _grains]# cat my_grains.py 
#!/usr/bin/env python
def my_grains():
    grains = {'foo':'bar','hello':'world'}
    grains['salt'] = 'stack'
    return grains

[root@server1 _grains]#  salt server3 saltutil.sync_grains	
server3:
    - grains.my_grains

#将master地grains定义刷到server3上,此时server3上
[root@server3 salt]# cd /var/cache/salt/minion/
[root@server3 minion]# tree
.
├── accumulator
├── extmods
│   └── grains
│       ├── my_grains.py
│       └── my_grains.pyc
├── files
│   └── base
│       ├── _grains
│       │   └── ==my_grains.py==
│       ├── nginx
│       │   ├── files
│       │   │   ├── nginx-1.15.8.tar.gz
│       │   │   ├── nginx.conf
│       │   │   └── nginx.service
│       │   ├── install.sls
│       │   └── service.sls
│       └── top.sls
├── highstate.cache.p
├── module_refresh
└── proc

9 directories, 11 files


[root@server1 _grains]# salt server3 grains.item roles
server3:
    ----------
    roles:
        nginx
[root@server1 _grains]# salt server3 grains.item hello
server3:
    ----------
    hello:
        world

现在我们可以根据grains的不同,通过roles的匹配来推服务。

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

在这里插入图片描述

salt -G 'roles:httpd' test.ping
salt -G 'roles:nginx' test.ping

pillar

  • 动态数据,给特定的minion指定特定的数据。只有指定的minion自己能看到自己的数据。
开启系统自带,修改配置文件
[root@server1 salt]# vim /etc/salt/master	#打开下面几行的注释
pillar_roots:
 base:
   - /srv/pillar

新建目录/srv/pillar
重启systemctl restart salt-master
[root@server1 salt]# cd /srv/pillar 
[root@server1 pillar]# vim web.sls
{% if grains['fqdn'] == 'server2' %} 如果主机名字等于server2 
webserver: httpd 
{% elif grains['fqdn'] == 'server3' %} 如果主机名字等于server3 
webserver: nginx 
{% endif %} 
[root@server1 pillar]# vim top.sls
base:
   '*':  
     - web 
[root@server1 pillar]# salt '*' pillar.items
[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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值