码迷,mamicode.com
首页 > 编程语言 > 详细

python 处理haproxy 添加backend 备忘

时间:2018-11-30 18:23:20      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:host   hunk   ini   tin   with open   with   tar   on()   文件   

# -*- coding:utf-8 -*- import re,os from io import BytesIO from saltapiauth import SaltApi from jinja2 import Template salta = SaltApi() # contents is dict def Tempdrawing(contents, flag=‘proxy‘): try: if flag == ‘proxy‘: tempfile = os.path.join(‘static‘,‘nginx_models‘,‘nginx_proxy_model‘) elif flag == ‘sshcon‘: tempfile = os.path.join(‘static‘,‘nginx_models‘,‘nginx_ssh_model‘) else: raise Exception() with open(tempfile) as f: temp_str = f.read() template = Template(temp_str) result = template.render(contents) return result except Exception as e: print(str(e)) return str(e) class OptHaproxy(): def __init__(self): self.filename = ‘/etc/haproxy/haproxy.cfg.ori‘ self.hostname = ‘Min-Centos1‘ self.statename = ‘haproxy‘ self.pre_modelfile = ‘haproxy_model_pre‘ self.after_modelfile = ‘haproxy_model_after‘ def getinfo(self): command = ‘cat %s‘ %self.filename res = salta.host_remote_execution_module(self.hostname,‘cmd.run‘,command) # try: # os.remove(self.pre_modelfile) # except Exception as e: # pass with open(self.pre_modelfile,‘w‘) as f: f.write(res[self.hostname]) return res[self.hostname] def showinfo(self): sh = self.getinfo() print(sh) def modify(self,itname,*value): flag = 1 preflag = 1 finflag = 1 server_set = [] # 将需要修改的部分提取出,并去重 with open(self.pre_modelfile,‘r‘) as pre: for line in pre: if line.startswith(‘backend‘): preflag = 1 if preflag == 2: if line.strip() != ‘‘: server_set.append(line) if re.search(itname,line) and line.startswith(‘backend‘): preflag = 2 continue for i in value: fina = ‘%s%s%s‘%(‘\t‘,i,‘\n‘) if fina not in server_set: server_set.append(fina) print(server_set) ## 将需要修改的部分添加到配置文件中 with open(self.pre_modelfile,‘r‘) as pref ,open(self.after_modelfile,‘w‘) as afterf: for line in pref: if flag == 1 and finflag == 1: afterf.write(line) if re.search(itname,line) and line.startswith(‘backend‘): flag = 2 continue if flag == 2 and finflag == 1: for unit in server_set: afterf.write(unit) finflag = 2 flag = 1 continue if line.startswith(‘backend‘): nline = ‘%s%s‘%(‘\n‘,line) afterf.write(nline) finflag = 1 def deploy(self): fio = BytesIO() with open(self.after_modelfile,‘r‘) as af: for chunk in af: fio.write(chunk) depres = salta.server_hosts_pillar(self.hostname,self.statename,pillar={‘config‘ : fio.getvalue()}) print(depres) def check(self): chkres = salta.host_remote_execution_module(self.hostname,‘service.status‘,self.statename) print(chkres) if __name__ == ‘__main__‘: ha = OptHaproxy() ha.getinfo() # ha.showinfo() val = ‘server web-node4 192.168.44.40:80 check weight 80‘ val2 = ‘server web-node3 192.168.44.30:88 check weight 50‘ ha.modify(‘backend_www_example_com‘,val,val2) ha.deploy()

python 处理haproxy 添加backend 备忘

标签:host   hunk   ini   tin   with open   with   tar   on()   文件   

原文地址:http://blog.51cto.com/wuyebamboo/2324456

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!