Python csv表格配置F5 LTM
背景:用户需要配置大量F5业务,一个一个配置起来比较慢,用户可以把配置梳理为一个表格,我们利用python脚本把表格信息配置到F5上。
一、Python 脚本展示
python
# 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 插件安装
shell
pip install f5-sdk
3、脚本修改
(1)登录信息修改
shell
mgmt=MR('192.168.10.84', 'admin', 'admin')
修改以上信息,分别对应 ('IP地址','用户名',admin密码')
(2)Python 运行路径修改
- csv表格和python脚本在同一个目录
- 切换python执行路径为Python脚本所在路径
- 示例:如果csv文件和python都在桌面,则需要切换运行路径至桌面
- csv表格命名为
create.csv
(3)运行脚本
shell
python 脚本名称.py
# 示例
python test.py
三、表格展示
四、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 等。该项为必填项。 |