本人从18年下旬,开始从事F5负载均衡的自动化开发工作,主要使用python编程语言,开发的F5功能模块为LTM和GTM。

F5开发简介

1、F5管理模式

F5的管理模式主要有4种(不包含snmp),分别为web页面,tmsh命令行,restful api,以及soap api。这其中,web页面和tmsh命令行大多数F5管理员都用过,也是传统运维模式,而restful api和soap api需要开发第三方程序去调用,有一定使用门槛。这两者的区别为

  • soap api比较老,数据交换格式为http + xml。接口风格为soap,包含很多一次性拉取全部配置的接口,资源消耗量小,有些地方比rest实用。
  • restful api比较新,数据交换格式使用http + json。标准restful风格,调用结构清晰,但部分接口华而不实,资源消耗量大,甚至现网配置太多会出现接口调用失败。

本文档将大部分使用restful api进行介绍,对需要使用soap的部分也会做一定介绍。这两种api都有python已封装好的第三方库。

2、 关于F5版本和api支持情况

  • soap:支持v10以及以上所有版本,但v11与v10相比改动较大,其中改动部分soap可能会不支持。
  • rest:不支持v10,支持v11以上所有版本,v12和v11相比又有比较大的修改,导致部分功能v12和v11的接口形式有变化。

以上2种api都有F5官方资料,全英文,链接如下:https://clouddocs.f5.com/api/

3、 使用python的第三方库进行开发

可以使用python的requests包直接与F5进行交互,但F5有对接口进行封装的第三方库,可以避免重复造轮子。本人使用的python版本为3.7.5,restful的第三方库为f5-sdk,soap的第三方库为bigsuds。其中rest的封装库有文档,链接如下:https://f5-sdk.readthedocs.io/en/latest/

基本使用方式为使用ip地址、用户名、密码进行认证,使用web页面登陆的用户名和密码。

安装第三方库:

pip install f5-sdk
pip install bigsuds

rest接口认证方式:

import f5.bigip
bigipRest = f5.bigip.ManagementRoot('192.168.1.45', 'admin', '123456')

soap认证方式:

import bigsuds
bigipSoap = bigsuds.BIGIP('192.168.1.45', 'admin', '123456')

上述获取到的bigipRestbigipSoap是一个可执行对象,对其进行各种操作即可控制此F5。

4、 F5接口的rest风格简介

什么是rest风格?百度出来的结果是“表述性状态转移”,是一组架构约束条件和原则,一种接口风格和实现。F5上全部的rest设计原则可以写一大本厚厚的教材,因此在此我不做详细描述,只举例说几个常用的,不求大而全只求日常用到的能了解。

以下几个名词需要理解:

  • Resource:资源,可以理解为F5上的某个配置项,比如某个pool就是一个Resource,某个vs也是一个Resource。
  • Collection:集合,Collection是一组Resource的抽象展示,比如某台ltm上全部的pool就是一个Collection。
  • Subcollection:子集合,Subcollection是在某个Resource下的一种配置项,比如pool下面有members,那么某个pool下的所有members就是一组Subcollection。
  • Subcollection Resource:子资源,顾名思义,在Subcollection下的资源就是SR,比如某个pool下的某个member。
  • Organizing Collection:组织集合,这是最大的一层概念,简单理解的话,ltm就是一个OC,gtm又是一个OC,他是一组全部功能的总体实现。
  • Unnamed Resource:未命名资源,一般是F5上自带的资源项,不可以被删除或者新增,很少用到。

F5上对某个资源进行配置操作时,就是以上述名词的组合定位的,比如

http://192.168.1.1/mgmt/tm/ltm/pool/~Common~mypool/members/~Common~1.1.1.1:80
|----|--|---|----|--------------|-------|-------------|
|root|OC|OC |Coll| Resource | SC |SubColl Resrc|

