我们使用的salt是可以热更新模块的,最近在看func,所以想实现一番
代码请猛击下面的地址,比较暴力的实现方法
假设你增加一个文件,里面有一个ping方法
/usr/local/lib/python2.7/site-packages/func/minion/modules/mc_ping.py
则直接执行下面的命令即可,无需重启func
func “*129*” call mc_ping ping
我们使用的salt是可以热更新模块的,最近在看func,所以想实现一番
代码请猛击下面的地址,比较暴力的实现方法
假设你增加一个文件,里面有一个ping方法
/usr/local/lib/python2.7/site-packages/func/minion/modules/mc_ping.py
则直接执行下面的命令即可,无需重启func
func “*129*” call mc_ping ping
同样的程序,在CentOS上可以正常执行
func “*” ping
但在openSUSE上就有问题,经过调试发现,openSUSE下,site-packages有2个路径
通过下面的命令获取的是
import distutils.sysconfig
distutils.sysconfig.get_python_lib()
‘/usr/lib/python2.7/site-packages’
但func实际安装在
/usr/local/lib/python2.7/site-packages/func
需要修改代码:
vi /usr/local/lib/python2.7/site-packages/func/module_loader.pymodule_file_path = “%s/%s” % (python_path, path)
下添加
if not os.path.isdir(module_file_path):
python_path = ‘/usr/local/lib/python2.7/site-packages’
module_file_path = “%s/%s” % (python_path, path)