Nornir是一個基于Python的自動化編排框架,旨在簡化網(wǎng)絡自動化的任務。它提供了一些基本的操作,例如SSH,Telnet,HTTP,以及很多網(wǎng)絡設備的API。在這篇文章中,我們將介紹Nornir框架的基本用法和一些常見的例子。
安裝
你可以通過以下命令安裝Nornir框架:
pipinstallnornir
用法
以下是一個簡單的Nornir代碼示例,它打印出了一個主機列表:
fromnornirimportInitNornir nr=InitNornir(config_file="config.yaml") forhostinnr.inventory.hosts.values(): print(host)
你需要提供一個配置文件,它將告訴Nornir框架如何連接你的網(wǎng)絡設備。以下是一個示例配置文件:
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支持異步任務執(zhí)行,使用asyncio庫實現(xiàn)。通過asyncio庫,我們可以使用協(xié)程并發(fā)執(zhí)行任務,提高執(zhí)行效率。
下面是一個使用異步任務執(zhí)行的示例代碼:
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。然后我們定義了一個主函數(shù)main,在函數(shù)中初始化Nornir,并使用異步任務執(zhí)行多個task1任務。最后,在主程序中使用asyncio.run方法運行主函數(shù)。
在上面的代碼中,我們使用asyncio.gather方法來并發(fā)執(zhí)行所有任務。asyncio.gather方法接受多個協(xié)程作為參數(shù),然后并發(fā)執(zhí)行這些協(xié)程,并等待它們?nèi)繄?zhí)行完成。
總結(jié)
本文介紹了Python Nornir框架的基本用法和示例代碼,包括初始化Nornir、執(zhí)行任務、使用組、使用過濾器、使用動態(tài)數(shù)據(jù)、使用自定義插件、使用SSH、Telnet、Netmiko等插件、使用異步執(zhí)行任務等。通過本文的介紹,讀者可以了解到如何使用Nornir框架進行自動化網(wǎng)絡管理和配置,以及如何通過Nornir插件和自定義插件擴展框架的功能。
審核編輯:湯梓紅
-
API
+關注
關注
2文章
1570瀏覽量
63752 -
HTTP
+關注
關注
0文章
524瀏覽量
32626 -
自動化
+關注
關注
29文章
5769瀏覽量
83410 -
命令
+關注
關注
5文章
736瀏覽量
22800 -
python
+關注
關注
56文章
4825瀏覽量
86494
原文標題:網(wǎng)絡工程師學Python-39-簡化網(wǎng)絡自動化任務編排框架Nornir
文章出處:【微信號:網(wǎng)絡技術(shù)干貨圈,微信公眾號:網(wǎng)絡技術(shù)干貨圈】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
自動化測試框架思想和構(gòu)建
請問數(shù)據(jù)驅(qū)動的自動化測試框架結(jié)構(gòu)是怎么構(gòu)成的?
HarmonyOS自動化測試框架—Hypium
常用軟件測試自動化框架
Force10推出開放式自動化框架方案
全面提升自動化測試,NI TestStand 2012新模塊化框架
基于Web的自動化測試框架的研究

讓網(wǎng)絡走向自動化的三大原因是什么?
什么是自動化測試框架?
自動化測試框架unittes詳解
Facebook群組自動化python – 網(wǎng)絡自動化

評論