salt 执行命令等待_saltstack异步执行命令

Saltstack异步执行命令

salt执行命令有时候会有超时的问题,就是命令下发下去了,部分主机没有返回信息,这时候就很难判断命令或任务是否执行成功。因此,salt提供异步执行的功能,发出命令后立即返回一个jid。然后我们就可以根据这个jid来查询任务是否执行成功。

命令行实现异步

参数--async,返回job ID,根据job ID我们可以查询执行结果。

salt --async '*' test.ping

salt-run jobs.lookup_jid 20161117163153353501

-v参数在返回结果的同时,一同返回本次任务的jid,如果超时还是会返回jid

salt -v '*' test.ping

API实现异步

任务执行代码样例,通过async方法执行异步命令获取返回job id,通过job方法查看执行结果。

import requests

import json

def async(fun, tgt):

"""

异步任务,获取jid

"""

params = {'client': 'local_async', 'fun': fun, 'tgt': tgt}

headers = {'X-Auth-Token': 登陆时获取的token}

try:

ret = requests.post(https://ip:port/, data=params, headers=headers, verify=False)

ret = json.loads(ret.text)

return ret['return'][0]['jid']

except Exception as err:

print err

def jobs_all(jid=None):

"""

job_id=None, 查看salt cache中所有的job任务的执行结果

job_id传值时,查看指定job id的执行结果

"""

headers = {'X-Auth-Token': 登陆时获取的token}

try:

if jid is None:

ret = requests.get(https://ip:port/jobs, headers=headers, verify=False)

else:

ret = requests.get('https://ip:port/jobs' + jid, headers=headers, verify=False)

ret = json.loads(ret.text)

return ret

except Exception as err:

logger.error(err)

jid = async('test.ping', '*')

jobs_all()

jobs_all(jid=jid)

本文出自https://www.cnblogs.com/shhnwangjian/p/6074445.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值