一 grains
Grains是SaltStack的一个组件,存放在SaltStack的minion端。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当
minion重启时才会进行数据的更新。
由于grains是静态数据,因此不推荐经常去修改它。
应用场景:
信息查询,可用作CMDB。
在target中使用,匹配minion。
在state系统中使用,配置管理模块。
1 信息查询
[root@server1 ~]# salt server2 grains.ls
server2:
- SSDs
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- cwd
- disks
- dns
- domain
- fqdn
- fqdn_ip4
- fqdn_ip6
- fqdns
- gid
- gpus
- groupname
- host
- hwaddr_interfaces
- id
- init
- ip4_gw
- ip4_interfaces
- ip6_gw
- ip6_interfaces
- ip_gw
- ip_interfaces
- ipv4
- ipv6
- kernel
- kernelrelease
- kernelversion
- locale_info
- localhost
- lsb_distrib_codename
- lsb_distrib_id
- lsb_distrib_release
- machine_id
- manufacturer
- master
- mdadm
- mem_total
- nodename
- num_cpus
- num_gpus
- os
- os_family
- osarch
- oscodename
- osfinger
- osfullname
- osmajorrelease
- osrelease
- osrelease_info
- path
- pid
- productname
- ps
- pythonexecutable
- pythonpath
- pythonversion
- saltpath
- saltversion
- saltversioninfo
- selinux
- serialnumber
- server_id
- shell
- swap_total
- systemd
- uid
- username
- uuid
- virtual
- zfs_feature_flags
- zfs_support
- zmqversion
[root@server1 ~]# salt server2 grains.item ipv4
server2:
----------
ipv4:
- 127.0.0.1
- 172.25.7.2
[root@server1 ~]# salt server2 grains.item roles
server2:
----------
roles:
apache
[root@server1 ~]# salt server3 grains.item roles
server3:
----------
roles:
nginx
root@server1 ~]# salt server? grains.item roles
server3:
----------
roles:
nginx
server2:
----------
roles:
apache
2 自定义grains项
在server2上
[root@server2 mnt]# cd /etc/salt/
[root@server2 salt]# ls
cloud cloud.maps.d master minion.d proxy
cloud.conf.d cloud.profiles.d master.d minion_id proxy.d
cloud.deploy.d cloud.providers.d minion pki roster
[root@server2 salt]# vim minion #在/etc/salt/minion中定义
grains:
roles: apache
[root@server2 salt]# systemctl restart salt-minion.service #重启salt-minion,否则数据不会更新
在server3上
在/etc/salt/grains中定义
[root@server3 conf]# cd /etc/salt/
[root@server3 salt]# ls
cloud cloud.maps.d master minion.d proxy
cloud.conf.d cloud.profiles.d master.d minion_id proxy.d
cloud.deploy.d cloud.providers.d minion pki roster
[root@server3 salt]# vim grains
[root@server3 salt]# cat grains
roles: nginx
3 编写grains模块
在salt-master端创建_grains目录
同步数据:
root@server1 ~]# cd /srv/salt/
[root@server1 salt]# mkdir _grains
[root@server1 salt]# cd _grains/
[root@server1 _grains]# vim grains.py
[root@server1 _grains]# cat grains.py
#!/usr/bin/env python
def grains():
# initialize a grains dictionary
grains = {}
# Some code for logic that sets grains like
grains['hello'] = 'world'
grains['salt'] = 'stack'
return grains
[root@server1 _grains]# salt '*' saltutil.sync_grains
server2:
- grains.grains
server3:
- grains.grains