🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Grains是描述minion本身固有属性的静态数据(是在minion启动的时候收集),如果minion端的操作系统版本,内存大小,硬盘,网卡信息等 注意:如果minion端的数据发生改变后,就必须要重启salt-minion,否则就不会生效 功能: 1)资产管理,信息查询 2)标识目标,比如所有centos6的系统上安装nginx,再者比如在拥有4g内存的机器上安装httpd 3)配置管理中使用 [root@master ~ ]# salt 'node2.51yuki.cn' grains.ls (查看模块) [root@master ~ ]# salt 'node2.51yuki.cn' grains.items(下面列出经常用的信息) cpu_model: Westmere E56xx/L56xx/X56xx (Nehalem-C) cpuarch: x86_64 fqdn: node2.51yuki.cn fqdn_ip4: - 10.2.11.228 host: node2 ip4_interfaces: ---------- eth0: - 10.2.11.228 lo: - 127.0.0.1 mem_total: 992 kernelrelease: 3.10.0-514.el7.x86_64 os: CentOS osarch: x86_64 osrelease: selinux: ---------- enabled: True enforced: Permissive 7.3.1611 信息收集案例 [root@master ~ ]# salt '*' grains.item os node2.51yuki.cn: ---------- os: CentOS node3.51yuki.cn: ---------- os: CentOS [root@master ~ ]# salt '*' grains.item fqdn_ip4 node2.51yuki.cn: ---------- fqdn_ip4: - 10.2.11.228 node3.51yuki.cn: ---------- fqdn_ip4: - 10.2.11.226 [root@master ~ ]# salt '*' grains.item host node2.51yuki.cn: ---------- host: node2 node3.51yuki.cn: ---------- host: node3 [root@master ~ ]# salt '*' grains.item fqdn node3.51yuki.cn: ---------- fqdn: node3.51yuki.cn node2.51yuki.cn: ---------- fqdn: node2.51yuki.cn 总结: 1)granis.item 后面写上,你需要查看的信息,(比如os,kernelrelease、host、fqdn、fqdn-ip4、cpu_model) 标识目标案例: 使用-G的参数 [root@master ~ ]# salt -G 'os:Centos' test.ping node3.51yuki.cn: True node2.51yuki.cn: True [root@master ~ ]# salt -G 'osrelease:7.3.1611' cmd.run 'w' node2.51yuki.cn: 09:44:40 up 21:35, 1 user, load average: 0.02, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.2.11.176 09:19 2:00 0.02s 0.02s -bash node3.51yuki.cn: 09:44:39 up 21:40, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.2.11.176 09:19 24:59 0.01s 0.01s -bash 二)grains支持自定义 我们可以给每一个minion自定义某个值 1)在minion配置文件中,自定义 [root@node2 ~]# vim /etc/salt/minion grains: roles: apache 重启salt-minion服务 [admin@master ~ ]$ sudo salt '*' grains.item roles node3.51yuki.cn: ---------- roles: node2.51yuki.cn: ---------- roles: apache [admin@master ~ ]$ sudo salt -G 'roles:apache' cmd.run 'sudo systemctl restart httpd' node2.51yuki.cn: 通过上面,发现我们可以给每个不同角色的机器定义不同的roles,然后在master端可以给不同roles,指定不同的操作。但是在生产环境中,建议不要把这个grains中roles的定义写到配置文件中,这样的话,配置文件就会变得庞大,不利于管理 2)在生产中,grains的配置,我们可以单独建立一个/etc/salt/grains文件 [admin@node2 ~]$ sudo vim /etc/salt/grains cloud: openstack [admin@node2 ~]$ sudo systemctl restart salt-minion 或者在master端刷新一下 [admin@master ~ ]$ sudo salt '*' saltutil.sync_grains [admin@master ~ ]$ sudo salt '*' grains.item cloud node2.51yuki.cn: ---------- cloud: openstack node3.51yuki.cn: ---------- cloud: 3) 通过salt-master给每个minion定义 [admin@master /srv/salt ]$ sudo salt 'node2*' grains.setval cpu_num 2 [admin@master /srv/salt ]$ sudo salt '*' grains.item cpu_num node2.51yuki.cn: ---------- cpu_num: 2 node3.51yuki.cn: ---------- cpu_num: 实际上会写在minion端的(/etc/salt/grains)的文件中 [admin@node2 ~]$ sudo vim /etc/salt/grains cloud: openstack cpu_num: 2 三) grains在配置管理中使用 1)在top.sls中使用 [admin@master /srv/salt ]$ sudo vim top.sls base: 'node2.51yuki.cn': - web.apache 'roles:apache': - match: grain - web.apache 说明: 1)一定要使用match,指定用grain来匹配,一定不要写成grains咯 四)编写python脚本,自定义一个granis [admin@master /srv/salt ]$ cd _grains/ [admin@master /srv/salt/_grains ]$ ll total 4 -rw-r--r--. 1 root root 246 Jan 14 10:18 my_grains.py [admin@master /srv/salt/_grains ]$ sudo vim my_grains.py #!/usr/bin/env python #-*- coding: utf-8 -*- def my_grains(): #初始化一个grains字典 grains = {} #设置字典中的值 grains['iaas'] = 'openstack' grains['edu'] = 'oldboyedu' #返回这个字典 return grains 然后把这个同步到minion端 [admin@master /srv/salt/_grains ]$ sudo salt '*' saltutil.sync_grains 然后去minion端查看(/var/cache/grains)中 [admin@node2 extmods]$ pwd /var/cache/salt/minion/extmods 说明:grains的优先级 系统自带的---grains文件中---minion配置文件----自己编写的python 当多个文件中拥有相同的名字的时候,系统自带的优先级最高 [admin@master /srv ]$ sudo salt -G 'cpuarch:x86_64' cmd.run 'w' node2.51yuki.cn: 20:37:31 up 1 day, 8:28, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT admin pts/0 10.2.11.176 09:48 2:35m 0.09s 0.09s -bash node3.51yuki.cn: 20:37:31 up 1 day, 8:33, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT admin pts/1 10.2.11.176 09:48 10:48m 0.01s 0.01s -bash