Saltstack | modules(五)

一、modules介绍

这里简单介绍下modules吧,modules是salt用于远程执行的核心,可以用来安装软件、重启服务、远程运行命令、传输文件等,系统本身自带了蛮多的 modules,当然你也可以自定义modules

二、modules使用

这里选取几个系统自带的modules测试下

# salt 'SquidMonitor-SZ' network.interfaces
SquidMonitor-SZ:
----------
eth0:
----------
hwaddr:
6c:f0:49:26:92:98
# salt 'SquidMonitor-SZ' disk.usage
SquidMonitor-SZ:
----------
/:
----------
1K-blocks:
221744836
available:
203275748
capacity:
4%
...

三、自定义modules

salt在安装后默认会自带很多modules,当然如果你有特殊需求的话也可以自定义modules

在master创建_modules目录

# mkdir /srv/salt/_modules && cd /srv/salt/_modules

然后在该目录写个python脚本,这里写的是采集每台squid的日志量

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: suse.py
import commands
def client_info():
result = {}
result['access.log.0_lines'] = commands.getoutput("wc -l /data/squid/logs/access.log.0 | awk '{print $1}'")
result['access.log.1_lines'] = commands.getoutput("wc -l /data/squid/logs/access.log.1 | awk '{print $1}'")
return result

同步刷新自定义modules到minions

# salt 'SquidMonitor-SZ' saltutil.sync_all
# salt 'SquidMonitor-SZ' saltutil.refresh_modules

上述完成后就可以测试了^^

# salt 'SquidMonitor-SZ' suse.client_info
SquidMonitor-SZ:
----------
access.log.0_lines:
5223883
access.log.1_lines:
1652243
collector.0_cursor:
5223883
collector.1_cursor:
1751589

四、使用module注意事项

master端定义modules默认是存放在/srv/salt/_modules/,需手动创建该目录,编写完modules之后运行saltutil.sync_all进行同步

另外有些时候同步完module,会出现无法采集到有些minion的自定义信息,这个时候可以运行saltutil.refresh_modules刷新下modules,当然为了保险起见,同步完都刷新下最好