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
- 第一章:saltstack的基本介绍
- 第二章:saltstack的安装部署
- 第一节:在centos7系统上安装saltstack工具
- 第二节:在windows server 2008上安装salt-minion
- 第三章: saltstack的配置管理
- 第一节:salt-master配置
- 第二节:salt-minion配置
- 第三节:了解YAML
- 第四节:salt-master配置文件详解
- 第五节:了解Jinja2
- 第六节:配置普通用户可以运行saltstack的模块
- 第四章:远程执行
- 第一节:远程执行基础介绍
- 第二节:目标定位
- 一、全局及正则表达式匹配
- 二、列表匹配
- 三、Grains
- 四: Pillar
- 五:subnet and ip
- 六:组合匹配
- 七: node group
- 第三节:常用模块
- 一、查看帮助
- 二、Network模块
- 三、Service模块
- 四:State模块
- 五、Cron模块
- 六、File模块
- 七、iptables模块
- 八、pkg包管理
- 第四节:Salt其他命令
- 一、salt-cp(拷贝文件)
- 二、salt-ssh
- 三、salt-key
- 第五节:saltstack返回程序
- 第一节:返回保持到数据库(mysql)
- 第五章:配置管理
- 第一节:简单入门
- 第二节:状态间关系
- 第六章:数据系统
- 第一节:grains
- 第二节:pillar
- 第七章:saltstack配置管理
- 第一节:系统初始化操作
- 第二节:功能模块
- 一、haproxy模块
- 二、keepalived模块
- 三、nginx模块
- 四: pcre模块
- 五: zlib模块
- 六:user模块
- 七:php模块
- 第三节:业务模块
- 第一节:haproxy代理
- 第二节:keepalived业务
- 第八章:自动化管理工具saltstack
- 第一节:文件管理
- 第二节:软件管理
- 第三节:服务管理
- 第四节:sysctl模块管理