saltstack异步执行命令

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

1
2
3
4
5
6
7
8
9
10
11
12
13
$ salt --async test01 cmd.run "echo 'test'"
Executed command with job ID: 20150915151813222323
$ salt-run jobs.lookup_jid 20150915151813222323
Fabric:
test
$
#还有个-v参数在返回结果的同时,一同返回本次任务的jid,如果超时还是会返回jid的。
$ salt -v test01 test.ping
Executing job with jid 20150917172323566343
-------------------------------------------
test01:
True
$

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

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

上面那个saltapi根据jid查看执行结果使我纠结了一段时间,后来看了saltapi的文档才明白。

----------------本文结束 感谢阅读----------------