這篇文章比較像我個人心得,不會有技術分享的部份。我會跟大家分享一些網路自動化概念。
理論上也許會有,但實務上想告訴大家目前應該沒有統一的標準或實作法。我們可以想一想自家管理的「網路」跟別人家的「網路」架構一樣嗎?即使採用相似的CLOS或3-tier架構,使用的設備廠牌也會有所不同。再來每個網管部門對於實施自動化偏好的技術或工具也不相同;所以現階段網路自動化還是處於每間公司「我說的算」的情況。舉例來說:
我前公司使用Python+Jenkins把建立Checkpoint firewall policy的工作給自動化。寫程式的同事離職後就沒人維護了;因為其他業務也沒有自動化的急迫性,所以自動化的應用也僅限於此。
一般提到自動化,大家第一個反應一般是Ansible,偏偏我老板對Ansible感冒;所以我們用Nornir加上自已開發幾隻Python程式來處理特定問題。
往下談之前,我們來聊聊IBN;以往我們日常的工作會是這個樣子:
c3550(config)#int fa0/2
c3550(config-if)#switchport trunk encapsulation dot1q
c3550(config-if)#switchport mode trunk
c3550(config-if)#switchport trunk allowed vlan remove 5-10,12
c3550(config-if)#switchport trunk allowed vlan add 7
c3550(config-if)#end
如果每天執行一次或二次或許不會覺得厭煩## ;但如果每天有十張類似的需求單,這就對工程師造成很大的負擔,並更容易發生人為的錯誤 (Human error)。Intent-Based Networking的概念是我們預先定義好網路的「狀態」,比如:
接下來由「控制器」負責和網路設備溝通,把你定義的「狀態」發佈到你的網路上。而「控制器」可以是:
最後我們來看上述的例子演進成:
我們對IBN有一些概念之後,我們來看看網路自動化的HLD(High-Level Design)。注意!這張圖只是協助大家了解一般的概念,並不是所有的自動化都是這樣實作的。
謝謝大家耐心讀完,這篇文章只能代表我個人的觀點和解讀。如果你有不同的實作方式,很歡迎加入討論;畢竟有不同的觀點也能提點我更進一步的思考。