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的导致执行不了,固无返回结果。