1、前期调研
1、别人家的
https://www.cnblogs.com/ssyfj/p/9060367.html#top
https://www.cnblogs.com/evilliu/articles/6137336.html
2、我的salt平台调研
2、技术难点
1、同步执行
1、saltapi传送command过去,此时处于等待中,一般设置TIMEOUT,来控制执行时间
2、对于时间执行长的command,比如:top -b -n 10 或python test.py 之类的,根本不能用超时时间
3、还有一类,只是返回执行结果,并不能返回执行是否成功,没有 retcode (或许哪里可以设置添加该字段,目前我还没学到)
2、异步执行
1、利用local_sync,来进行异步执行。
2、发送command过去,saltapi会立刻返回jobid。
3、根据jobid去查询命令结果
痛点:
1、得到jobid,什么时候查询结果呢?
有些命令或者脚本比较耗时,比如:top -b -n 10 或python test.py
方法1:
做过的操作,设置count=10,不断循环读取jobid中的ret,这样会被打死吗
另外,如果还是没有执行完成,返回的是 {},但是过一会命令就执行完了,并不能说执行失败
方法2:
前端不断发送ajax请求,去查询,这样也会被打死
2、jobid得到的结果,会在cache中缓存24小时(默认)
如果,得到jobid的话,用户并没有 lookup_jobid
前端又是何时去lookup呢?过了24小时,data就会消失,如果再第三天,看到该命令的执行结果呢?
3、解决方法:
目前看到的是,利用--return mysql 组件
临时表:
在master的配置文件中配置,设置mysql相关配置
执行完成会自动,在mysql插入data,把该表当做临时表
然后存入,项目对应的数据库表中,
目前还在探索中...............