比如上述url就代表了这台F5 192.168.1.1上的ltm(OC),在pool这个配置大类(Collection)中的这个/Common/mypool(Resource),下面的members中(Subcollection),存在一个/Common/1.1.1.1:80(Subcollection Resource)的配置。这时候通过http的方法(get、post、delete等),就可以对它进行查询/变更/删除等操作了。(Common前后使用~代替/的原因是因为url中用/代表路径分隔,因此只好用~替代了)

上面的表述结构虽然清晰,但还是有点复杂,python的第三方库对其进行了良好的封装。封装后的使用方法更容易理解和使用,将在后面几篇文章中介绍。

F5 api接口开发实战(一)的更多相关文章

  1. F5 api接口开发实战手册(二)

    F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...

  2. API接口开发 配置、实现、测试

    Yii2 基于RESTful架构的 advanced版API接口开发 配置.实现.测试 环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到 ...

  3. 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...

  4. 示例浅谈PHP与手机APP开发,即API接口开发

    示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...

  5. 利用postman进行api接口开发

    场景: api接口开发时,经常使用一些工具来帮助设计开发.Yapi主要是在设计阶段进行api接口设计,统一前后端参数请求和返回体:swagger主要在开发阶段,用来显示实际上后端开发进度和接口情况:p ...

  6. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  7. 浅谈 PHP 与手机 APP 开发(API 接口开发) -- 转载

    转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:不可以,因 ...

  8. 浅谈 PHP 与手机 APP 开发(API 接口开发)

    本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人一.先简单回答两个问题:1.PHP 可以开发客户端?答:不可以, ...

  9. Restful风格API接口开发springMVC篇

    Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...

随机推荐

  1. JAVAEE_Servlet_17_关于乱码问题

    关于乱码问题 * 数据传递过程中的乱码 解释:数据传递过程中的乱码是指: 将数据从浏览器发送给服务器的时候,服务器接收到的数据是乱码的. - ISO-8859-1 是国际标准码,不支持中文编码,它兼容 ...

  2. 12- Jmeter逻辑控制器

    正则表达式 -1代表所有 1代表第一个 0表示随机 逻辑控制器 仅一次控制器 转换控制器(广义并发,构造混合场景) 引入函数助手 并发: 广义并发的并发: 还可以添加两个线程组: 一个线程组访问 首页 ...

  3. 缓冲区溢出分析第06课:W32Dasm缓冲区溢出分析

    漏洞报告分析 学习过破解的朋友一定听说过W32Dasm这款逆向分析工具.它是一个静态反汇编工具,在IDA Pro流行之前,是破解界人士必然要学会使用的工具之一,它也被比作破解界的"屠龙刀&q ...

  4. hdu5248序列变换(二分+贪心)基础题

    题意(中文的直接粘题意吧)                                                                                      序 ...

  5. POJ1611基础带权并查集

    题意:       有一个人生病了,和他一个社团或者间接和他有联系的人都会生病,问一共有多少人生病了. 思路:       比较简单和基础的题,带权并查集中的一种,就是记录更新集合元素个数,这个题目我 ...

  6. (翻译)Attacking Interoperability(攻击互操作性)in Black Hat 2009 研究报告

    前言 攻击互操作性(Attacking Interoperability)是 Mark & Ryan & David 发表于 2009 年的美国黑帽大会(Black Hat)上的一份研 ...

  7. Bugku-flag.php

    flag.php 目录 flag.php 题目描述 解题过程 题目描述 点了login咋没反应 提示:hint 解题过程 fuzz 打开发现是个登录页面,点击login没反应,看了源码,action= ...

  8. MySQL三种报错注入方式下的insert,update,delete命令注入示例

    select 查询数据(大部分) 在网站应用中进行数据显示查询操作 insert 插入数据 在网站应用中进行用户注册添加等操作 delete 删除数据 后台管理里面删除文章删除用户等操作 update ...

  9. 关于ajax的数据传输类型,字符串传输

  10. where优先级

    select name from emply where id >5; 先找表from emply 再找条件 where id >5 最后打印 你想打印的字段 可以把select看成打印 ...