saltstack自动化管理工具之Grains+Pillar

官方文档参考

docs.saltstack.cn  版本较旧

docs.saltstack.com

一、Grains工具:

https://docs.saltstack.cn/topics/grains/index.html

Saltstack里的Grains功能,讲的是minion端的静态变量,在master端通过Grains可以获得minion对应的变量值。

salt附带一个接口,用于获取有关底层系统的信息。这被称为“Grains界面”,因为它提供了含salt的信息颗粒。收集操作系统、域名、IP地址、内核、操作系统类型、内存和许多其他系统属性的Grains。
Grains界面可用于salt模块和组件,以便在正确的系统上自动使用正确的salt命令。
Grains数据是相对静态的,但如果系统信息发生更改(例如,如果网络设置发生更改),或者如果为自定义Grains指定了新值,则Grains数据将刷新。

1.打开server2的grains工具包

[root@server2 salt]# pwd
/etc/salt
[root@server2 salt]# vim minion

[root@server2 salt]# systemctl restart salt-minion
[root@server1 salt]# salt '*' grains.items    ## *表示全部设备,也可指明server2,server3没有开故不显示
[root@server1 salt]# salt server2 grains.item roles    ##只显示server2

2.编写server3角色

[root@server1 salt]# salt server3 saltutil.sync_grains

[root@server3 salt]# pwd
/etc/salt
[root@server3 salt]# vim grains
[root@server3 salt]# cat grains 
roles: nginx

[root@server1 salt]# salt '*' grains.item roles

 

[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 = {'foo': 'bar', 'hello': 'world'}
    grains['salt'] = 'stack'
    return grains

[root@server1 _grains]# salt '*' saltutil.sync_grains
[root@server1 _grains]# salt '*' grains.item hello
[root@server1 _grains]# salt '*' grains.item salt
[root@server1 _grains]# salt '*' grains.item os    ##操作系统

 

 server2/3上都可以查看到推送的脚本

 

[root@server1 salt]# vim top.sls 
base:
  'roles:apache':
    - match: grain
    - apache.service
  'roles:nginx':
    - match: grain
    - nginx.service
[root@server1 salt]# salt '*' state.highstate
[root@server1 _grains]# salt '*' grains.item fqdn    ##用户名

 

二、Pillar工具:

https://docs.saltstack.cn/topics/pillar/index.html

Pillar是Salt用来分发全局变量到所有minions的一个接口。Pillar data的管理类似于Salt State Tree。

 

[root@server1 pillar]# ls
top.sls  web
[root@server1 pillar]# cat top.sls 
base:
  '*':
    - web.vars
[root@server1 pillar]# cd web/
[root@server1 web]# ls
vars.sls
[root@server1 web]# cat vars.sls 
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
state: master
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
state: backup 
{% endif %}

 

 

[root@server1 pillar]# salt '*' saltutil.refresh_pillar
# 当pillar数据在master端更新时,minion端需要刷新本地数据,刷新pillar数据
[root@server1 pillar]# salt -I 'webserver:nginx' test.ping
[root@server1 pillar]# salt -I 'webserver:httpd' test.ping

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值