今天简单了看了一下 salt自定义模块,发现自定义的模块可以省事很多,也很灵活,可以做很多事情
模块路径必须在master定义的路径下
file_roots:
base:
- /srv/salt/base
prod:
- /srv/salt/prod
我的路径在 /srv/salt/base 所以我定义文件的时候不需要在 当前路径的_modules下创建模块脚本
mkdir /srv/salt/base/_modules
cat /srv/salt/base/_modules/nginx.py
#!/usr/bin/env python
import os
import commands
import time
def version():
version = commands.getoutput('nginx -v')
if 'version' in version:
return version
return False
def service(cmd):
parm = ['start','stop','status','restart','reload']
if cmd not in parm:
return 'command not exists'
command = commands.getoutput('/etc/init.d/nginx %s' % cmd)
return command
这个脚本主要是查看nginx 版本 和 nginx的启动状态
编写完之后 大家需要用salt去同步一下
salt -N node saltutil.sync_modules
推送过去之后,重点来了,大家能看出来 我上面两个函数,的函数名称,这个执行的时候要用的到,以及模块名,在salt里面 执行模块是 脚本名+函数名称的方式 每一次返回必须用return
salt -N node nginx.version
192.168.2.67:
nginx version: nginx/1.10.2
192.168.2.81:
nginx version: nginx/1.10.2
192.168.15.73:
nginx version: nginx/1.10.2
salt -N node nginx.service status
192.168.2.67:
nginx (pid 17398) is running...
192.168.2.81:
nginx (pid 28472) is running...
192.168.15.73:
nginx (pid 16823) is running...