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://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_cherrypy.html#id1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM