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文章
1499浏览量
61958 -
HTTP
+关注
关注
0文章
504浏览量
31194 -
自动化
+关注
关注
29文章
5562浏览量
79239 -
命令
+关注
关注
5文章
683浏览量
22011 -
python
+关注
关注
56文章
4792浏览量
84626
原文标题:网络工程师学Python-39-简化网络自动化任务编排框架Nornir
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论