saltstack异步执行命令

salt执行命令有时候会有超时的问题,就是命令下发下去了,部分主机没有返回信息,这时候就很难判断命令或任务是否执行成功。
好在salt有异步执行的功能,发出命令后立即返回一个jid。然后我们就可以根据这个jid来查询任务是否执行成功。
命令行类似这样使用:
salt命令用到了async参数,默认是sync参数,salt-run命令用到了jobs.lookup_jid参数。

[root@xxx ~]# salt --async test01 cmd.run "echo 'test'"
Executed command with job ID: 20150915151813222323
[root@xxx ~]# salt-run jobs.lookup_jid 20150915151813222323
Fabric:
    test
[root@xxx ~]# 
#还有个-v参数在返回结果的同时,一同返回本次任务的jid,如果超时还是会返回jid的。
[root@test ~]# salt -v test01 test.ping
Executing job with jid 20150917172323566343
-------------------------------------------
test01:
    True
[root@test ~]# 

如果是调用saltapi来实现异步执行语句和获取jid信息,参数可以这样:

params = {'client':'local_async', 'fun':'test.echo', 'tgt':'test01', 'arg1':'hello'}
params = {'client':'runner', 'fun':'jobs.lookup_jid', 'jid': '20150827163231404925'}

上面那个saltapi根据jid查看执行结果使我纠结了一段时间,后来看了saltapi的文档才明白。
文章出处:http://www.xiaomastack.com/2015/09/17/saltstack-async/

1 Comment

 Add your comment
  1. 加个QQ 923401910 嘛,小马哥,技术交流

发表评论:

你的电子邮件地址将不会被公开.

66 − = 65