F5 api接口开发实战(一)
本人从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')
上述获取到的bigipRest和bigipSoap是一个可执行对象,对其进行各种操作即可控制此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接口开发实战(一)的更多相关文章
- F5 api接口开发实战手册(二)
F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...
- API接口开发 配置、实现、测试
Yii2 基于RESTful架构的 advanced版API接口开发 配置.实现.测试 环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到 ...
- 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 示例浅谈PHP与手机APP开发,即API接口开发
示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...
- 利用postman进行api接口开发
场景: api接口开发时,经常使用一些工具来帮助设计开发.Yapi主要是在设计阶段进行api接口设计,统一前后端参数请求和返回体:swagger主要在开发阶段,用来显示实际上后端开发进度和接口情况:p ...
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)
环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...
- 浅谈 PHP 与手机 APP 开发(API 接口开发) -- 转载
转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:不可以,因 ...
- 浅谈 PHP 与手机 APP 开发(API 接口开发)
本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人一.先简单回答两个问题:1.PHP 可以开发客户端?答:不可以, ...
- Restful风格API接口开发springMVC篇
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
随机推荐
- Kickdown UVA - 1588
A research laboratory of a world-leading automobile company has received an order to create a specia ...
- Manachar's Algorithm
1.模板 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int MAX=21000020; 4 char s[MAX], ...
- B - Rikka with Graph HDU - 5631 (并查集+思维)
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some mat ...
- golang channel的行为
1. 读nil的channel是永远阻塞的.关闭nil的channel会造成panic. 2. closed channel的行为: (1)向close的channel发消息会panic,关闭一个已经 ...
- Linux连接Windows服务器以及文件传输方法
Ubantu系统上连接Windows服务器,操作步骤 安装rdesktop sudo apt-get install rdesktop 连接命令 rdesktop -f IP -r disk:mydi ...
- hdu4536 水搜索
题意: XCOM Enemy Unknown Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others ...
- Android Dex分包之旅
http://yydcdut.com/2016/03/20/split-dex/ http://blog.zongwu233.com/the-touble-of-multidex http://tec ...
- ListView 加载数据时 触摸报错
问题起因: 在做一个从sd卡中加载数据显示在ListView中,由于数据可能比较多,考虑到用户体验,就使用AsyncTask来异步加载,数据一条一条的添加至ListView中. 开始数据比较少的时候, ...
- (8)MySQL进阶篇SQL优化(InnoDB锁-共享锁、排他锁与意向锁)
1.锁的分类 锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制.之前MyISAM锁章节已经讲过锁分类,而InnoDB锁按照粒度分为锁定整个表的表级锁(table-level l ...
- JetBrains系列软件用法
IDEA JSON格式化 IDEA的JSON_Formatter插件,下载地址 安装方式:File->Settings->Plugins,然后选择INstall plugin from d ...