Nornir是一個基于Python的自動化編排框架,旨在簡化網絡自動化的任務。它提供了一些基本的操作,例如SSH,Telnet,HTTP,以及很多網絡設備的API。在這篇文章中,我們將介紹Nornir框架的基本用法和一些常見的例子。
安裝
你可以通過以下命令安裝Nornir框架:
pipinstallnornir
用法
以下是一個簡單的Nornir代碼示例,它打印出了一個主機列表:
fromnornirimportInitNornir nr=InitNornir(config_file="config.yaml") forhostinnr.inventory.hosts.values(): print(host)
你需要提供一個配置文件,它將告訴Nornir框架如何連接你的網絡設備。以下是一個示例配置文件:
inventory: plugin:SimpleInventory options: host_file:"hosts.yaml" group_file:"groups.yaml" credentials: napalm: username:"admin" password:"admin" runner: plugin:threaded options: num_workers:20
inventory 部分告訴Nornir如何讀取你的主機清單和組清單。在這個例子中,我們使用了一個簡單的清單插件,它使用一個YAML格式的文件來定義主機和組。
credentials 部分告訴Nornir如何連接到設備。在這個例子中,我們使用了napalm插件來連接設備,因此我們需要提供napalm插件需要的用戶名和密碼。
runner 部分告訴Nornir如何運行任務。在這個例子中,我們使用了一個線程插件來并行運行任務,并設置了20個工作線程。
例子
連接并獲取設備信息
以下代碼示例演示了如何使用Nornir連接設備并獲取設備的信息:
fromnornirimportInitNornir fromnornir.plugins.tasks.networkingimportnapalm_get nr=InitNornir(config_file="config.yaml") result=nr.run(task=napalm_get,getters=["interfaces","facts"]) forhost,rinresult.items(): print(f"Host:{host}") print(f"Interfaces:{r[0].result['interfaces']}") print(f"Facts:{r[1].result['facts']}")
在這個例子中,我們使用了napalm_get任務來獲取設備的接口和基本信息。
Nornir支持異步任務執行,使用asyncio庫實現。通過asyncio庫,我們可以使用協程并發執行任務,提高執行效率。
下面是一個使用異步任務執行的示例代碼:
importasyncio fromnornirimportInitNornir asyncdeftask1(task): print(f"Task{task.task_id}starting") awaitasyncio.sleep(2) print(f"Task{task.task_id}ending") asyncdefmain(): nr=InitNornir(config_file="config.yaml") tasks=[task1forhostinnr.inventory.hosts.values()] awaitasyncio.gather(*tasks) if__name__=="__main__": asyncio.run(main())
在上面的示例中,我們首先定義了一個異步任務task1,在任務中打印任務ID,然后等待2秒鐘,最后再次打印任務ID。然后我們定義了一個主函數main,在函數中初始化Nornir,并使用異步任務執行多個task1任務。最后,在主程序中使用asyncio.run方法運行主函數。
在上面的代碼中,我們使用asyncio.gather方法來并發執行所有任務。asyncio.gather方法接受多個協程作為參數,然后并發執行這些協程,并等待它們全部執行完成。
總結
本文介紹了Python Nornir框架的基本用法和示例代碼,包括初始化Nornir、執行任務、使用組、使用過濾器、使用動態數據、使用自定義插件、使用SSH、Telnet、Netmiko等插件、使用異步執行任務等。通過本文的介紹,讀者可以了解到如何使用Nornir框架進行自動化網絡管理和配置,以及如何通過Nornir插件和自定義插件擴展框架的功能。
審核編輯:湯梓紅
-
API
+關注
關注
2文章
1484瀏覽量
61810 -
HTTP
+關注
關注
0文章
501瀏覽量
31056 -
自動化
+關注
關注
29文章
5511瀏覽量
79098 -
命令
+關注
關注
5文章
678瀏覽量
21984 -
python
+關注
關注
56文章
4782瀏覽量
84449
原文標題:網絡工程師學Python-39-簡化網絡自動化任務編排框架Nornir
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論