# -*- 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()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
為虹口等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及虹口網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為做網(wǎng)站、網(wǎng)站建設(shè)、虹口網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
文章題目:python處理haproxy添加backend備忘-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.rwnh.cn/article40/copsho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、ChatGPT、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、App開(kāi)發(fā)
聲明:本網(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)
猜你還喜歡下面的內(nèi)容