天天看點

F5 api接口開發實戰(一)

本人從18年下旬,開始從事F5負載均衡的自動化開發工作,主要使用python程式設計語言,開發的F5功能子產品為LTM和GTM。

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已封裝好的第三方庫。

soap:支援v10以及以上所有版本,但v11與v10相比改動較大,其中改動部分soap可能會不支援。

rest:不支援v10,支援v11以上所有版本,v12和v11相比又有比較大的修改,導緻部分功能v12和v11的接口形式有變化。

以上2種api都有F5官方資料,全英文,連結如下:https://clouddocs.f5.com/api/

可以使用python的requests包直接與F5進行互動,但F5有對接口進行封裝的第三方庫,可以避免重複造輪子。本人使用的python版本為3.7.5,restful的第三方庫為f5-sdk,soap的第三方庫為bigsuds。其中rest的封裝庫有文檔,連結如下:https://f5-sdk.readthedocs.io/en/latest/。

基本使用方式為使用ip位址、使用者名、密碼進行認證,使用web頁面登陸的使用者名和密碼。

安裝第三方庫:

rest接口認證方式:

soap認證方式:

上述擷取到的<code>bigipRest</code>和<code>bigipSoap</code>是一個可執行對象,對其進行各種操作即可控制此F5。

什麼是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上對某個資源進行配置操作時,就是以上述名詞的組合定位的,比如

比如上述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的第三方庫對其進行了良好的封裝。封裝後的使用方法更容易了解和使用,将在後面幾篇文章中介紹。

繼續閱讀