# -*- 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()
當(dāng)前名稱:python處理haproxy添加backend備忘
URL網(wǎng)址:http://m.newbst.com/article8/jpjpop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、企業(yè)建站、虛擬主機(jī)、App開發(fā)、軟件開發(fā)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)