saltstack之grains
grains是saltstack非常重要的组件之一, 他记录这minion的一些静态信息 比如cpu 内存等,可以使用grains.items 查看某个minion的所有grains信息
查看grains可以使用的所有方法
[root@localhost ~]# salt 'test' sys.list_functions grains
test:
- grains.append
- grains.delval
- grains.filter_by
- grains.get
- grains.get_or_set_hash
- grains.has_value
- grains.item
- grains.items
- grains.ls
- grains.remove
- grains.setval
- grains.setvals
1.通过minion配置文件定义新的grains
在minion配置文件中插入如下内容
grains:
roles:
- webserver
重启minion使用命令查看
[root@localhost ~]# salt 'test' grains.get roles
test:
- webserver
2.使用命令来定义grains
[root@localhost ~]# salt 'test' grains.append tag 'nginx'
test:
----------
tag:
- nginx
[root@localhost ~]# salt 'test' grains.get tag
test:
- nginx
setvals可以设置多对grains
[root@localhost ~]# salt 'test' grains.setvals "{'key1':'value1','key2':'value2'}"
test:
----------
key1:
value1
key2:
value2
3.使用python脚本来自定义grains
创建_grains目录在你的base环境目录下,具体设置请查看master配置文件
创建自定义grains脚本,我这里叫set_grains.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import psutil
import math
def covert_bytes(byte,lst=None):
if lst is None:
lst = ['Bytes','KB','MB','GB','TB']
i = int(math.floor(math.log(byte,1024)))
if i>len(lst):
i = len(lst)-1
return ('%.2f' + lst[i]) % (byte / math.pow(1024, i))
def get_grains_info():
grains ={}
disk_data = psutil.disk_partitions()
disks =[]
for disk in disk_data:
diskname = disk.mountpoint
disktotal = covert_bytes(psutil.disk_usage(disk.mountpoint).total)
disks.append('{} {}'.format(diskname, disktotal))
grains["disk_info"] = disks
mem_data = psutil.virtual_memory()
total = covert_bytes(mem_data.total)
grains['memory_info'] = total
return grains
if __name__ =="__main__":
print(get_grains_info())
同步grains
salt '*' saltutil.sync_grains
如果没生效则再执行以下命令
salt '*' saltutil.refresh_grains
查看自定义的grains
salt '10.10.9.119' grains.item disk_info
10.10.9.119:
----------
disk_info:
- / 49.21GB
- /data0 984.18GB
saltstack之grains
http://www.jcwit.com/article/289/