python处理haproxy添加backend备忘-创新互联
# -*- 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()
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
为虹口等地区用户提供了全套网页设计制作服务,及虹口网站建设行业解决方案。主营业务为做网站、网站建设、虹口网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!当前文章:python处理haproxy添加backend备忘-创新互联
转载源于:http://pwwzsj.com/article/copsho.html