日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ansible2.4 api调用

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ansible2.4 api调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AnsibleAPI.py?實現多進程發布代碼#!/usr/bin/python #?--*--?coding:utf-8?--*--import?json import?logging from?ansible.parsing.dataloader?import?DataLoader from?ansible.vars.manager?import?VariableManager from?ansible.inventory.manager?import?InventoryManager from?ansible.playbook.play?import?Play from?ansible.executor.task_queue_manager?import?TaskQueueManager from?ansible.executor.playbook_executor?import?PlaybookExecutor from?ansible.plugins.callback?import?CallbackBase from?collections?import?namedtuple from?ansible?import?constants?as?C import?ansible.executor.task_result import?multiprocessingclass?ResultsCollector(CallbackBase):def?v2_runner_on_ok(self,result):host?=?result._hostlogging.basicConfig(level=logging.DEBUG,format='%(asctime)s?%(filename)s[line:%(lineno)d]?%(levelname)s?%(message)s',datefmt='%a,?%d?%b?%Y?%H:%M:%S',filename='/root/cmdb/script/publish.log',filemode='w')logging.warning('===v2_runner_on_ok===host=%s===result=%s'?%?(host,?result._result))#print(json.dumps({host.name:?result._result},?indent=4))def?v2_runner_on_failed(self,result,ignore_errors=False):host?=?result._hostlogging.warning('===v2_runner_on_failed====host=%s===result=%s'?%?(host,?result._result))def?v2_runner_on_unreachable(self,result):host?=?result._hostlogging.warning('===v2_runner_on_unreachable====host=%s===result=%s'?%?(host,?result._result))class?AnsibleAPI(object):def?__init__(self,hostlist,image_name,playbooks,?*args,?**kwargs):self.playbooks?=?playbooksself.passwords?=?Noneself.callback?=?NoneOptions?=?namedtuple('Options',['connection','remote_user','ask_sudo_pass','verbosity','ack_pass','module_path',?'forks',?'become',?'become_method','become_user','check',?'listhosts',?'listtasks',?'listtags','syntax','sudo_user',?'sudo',?'diff'])self.options?=?Options(connection='smart',remote_user='root',ack_pass=None,sudo_user='root',forks=5,?sudo='yes',?ask_sudo_pass=False,?verbosity=5,module_path=None,become=True,?become_method='sudo',?become_user='root',check=None,?listhosts=False,listtasks=False,?listtags=None,?syntax=None,diff=False)self.loader?=?DataLoader()self.inventory?=?InventoryManager(loader=self.loader,sources=['hosts'])self.variable_manager?=?VariableManager(loader=self.loader,inventory=self.inventory)self.variable_manager.extra_vars?=?{"image_name":?image_name,'host':hostlist}def?runplaybook(self):playbook?=?PlaybookExecutor(playbooks=self.playbooks,inventory=self.inventory,variable_manager=self.variable_manager,loader=self.loader,options=self.options,passwords=None)playbook._tqm._stdout_callback?=?ResultsCollector()playbook.run()if?__name__?==?'__main__':#?創建對象an1?=?AnsibleAPI('192.168.194.129,192.168.194.128','common-oss-dc3a25.tar',['/etc/ansible/update.yml'])#an2?=?AnsibleAPI('192.168.194.128','common-oss-dc3a25.tar',['/etc/ansible/update.yml'])#processes?=?[]p1?=?multiprocessing.Process(name='process_one',target=an1.runplaybook)#p2?=?multiprocessing.Process(name='process_two',target=an1.runplaybook)#processes.append(p1)#processes.append(p2)#for?p?in?processes:# p.start()#?等待子進程結束,主進程退出#for?p?in?processes:# p.join() #可以加浮點數參數,等待多久就不等了p1.start()if?p1.is_alive():print('正在發布')else:print('發布結束')


轉載于:https://blog.51cto.com/haoyonghui/2052084

總結

以上是生活随笔為你收集整理的ansible2.4 api调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。