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

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

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

文章出处:http://www.xiaomastack.com/2015/09/17/saltstack-async

saltstack异步执行命令》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注