目录
一、grains简介
- Grains是SaltStack的一个组件,存放在SaltStack的minion端。
- 当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。
- 由于grains是静态数据,因此不推荐经常去修改它。
- 应用场景:
- 信息查询,可用作CMDB。
- 在target中使用,匹配minion。
- 在state系统中使用,配置管理模块。
二、信息查询
用于查询minion端的IP、FQDN等信息
1、默认可用的grains:
salt '*' grains.ls
2、查看每一项的值:
salt '*' grains.items
3、取单项的值:
salt server3 grains.item ipv4
salt server3 grains.item fqdn
三、自定义grains项
1、server2
- 在server2的
/etc/salt/minion
中定义:
vim /etc/salt/minion
##写入
grains:
roles: apache
- 重启
salt-minion
,否则数据不会更新:
systemctl restart salt-minion
- 查询自定义项:
2、server3
- 在server3的
/etc/salt/minion
中定义:
vim /etc/salt/minion
##写入
grains:
roles: nginx
- 重启
salt-minion
,否则数据不会更新:
systemctl restart salt-minion
- 查询自定义项:
四、编写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
- 在top文件中匹配:
vim /srv/salt/top.sls
##写入
base:
'roles: apache':
- match: grain
- apache
'roles: nginx':
- match: grain
- nginx
可以发现,在server2上安装了apache,在server3上安装了nginx。