了解Git、Python、Ansible等工具,開始您的網絡自動化之旅。
在上一篇文章《為何自動化對于IT工程師如此重要?》中,我們介紹了為什么需要網絡自動化。一旦你決定開始一個網絡自動化項目,那么下一步就是要選擇正確的工具。那么你應該選擇哪些工具呢?
這真的取決于你要實現怎樣的目標。對于網絡自動化,有很多工具可供選擇。為了幫助您了解哪些工具可能最適合您,通過實驗進行簡單評估通常是有益的。選擇工具時需要考慮的另一個因素是存在(或不存在)可訪問的社區,以幫助您在這個過程中進行學習。
在這篇文章中,我們將重點介紹一些流行的和已經成熟的工具,其中包括了Git(用于管理文件的版本)、Python、Ansible和Netmiko。我們還將介紹一些其他有價值的網絡自動化工具。
Git是許多平臺上最流行的源代碼控制管理(SCM)工具之一。 您可能會問:“為什么我需要一個SCM?”隨著越來越多的網絡環境被表示為某種代碼的形式 (以配置文件、配置模板和腳本),SCM變得非常重要。 一方面,它使您能夠利用程序員使用多年的流程,比較不同的文件,管理誰有權讀取或修改這些文件,恢復備份,并有效地審查提出的更改。 另一方面,當GitHub或GitLab組合在遠程服務器上存儲您的存儲庫時,您將獲得非常有效的工具來與他人協作并備份您的工作。
Python在網絡開發領域擁有著強大的簇擁者。 Python當然不是唯一的腳本語言; 還有其他的腳本語言,如Ruby,Groovy和Perl等等。 將腳本語言視為自動化的“膠帶”,將所有內容都放在一起,在這過程中你需要一種易于閱讀和使用的腳本語言。 Python在20世紀90年代初作為一種可讀性的通用腳本語言被開發,在運行腳本之前不需要編譯它。
為了幫助構建腳本,您可以使用超過100000個預制模塊來簡化工作,從而使您可以專注于實現目標,而不是從頭開始實現所有功能。 用Netmiko 的一個例子來說明這點。Netmiko處理SSH等類型的網絡設備的唯一性,所以你不必在自己的腳本中處理這一問題。Virtualenv允許您在每個項目的基礎上管理Python環境,從而無需管理員憑據來安裝或更新模塊,并且可以對可能需要不同模塊或不同版本的同一模塊的不同項目進行簡化工作。
除了腳本語言,通用配置管理和IT自動化系統非常強大,得到了大型社區的支持。大多數具有多個服務器的企業都要使用這些工具中的至少一個。這些工具的核心是開源的,可以在生產中自由嘗試或使用。但是附加功能,圖形用戶界面等會收費。
Chef和Puppet使用與服務器或網絡設備定義“合同”的Ruby類域名特定語言(DSL),指定應該存在的文件和包、配置狀態和應該運行的服務。這些工具處理如何確保合同正常執行。可以使用與Chef或Puppet相同的方式,并在其核心部分增加更多的通用自動化功能。使用這些工具,您可以按功能或“角色”對設備進行分組,并將配置設置映射到“角色”,以減少要管理的唯一點數。這些工具的運行是安全的,因為它不需要在正在管理的設備上安裝代理 。它還使用SSH,以便您可以快速入門。Ansys成為將配置管理工具應用于網絡自動化的良好選擇。
最后,模板是網絡自動化工具箱中的另一個很好的工具。模板允許您定義文件或網絡設備配置的內容,例如,從簡單變量替換到條件邏輯和循環的嵌入式語法。嵌入式Ruby(ERB)和Jinja2是兩種常見的模板格式。鑒于它與Python和Ansible的密切聯系,Jinja2是一個特別受歡迎的選擇; Jinja2模板可以直接在Python腳本中使用,或者與更高級的工具(如Ansible)結合使用。如果您花了一些時間來分析您的網絡設備配置,您很快就會注意到,多個設備之間復制了多少配置,但只有幾個項目(如IP地址和主機名)不同。這使得模板成為減少維護和增加一致性的理想工具。
開展網絡自動化項目重要的是選擇可以實現和簡化自動化的優質工具。在本文中,我們知道了一些比較優秀的工具:Git,Python和Ansible等。 在以后的文章中我們還將介紹如何開始使用這些工具。您還可以關注5月15日至19日在拉斯維加斯舉辦的InteropITX,在“實踐網絡自動化”研討會中,將介紹如何開始網絡自動化,并有相關專家在現場幫助指導參與者。
原英文作者:Jere Julian,Scott Lowe