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模塊管理