使用python更新haproxy配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python更新haproxy配置文件相关的知识,希望对你有一定的参考价值。

老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改,不再是以往的打开文件进行直接操作了。

现有ha配置文件如下:

技术分享
 1 global       
 2         log 127.0.0.1 local2
 3         daemon
 4         maxconn 256
 5         log 127.0.0.1 local2 info
 6 defaults
 7         log global
 8         mode http
 9         timeout connect 5000ms
10         timeout client 50000ms
11         timeout server 50000ms
12         option  dontlognull
13 
14 listen stats :8888
15         stats enable
16         stats uri       /admin
17         stats auth      admin:1234
18 
19 frontend oldboy.org
20         bind 0.0.0.0:80
21         option httplog
22         option httpclose
23         option  forwardfor
24         log global
25         acl www hdr_reg(host) -i www.oldboy.org
26         use_backend www.oldboy.org if www
27 
28 backend www.oldboy.org
29         server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
30 
31 backend buy.oldboy.org
32         server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
33 原配置文件
View Code

 

实现python代码如下,python3.X

技术分享
 1 # -*- coding:utf-8 -*-
 2 def fetch(backend):
 3     result = []
 4     with open(ha.conf, r) as f:
 5         flag = False
 6         for line in f:
 7             if line.strip().startswith(backend) and line.strip() == "backend " + backend:
 8                 flag = True
 9                 continue
10             if flag and line.strip().startswith(backend):
11                 break
12             if flag and line.strip():
13                 result.append(line.strip())
14 
15     return result
16 def add(backend,record):
17     record_list = fetch(backend)
18     #print (type(record_list))
19     if not record_list:
20     #1、无backend时,将旧文件全部复制到新文件中,再将查询的记录添加入新文件。
21         with open(ha.conf, r) as old,open(newha.conf,w) as new:
22             for line in old:
23                 new.write(line)
24                 #复制
25             new.write(\\nbackend  + backend + \\n)
26             new.write(  * 8 + record + \\n)
27             #此两行为添加新记录(未查找到的)
28     else:
29         if record in record_list:
30         #backend存在,record也存在
31             pass
32         else:
33         #backend存在,record不存在
34             record_list.append(record)
35             #将输入的不存在的record添加入record_list
36             with open(ha.conf, r) as old, open(newha.conf, w) as new:
37                 flag = False
38                 for line in old:
39                     if line.strip().startswith(backend) and line.strip() == "backend " + backend:
40                         flag = True
41                         new.write(line)
42                         #将查找到的backend写入新文件
43                         for new_line in record_list:
44                             new.write(  * 8 + new_line + \\n)
45                             #将新记录写入新文件
46                     if flag and line.strip().startswith(backend):
47                     #下一个backend,此时flas为True
48                         flag = False
49                         #将flag重置为False
50                         new.write(line)
51                         #仅为写入其他backend文件
52                         continue
53                         #防止重复写入
54                     if line.strip() and not flag:
55                         new.write(line)
56 ret = add("www.oldboy.org",server 222.2.2.2 222.2.2.2 weight 22 maxconn 2222)
View Code

 

以上是关于使用python更新haproxy配置文件的主要内容,如果未能解决你的问题,请参考以下文章

python练习_module01-3-haproxy配置文件操作

初学 python 之 HAproxy配置文件操作

修改haproxy配置文件

Python小程序—修改haproxy配置文件

Python-Day5修改haproxy配置文件

Python3.5 day3作业二:修改haproxy配置文件。