wedsddsa 发表于 2017-3-1 16:45:36

集中化管理平台saltstack--grains(3)

grainsgrains 类似于puppet的facter 负责采集客户端一些基本信息,这个也完全可以自定义。一般从服务器端定义然后推下去,采集完后,再汇报上来。
altstack里的Grains功能,是控制minion端的静态变量,在master端通过Grains可以获得minion对应的变量值。
查看minion的全部静态变量,可以通过如下实现:
# salt '*' grains.ls
JYD-test-3:
    - SSDs
    - biosreleasedate
    - biosversion
    - cpu_flags
    - cpu_model
    - cpuarch   
   ......
所列出静态变量是成组出现的,如上只是列出了组的key(用python的思维理解)
用如下命令可列出被控端的key及vlaue:
# salt '*' grains.items
JYD-test-3:
    ----------
    SSDs:
    biosreleasedate:
      07/02/2015
    biosversion:
      6.00
    cpu_flags:
      - fpu
       ......
也可以指定查看key值,如查看系统类型(grains.item后面跟的为grains组的key):
# salt '*' grains.item osfinger --out=pprint
{'JYD-test-2': {'osfinger': 'CentOS-6'}}
{'JYD-test-3': {'osfinger': 'CentOS-6'}}

自定义grains.item
第一种方法(很少使用):
在minion端:
修改配置文件/etc/salt/minion中 去掉 default_include: minion.d/*.conf 前的#号
在minion端的/etc/salt/minion.d/ 目录下新建并编辑conf文件,如:

# vi /etc/salt/minion.d/web.conf
grains:             #必须声明
web: nginx
user: dong
重启salt-minion服务,并在master端验证:
# /etc/init.d/salt-minion restart
Stopping salt-minion daemon:                               [确定]
Starting salt-minion daemon:                               [确定]
# salt 'JYD-test-2' grains.item web --out=pprint
{'JYD-test-2': {'web': 'nginx'}}

第二种方法:

在master端添加
创建/srv/salt/_grains/目录,编写grains文件(python代码)
# mkdir -pv /srv/salt/_grains/
mkdir: 已创建目录 "/srv/salt"
mkdir: 已创建目录 "/srv/salt/_grains/"
以下为获取被控主机系统允许最大打开文件数的grains数据的拓展模块。
# vi /srv/salt/_grains/get_openfile.py
import os,sys,commands   

def Grains_openfile():   
    grains = {}   

    #init default value   
    _open_file=65536   

    try:   
      getulimit=commands.getstatusoutput('source /etc/profile;ulimit -n')   
    except Exception,e:   
      pass   
    if getulimit==0:   
      _open_file=int(getulimit)   
    grains['max_open_file'] = _open_file    #max_open_file是grains的项,_open_file即grains这一项的值。
    return grains   
注:python的必须缩进,否则会识别错误。
将该python文件同步到被控主机,并刷新重载模块使之生效。
# salt 'JYD-test-2' saltutil.sync_grains
JYD-test-2:
    - grains.get_openfile

# salt 'JYD-test-2' sys.reload_modules
JYD-test-2:
    True
在被控端上查看
# ll /var/cache/salt/minion/extmods/grains/      #存放扩展模块文件
-rw-------. 1 root root 353 2月26 19:00 get_openfile.py
-rw-------. 1 root root 646 2月26 19:11 get_openfile.pyc
# ll /var/cache/salt/minion/files/base/_grains/      #临时存放位置
-rw-------. 1 root root 353 2月26 19:00 get_openfile.py
大功告成,接下来在master端查看效果。
# salt 'JYD-test-2' grains.item max_open_file
JYD-test-2:
    ----------
    max_open_file:
      1024

页: [1]
查看完整版本: 集中化管理平台saltstack--grains(3)