Python × Network一拍即合:自動化、程式化和DevOps的一站式解決方案 | 維持健康的好方法 - 2024年11月
Python × Network一拍即合:自動化、程式化和DevOps的一站式解決方案
基礎設施中的網路(Networks)是應用程式部署、維護和服務的基石。Python則是網路工程師探索自動化領域的理想語言。如果你是沒有程式設計基礎的網路工程師,或者你是想要了解網路管理的開發人員,本書將一步步帶領你使用Python進行網路自動化、程式化和資料分析,讓你在雲端世界中獲得更多的機會與挑戰。
暢銷書《Mastering Python Networking》的最新修訂版,由作者本人親自翻譯成繁體中文,所有範例皆更新至最新的Python 3。除了新增Elastic Stack網路資料分析與Azure等內容之外,本書也介紹許多熱門且實用的Python函式庫,例如:pyATS、Nornir和Ansible 2.8。結合範例解說,作者將陪你踏上充實的Python學習之旅,讓你搖身一變成為優秀的網路工程師,迎戰新一波網路變革的浪潮。
本書從Python的基本概念開始講解。你將了解Python是如何與舊設備以及網路設備中的API進行互動的。你將學習如何使用高階的Python套件和框架來執行網路自動化任務、監控、管理以及增強網路的安全性。本書也將介紹Azure和AWS。最後,你將使用Jenkins進行持續整合,並使用測試工具來驗證你的網路。
在這本書中,你將學到:
・使用Python函式庫與你的網路進行互動
・教你使用Ansible 2.8管理Cisco、Juniper和Arista網路設備
・利用Flask Web框架建構高階API
・了解如何在AWS和Azure雲端中建置虛擬網路
・了解如何使用Elastic Stack進行網路資料分析
・了解如何使用Jenkins自動部署網路中的修改
・最後以測試驅動開發(TDD)為基礎,使用PyTest和Unittest進行網路工程
作者簡介
周君逸(Eric Chou)台灣出生,旅美工作與生活數十年,是一名擁有超過20年經驗的資深技術專家。他曾管理過業界中一些最大型的網路,包括亞馬遜AWS、微軟Azure和其他『財富500強』(Fortune 500)的公司。Eric熱衷於網路自動化、Python以及幫各大公司建立更好的網路安全機制。
除了是《Mastering Python Networking》的作者之外,他也是《Distributed Denial of Service (DDoS): Practical Detection and Defense》的共同作者。
Eric是兩項美國IP電話(IP telephony)專利的主要發明人。透過他的書籍、網路課程與部落格,以及對一些受歡迎的Python開源專案的貢獻,他很樂於分享他對技術方面的濃厚興趣。
前言
Chapter 1:回顧TCP/IP通訊協定套件和Python
網際網路的概述
OSI模型
客戶端-伺服器模型
網路協定套件
Python 語言概述
小結
Chapter 2:底層網路設備互動
CLI的挑戰
建構虛擬實驗室
Python Pexpect函式庫
Python Paramiko函式庫
Netmiko函式庫
Nornir框架
小結
Chapter 3:API和意圖驅動網路
基礎架構即程式碼
Cisco API和ACI
Cisco Meraki控制器
Juniper Networks的Python API
Arista的Python API
VyOS範例
其他的函式庫
小結
Chapter 4:Python自動化框架-Ansible入門
Ansible:一個更具宣告性的框架
Ansible範例
Ansible的優點
Ansible架構
Ansible網路模組
Ansible Cisco範例
Ansible 2.8 playbook範例
Ansible Juniper範例
Ansible Arista範例
小結
Chapter 5:Python自動化框架-Ansible進階
實驗室準備
Ansible條件
Ansible迴圈
樣板
群組和主機變數
Ansible Vault
Ansible的include和roles
編寫自訂模組
小結
Chapter 6:Python與網路安全
實驗室設置
Python Scapy
網路存取清單
Syslog搜尋
其他工具
延伸閱讀
小結
Chapter 7:使用Python進行網路監控-第一部分
實驗室設置
SNMP
使用Python進行資料視覺化
用於Cacti的Python
小結
Chapter 8:使用Python進行網路監控-第二部分
Graphviz
基於流量的監控
ntop流量監控
小結
Chapter 9:使用Python建置網路Web服務
Python Web框架比較
Flask和實驗室設置
Flask簡介
網路資源API
網路動態操作
驗證與授權
在容器中使用Flask
小結
Chapter 10:AWS雲端網路
AWS設置
AWS網路概述
虛擬私有雲
Direct Connect與VPN
網路擴展服務
其他AWS網路服務
小結
Chapter 11:Azure雲端網路
Azure和AWS網路服務比較
Azure設置
Azure管理和API
Azure全域基礎設施
Azure虛擬網路
VNet路由
Azure VPN
Azure ExpressRoute
Azure網路負載平衡器
其他Azure網路服務
小結
Chapter 12:使用Elastic Stack進行網路資料分析
什麼是Elastic Stack?
實驗室拓撲
Elastic Stack即服務
第一個端到端範例
Elasticsearch和Python客戶端
使用Logstash進行資料擷取
使用Beats進行資料擷取
使用Elasticsearch進行搜尋
使用Kibana將資料視覺化
小結
Chapter 13:使用Git
內容管理注意事項與Git
Git簡介
設置Git
Git的使用範例
Git分支
在Python中使用Git
自動配置備份
與Git協作
小結
Chapter 14:使用Jenkins持續整合
傳統的變更管理過程
持續整合簡介
安裝Jenkins
Jenkins範例
使用Python-Jenkins套件
網路的持續整合
小結
Chapter 15:網路的測試驅動開發(TDD)
測試驅動開發概述
拓撲即程式碼
編寫網路測試
使用Jenkins進行pytest整合
pyATS與Genie
小結