salt执行命令有时候会有超时的问题,就是命令下发下去了,部分主机没有返回信息,这时候就很难判断命令或任务是否执行成功。
好在salt有异步执行的功能,发出命令后立即返回一个jid。然后我们就可以根据这个jid来查询任务是否执行成功。
命令行类似这样使用:
salt命令用到了async参数,默认是sync参数,salt-run命令用到了jobs.lookup_jid参数。
1 | $ salt --async test01 cmd.run "echo 'test'" |
如果是调用saltapi来实现异步执行语句和获取jid信息,参数可以这样:
1 | params = {'client':'local_async', 'fun':'test.echo', 'tgt':'test01', 'arg1':'hello'} |
上面那个saltapi根据jid查看执行结果使我纠结了一段时间,后来看了saltapi的文档才明白。