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/
作者
Carlos
发布于
2018年10月9日
许可协议