- Python網絡運維自動化
- 王旭濤
- 2602字
- 2025-03-12 18:29:11
前言
2014年,我畢業后有幸入職了某國有大型銀行的數據中心,從事網絡運維工作。當時我主要負責SAN網絡的運維,經常要做的一件事情就是登錄若干網絡設備進行相關信息的收集和整理,以便在后續運維中有據可依,在應急響應中能上下聯動、快速定位問題。
一開始我采取的方式是“人肉”整理相關信息,登錄一臺臺設備執行命令,并“摳”出相關信息寫入表格。這種方式機械重復,效率很低。其中的痛苦,搞過網絡運維的人都很清楚,因為我學習的是計算機科學與技術專業,所以團隊安排我編寫腳本來自動化完成這份工作。上學時,我主要用Java做開發,在編寫腳本時機緣巧合地使用了Python,不禁感嘆:Python簡直是為運維自動化而生!它既簡單又簡潔,而且非常容易上手,同樣的功能用幾行Python代碼就可以完成。于是,當我的第一個Python自動化腳本開發完成并實際運用后,以前兩三個人近一周的工作量,通過這個腳本半小時就可以完成。經過主動學習,我把腳本封裝成Web應用,讓很多信息都實現了自動化采集入庫,并可以通過Web界面進行關聯查詢。無論是日常運維,還是應急處置,這個Web應用都發揮了很大的作用,受到了大家的一致好評。
這種成就感讓我徹底“愛”上了編程。雖然我上學時并不“感冒”編程,但工作后對編程入了“魔”,我也被領導“盯”上,開始有計劃地為團隊開發一些網絡運維自動化的工具。自此我便一發不可收,從腳本到單體的Web應用,最終開發了一個集CMDB、監控應急、運維自動化、日常辦公等眾多功能于一身的網絡運維管理平臺,覆蓋了網絡運維的眾多場景。我的工作重心也過渡到網絡運維自動化工具開發。雖然我的網絡運維技能“稀松”,但是在網絡運維自動化方面卻穩扎穩打,掌握了網絡運維自動化工具的規劃、設計和開發等技能,并利用開源技術,解決了一個又一個的運維難題。
隨著學習和實踐的深入,我也接觸到了NetDevOps,發現自己從職業生涯開始就是一名NetDevOps工程師,利用Python來提高運維效率。彼時,NetDevOps在國內并不流行,而我心中一直有一團火,希望NetDevOps在國內發展,讓更多的網絡工程師投身到網絡運維自動化的建設中。2020年,我注冊了微信公眾號“NetDevOps加油站”,并創建了知乎同名專欄,分享Python網絡運維自動化技術經驗。在創作、交流、答疑的過程中,我的知識和認知不斷迭代,也發現很多網絡工程師在學習過程中不得其法。我意識到網絡工程師需要一本“how to do”的書來指導其學習,讓他們能夠零基礎入門NetDevOps,并通過最佳的學習路線指引,掌握最廣泛使用、最穩定的技術和工具以及貼合網絡運維實際場景的案例。于是我從網絡工程師的角度,結合10余年的網絡運維自動化開發經驗,撰寫了這本書。
隨著網絡運維技術的不斷發展,國外的行業先驅者不斷賦予NetDevOps更多的意義、更多的實踐和更深刻的內核。但我一直認為,NetDevOps是一種思想、一種文化,也是一種實踐方式。它鼓勵網絡工程師利用開發技術并借助開源工具,不斷地沉淀運維數據、優化運維流程、固化運維經驗,最終提高網絡運維效率、提升網絡運維質量。在國內,對于初學者,將它與Python網絡運維自動化畫上等號會更貼切,更加有助于網絡工程師理解、運用NetDevOps,所以我將本書命名為“Python網絡運維自動化”。希望各位讀者通過閱讀本書,能夠掌握Python的開發技術,解決網絡運維難題,進一步提高運維效率、提升自身價值。
本書組織架構
本書內容的安排循序漸進,前面3章從網絡工程師的視角講解了Python的基礎知識、數據格式和數據建模語言。即使是有相關經驗的網絡工程師,也會在這幾章中找到新的感悟。從第4章開始,本書以Python網絡運維自動化工具體系角度展開,讀者可以依次閱讀,也可以直接翻閱感興趣的章節。
當然,對于絕大多數讀者,我建議循序漸進地閱讀本書,從而夯實基礎、構建體系。本書共10章,各章主要內容如下。
第1章,Python網絡運維自動化概述,主要介紹Python網絡運維自動化技術的興起背景、工具體系和學習建議。
第2章,網絡工程師的Python基礎,從網絡工程師的視角,結合Python網絡運維自動化需求,從零開始講解Python基礎知識。
第3章,數據格式與數據建模語言,主要介紹Python網絡運維自動化領域所需的常見數據格式與數據建模語言,旨在為讀者構建數據意識,為學習后續章節中的內容打下基礎。
第4章,網絡配置的結構化數據提取,主要介紹了從網絡配置中提取結構化數據的兩種方式—正則表達式和TextFSM。TextFSM是本書的第一個重點,可以幫助讀者非常便捷地從網絡配置中提取出結構化數據,用于網絡運維自動化。
第5章,網絡配置的模板化管理,主要介紹了Jinja2模板引擎,以及如何使用它結合結構化數據快速生成標準化配置。
第6章,Netmiko詳解與實戰,主要介紹了Python網絡運維自動化使用最廣泛的工具Netmiko。這部分內容是本書的第二個重點,以便實現各類網絡設備的CLI交互,并充分利用之前章節的知識點,覆蓋很多網絡運維場景。
第7章,模型驅動的新網絡管理方式及實踐,主要介紹了NETCONF協議與RESTCONF協議,并結合ncclient和Postman演示了使用兩種協議與網絡設備進行交互的示例。
第8章,網絡管理工具集,介紹了網絡管理中的3款工具:netaddr、Requests和NAPALM。netaddr用于處理IP地址,與運維息息相關;Requests用于發起HTTP請求,可以與運維中已有的第三方系統平臺進行對接;NAPALM提供了一種網絡運維自動化的框架和相關工具,可以簡化網絡運維自動化的開發。
第9章,網絡自動化框架Nornir,借助此框架可以提升讀者的開發速度、提高腳本的執行效率、簡化開發的難度,這是本書的第三個重點。
第10章,開源網管工具NetBox,主要介紹了一款開箱即用的網管工具NetBox,可以幫助讀者更輕松地管理網絡基礎設施,借助其自定義字段、開放的RESTful API體系,結合自動化腳本開發,實現更多的功能擴展。
讀者對象
本書適合網絡工程師、對網絡運維自動化感興趣的開發工程師閱讀。此外,本書亦可作為高等院校網絡工程等相關專業的教材。
致謝
首先要感謝NetDevOps的先驅們,是他們開發出了好用的工具并進行了最早的NetDevOps技術分享。
感謝本書的編輯單瑞婷老師,幫助我從零開始寫一本書;感謝藍鵬老師,在我編寫此書的過程中給我的幫助和鼓勵,是他和我一起討論書的架構、幫我審核稿件、提出修改建議,他廣博的知識儲備、嚴謹的治學態度,無不令我深感敬佩。同時,他溫潤如玉的品性中又不失幽默,為我樹立了學習、生活和工作中的典范。
感謝本書編寫過程中鼓勵我、幫助我的唐志強、戴維、張明、李黎、岳飛宇、袁澤海、武江鵬、姜陽等師友,在你們的幫助下,這本書得以逐步完善。
最后感謝關注我的微信公眾號、知乎專欄的朋友們,是你們的支持,讓我有了分享知識的動力,這本書才能從無到有。希望大家能通過這本書掌握相關技能,共同推進網絡運維自動化的發展。
王旭濤
2024年4月
- WildFly:New Features
- PyTorch自然語言處理入門與實戰
- 教孩子學編程:C++入門圖解
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- iOS應用逆向工程(第2版)
- Clojure Reactive Programming
- 組態軟件技術與應用
- Unity UI Cookbook
- Swift 4從零到精通iOS開發
- Citrix XenServer企業運維實戰
- Building Business Websites with Squarespace 7(Second Edition)
- Continuous Delivery and DevOps:A Quickstart Guide Second Edition
- After Effects CC技術大全
- MongoDB Administrator’s Guide
- PHP 7 Programming Blueprints