日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

ansible2.4 api调用

發(fā)布時(shí)間:2025/4/16 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ansible2.4 api调用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
AnsibleAPI.py?實(shí)現(xiàn)多進(jìn)程發(fā)布代碼#!/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__':#?創(chuàng)建對象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()#?等待子進(jìn)程結(jié)束,主進(jìn)程退出#for?p?in?processes:# p.join() #可以加浮點(diǎn)數(shù)參數(shù),等待多久就不等了p1.start()if?p1.is_alive():print('正在發(fā)布')else:print('發(fā)布結(jié)束')


轉(zhuǎn)載于:https://blog.51cto.com/haoyonghui/2052084

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。