这里再介绍下 saltstack api的使用
对于saltstack api他的的使用是相当的简单,最简单的一个例子:
In [8]: import salt.client In [9]: local = salt.client.LocalClient() In [10]: local.cmd('*', 'cmd.run', ['ip a'])
这个意思是调用cmd.run 传参数ip a 用来查看ip地址。
但是有的时候咱们会做非堵塞的处理,比如一个非常消耗时间的动作。我们不能在前端总是在等待,不能做别的事情。当然用了ajax之后你可以做别的事情,但是转跳到别的页面后你的ajax线程也就消失了,你不能获取刚才执行任务的返回值。
saltstack里有方案,那就是用 saltstack job管理
下面是官网的文档
http://docs.saltstack.com/en/latest/topics/jobs/index.html
查看还在运行的程序: salt-run jobs.active 查看以前的操作历史记录来: salt-run jobs.list_jobs 查看制定的jid,来查看返回的信息 salt-run jobs.lookup_jid <job id number>
在api这里操作job也相当的容易,和cli的用法是一样的,获取jid,然后不断的从jid获取数据。
通过任务号得出结果 import salt.runner opts = salt.config.master_config('/etc/salt/master') runner = salt.runner.RunnerClient(opts) #所有的任务号,以及执行的记录审计 runner.cmd('jobs.list_jobs', []) #通过任务号得出结果 runner.cmd('jobs.lookup_jid', ['20140224141910302282'])
我在51cto上写了一些saltstack的文章,有兴趣的朋友可以看看。
http://rfyiamcool.blog.51cto.com/1030776/1357677