saltstack-5 grainx组件

1、获取主机信息

根据grainx参数,过滤主机执行命令

salt -G 'os:CentOS' cmd.run 'df -h'

查看所有可以使用参数

salt '*' grains.ls

查看所有系统参数

salt '*' grains.items

查看那单项系统参数

salt 'db_01' grains.item server_id

2、配置属性

(1)minion端进行参数配置

查看配置文件:/et/salt/minion文件中,参数default_include,默认为minion.d/*.conf

在对应的路径下,进行配置文件配置,文件名和路径复制配置文件配置内容即可。我这里取名:zxw.conf

grains:
   roles:
     - webserver
     - memcache
   deployment: datacenter3
   cabinet: 13
   test: te

重启应用:service salt-minion restart

服务器端进行参数验证:

salt '*' grains.item roles deployment cabinet test

(2)master端进行参数配置

  • 生成_grains目录

查看master端配置文件/etc/salt/master,看file_roots对应路径,在此路径下生成_grains目录,执行命令:

install -d /srv/salt/_grains

进入目录编写代码

  • 写python代码

新建文件:sysprocess.py(此为3.5版本编写,由于客户端为minion2.7的,所以同步到客户端未能直接使用,又改写成注释部分,方可执行)

import os, sys, subprocess

def Grains_openfile():
    '''
    :return os max file of grains value
    '''

    grains = {}

    _open_file = 65536

    try:
        getulimit = subprocess.getstatusoutput('source /etc/profile ; ulimit -n')
        """
        getulimit = commands.getstatusoutput('source /etc/profile ; ulimit -n')
        python 2.0 use commands moudles
        if minion is python 2.0, you must use this command
        """
    except Exception as e:
        pass

    if getulimit[0] == 0:
        _open_file = int(getulimit[1])

    grains['max_open_file'] = _open_file

    return  grains

Grains_openfile()
  • master端同步代码到minion端
salt 'db_01' saltutil.sync_all

/var/cache/salt/minion/files/base/_grains目录下,可以看到临存储的文件

/var/cache/salt/minion/extmods/grains,下可以看到最终同步到客户端的为文件。

需要重在代码时执行:

salt 'db_01' sys.reload_modules

reload后,会生成python可执行代码pyc文件。默认不会自动生成,我这到是自动生成了

  • 结果验证
salt '*' grains.item max_open_file

db_02端,由于同步python文件为3.5的导致执行不了,固无返回结果。

原文地址:https://www.cnblogs.com/zxw-xxcsl/p/11418639.html