背景:用户需要配置大量F5业务,一个一个配置起来比较慢,用户可以把配置梳理为一个表格,我们利用python脚本把表格信息配置到F5上。

一、Python 脚本展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# coding:utf-8

import csv
from f5.bigip import ManagementRoot as MR

mgmt=MR('192.168.10.84', 'admin', 'admin')

with open('create.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for vs in reader:
# print(vs['vs_destination'])
vs_=mgmt.tm.ltm.virtuals.virtual
if vs['pool_name'] is None :
vs_.create(name=vs['vs_name'], destination=vs['vs_destination'], ipProtocol=vs['vs_ipProtocol'],profiles=vs['profiles'], translateAddress=vs['translateAddress'],translatePort=vs['translatePort'], sourceAddressTranslation={'type': vs['snat_type']})
else :
pool_ = mgmt.tm.ltm.pools.pool
pool_.create(name=vs['pool_name'], loadBalancingMode=vs['pool_lbmode'], monitor=vs['pool_monitor'])
pool_a = mgmt.tm.ltm.pools.pool.load(name=vs['pool_name'], partition='Common')
pool_list = vs['pool_member']
new_vs = eval(pool_list)
for member in new_vs:
pool_a.members_s.members.create(partition='Common', name=member)
vs_.create(name=vs['vs_name'], destination=vs["vs_destination"], ipProtocol=vs['vs_ipProtocol'],profiles=vs['profiles'],translateAddress=vs['translateAddress'],translatePort=vs['translatePort'],sourceAddressTranslation={'type':vs['snat_type']},pool=vs['pool_name'],persist=vs['persistence'])
print("finish")

二、执行脚本

1、环境需求

  • python环境
  • f5-sdk 插件

2、Python 插件安装

1
pip install f5-sdk

3、脚本修改

(1)登录信息修改

1
mgmt=MR('192.168.10.84', 'admin', 'admin')

修改以上信息,分别对应 ('IP地址','用户名',admin密码')

(2)Python 运行路径修改

  • csv表格和python脚本在同一个目录
  • 切换python执行路径为Python脚本所在路径
    • 示例:如果csv文件和python都在桌面,则需要切换运行路径至桌面
    • image-20220607144627786
  • csv表格命名为create.csv

(3)运行脚本

1
2
3
4
python 脚本名称.py

# 示例
python test.py

三、表格展示

image-20220607142308974

四、csv 表格字段介绍

名称 解释
paration 分区名称,暂时只支持Commin分区
vs_name 根据情况随意填写,没要求,该项为必填项
vs_destination 填写格式 ip:port 示例: 1.1.1.1:80 该项为必填项。
vs_ipProtocol vs协议 ,可以填写 tcp,udp,any 该项为必填项。
profiles 可填写 fastL4(四层) , tcp(七层),更多可根据命令行查找。 该项为必填项。
translateAddress 地址转换 可填写 enabled , disabled 该项为必填项。
translatePort 端口转换 可填写 enabled , disabled 该项为必填项。
pool_name pool名称,可根据情况填写,没要求 该项为选填项。
pool_member pool成员 可填写一个至多个,当填写多个时,要写成列表格式。 示例: [‘1.1.1.1:90’,‘1.1.1.1:80’] 该项为选填项。
pool_monitor pool健康检查 可填写none,tcp,udp,gateway_icmp等。更多健康检查方式按照命令行选项的miontor进行填写。 该项为选填项。
pool_lbmode pool成员负载方式,可写round-robin,least-connections-member等,更多负载方式按照命令行选项的负载参数进行填写。 该项为选填项。
snat_type snat类型,目前只支持 none , automap ,暂不支持snatpool。该项为必填项。
persistence 会话保持,可以选择 source_addr , hash , none 等。该项为必填项。

五、测试效果

image-20220607142148677