作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。

前兩篇網誌內我們就NSX Advanced Load Balancer內可以於Virtual Service UI介面內配置的四種Policies: Network Security / HTTP Security / HTTP Request / HTTP Response簡單做了介紹與釋例,如果大家的網站管理需求直接可以用這些Policies配置即可達成,是最簡便的方式。但某些狀況下,採用進階的Datascript工具,以編碼的方式來完成管理需求也是必要的。幾個狀況包括

  • 我們想要實作的功能,在Datascript內有對應的Function,但在UI介面內沒有做出來無法配置
  • 需要的條件式比對複雜,沒辦法用簡單的UI介面完成
  • 管理者想要配置的物件繁多,比如說有上百個轉址需求配置,以程式碼方式維護與修改較為簡單
  • 管理者自身相當熟悉以程式碼方式進行維運管理工作

因此本篇內想就 Datascript這個工具與大家做簡單的介紹。Datascript本身是基於Lua程式語言,並且由NSX Advanced Load Balancer提供大量功能函式庫的編碼工具。Datascript具有下列特性:

  • 透過不同功能函式庫,提供主要(但不限於)HTTP協議的進階操作與控制
  • 可提供標準程式語言的運作邏輯(if/else, for… )、運算(數學運算、字串比對)、設定變數等功能
  • 管理者可配置Datascript於 Virtual Service 內,作為 Policies 的輔助,提供基於編程,但更為彈性、進階的操作
  • Datascript配置時要依附於事件 (Event) 如 HTTP Request / HTTP Response,在對應事件發生時執行
  • Datascript在Controller 內配置,但直接運作於 Data-Plane 內(服務引擎)

在下篇網誌我會找幾個Datascript配置範例讓各位做為參考。但因為本網誌並不是寫程式專精,這裡我反而比較希望將一些重要的Datascript學習鏈結整理出來,如果大家真的想做進一步了解,能夠快速地找到相關參考資訊。下面是我認為學習Datascript時的重要鏈結:

  • Datascript總覽:https://avinetworks.com/docs/latest/datascript-guide/
  • Lua Script官方手冊:https://www.lua.org/pil/contents.html
  • Datascript主要支持的事件種類:https://avinetworks.com/docs/latest/datascript-events/
  • Datascript功能函式庫總覽:https://avinetworks.com/docs/latest/datascript-functions/
  • Datascript範例庫:https://github.com/vmware/nsx-alb-datascript-samples-library

在上面鏈結內最重要的是『Datascript功能函式庫總覽』以及『Datascript範例庫』這兩個。如果大家原本就有一些基礎的Script與C語言編寫經驗,要看懂Datascript內的Lua語法其實不難。簡單的入門方式是直接到Datascript範例庫裡面找有興趣的例子打開學習,比如說下圖內,我們到範例庫找Security類型內的HTTP to HTTPS Port Redirect這個範例,點擊後就會出現參考說明與簡單程式碼:

而如果程式碼範例內的Functions看不懂,比如說上面的avi.http.redirect() 這個函式想要進一步了解,那就可以到Datascript功能函式庫總覽內去找。點擊鏈結後,會出現針對這個功能函式的說明,通常也會包含相關的使用範例:

下篇網誌內我想要直接用實際的舉例來展示Datascript要怎麼寫,希望給大家更直覺的感受。