本人从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. Queue API的几种实现详解

    目录 Queue API的几种方法的使用 ArrayBlockingQueue原理及源码解析 ArrayBlockingQueue的成员变量 ArrayBlockingQueue的offer和put方 ...

  2. JAVAEE_Servlet_19_重定向可以解决页面刷新问题(sendRedirect)

    重定向可以解决页面刷新问题(sendRedirect) 在向数据库中添加数据的时候,如果使用转发(getRequestDispatcher),数据插入成功后,转发到提示插入成功页面,在数据插入成功页面 ...

  3. Git 常用命令总结,将会持续更新

    平常在windows电脑上使用Git Extensions 工具比较多,大部分的常用指令都可以通过点点点就可以完成.在mac电脑上的话使用sourcetree工具.但有时候也会直接通过git命令,很多 ...

  4. Android trap攻防思路整理

    Android trap攻防                                                                      图/文 h_one 0x01 反 ...

  5. DVWA之File Inclusion

    File Inclusion File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),req ...

  6. APP的编译和反编译

    目录 Apktool的准备 Apktool解压APP Apktool打包APP 对APP进行签名

  7. 复现Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

    靶机IP(Ubuntu):192.168.43.185 攻击IP(kali):192.168.43.37 一.docker环境搭建 打开vulhub靶机,目录定位到vulhub-master/shir ...

  8. spring-boot-maven-plugin not found的解决方案

    spring-boot-maven-plugin not found 在maven测试的生命周期都没有错,但是就是爆红 参考了很多的链接,没有成功解决,最后得到真正有帮助的方法,添加springboo ...

  9. GUI基础知识点

    简介 GUI的核心技术:AWT(是Swing 的前身) Swing 不流行的原因 界面不美观 运行需要jre环境(可能一个项目的大小比jre还要大) 为什么我们需要学习 了解MVC架构和监听 AWT ...

  10. python三元(三目)运算

    传统的if,else写法 三元运算 name="alex" if 1==1 else "SB"