网络自动化运维教程 课件 项目10 使用Nornir收集网络日志_第1页
网络自动化运维教程 课件 项目10 使用Nornir收集网络日志_第2页
网络自动化运维教程 课件 项目10 使用Nornir收集网络日志_第3页
网络自动化运维教程 课件 项目10 使用Nornir收集网络日志_第4页
网络自动化运维教程 课件 项目10 使用Nornir收集网络日志_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目10使用Nornir收集网络日志项目10使用Nornir收集网络日志10.1Nornir基础10.2任务实施10.1Nornir基础在网络自动化领域中,Python是其中热门的语言,而Nornir则是非常热门的框架。Nornir是基于Python编写的网络自动化框架,而其他大多数自动化框架通过使用一些烦琐的伪语言来隐藏它们所使用的语言,这些伪语言通常是相当完整的,但缺乏调试和故障排除的工具,导致这些框架难以与其他系统集成,而且没有很好的处理数据的能力,可重用性有限。相比Ansible,Nornir更适合操作网络设备,操作更加灵活,且不受格式限制,与Python结合可使执行操作更加灵活,并且具有很强的并发性。在执行速度上,Norinir相比Ansible执行速度更快。Nornir要求安装Python3.7或更高版本。1Nornir简介10.1Nornir基础Nornir是一个用于自动化网络编程的Python框架,它可以帮助用户快速构建和管理复杂的网络系统。Nornir具有以下几个特点。灵活:Nornir灵活的框架,允许用户根据需要构建自己的网络应用程序。可扩展性:Nornir使用插件机制,用户可以轻松地添加新的插件。设备支持广泛:Nornir支持多种设备类型和操作系统,包括华为、思科、Juniper、Arista等的主流网络设备。并行处理:Nornir使用异步处理模式,可以并行处理多个任务,提高效率。简单易用:Nornir的API非常简单、易用,即使初学者也很容易上手。2Nornir特点10.1Nornir基础主机清单是Nornir重要的部分,它由hosts、groups和defaults这3部分组成,其中groups、defaults文件不是必需的。主机相关的文件都使用YAML文件。hosts.yaml定义了设备属性,分为3大部分:设备基本信息:包含设备的IP地址或目标主机名、用户名和密码、连接的端口号、设备的厂商,这些参数都可以无缝对接netmiko和napalm。所属组groups:列表格式,每个组都有很多属性,如接入设备的基本配置等。参数data:字典格式,用户可以根据需求自己定义,如定义一个role后续再筛选,或者一些配置预定义等。3主机清单10.1Nornir基础初始化Nornir对象的方法是使用

InitNornir()

函数。InitNornir()

可以使用配置文件、代码或者将两者结合起来初始化Nornir对象。4初始化Nornir对象fromnornirimportInitNornir#导入InitNornir

nr=InitNornir()#初始化Nornir对象10.1Nornir基础任务是一段可以被循环使用的用于实现一定逻辑的代码,类似于Ansible的模块。任务在设备上进行操作,为单个主机或主机组实现某些功能,可以简单理解成函数。任务作为参数输入Python函数,并以框架可以理解和打印的结构化格式将结果作为数据返回。定义好任务函数之后,就可以编写一个runbook(在Ansible中被称为playbook)来执行这个任务。函数run()用于执行任务,接收可能已指定的任何其他可选参数。函数print_result()用于显示用户友好的输出,记录任务对哪些主机执行了哪些操作。这不是实时完成的,它是对存储结果的美化。5任务(1)10.1Nornir基础下面的示例使用run()执行任务,使用print_result()显示输出。5任务(2)fromnornirimportInitNornirfromnornir.core.taskimportTask,Resultfromnornir_utils.plugins.functionsimportprint_result

nr=InitNornir(config_file="hosts.yaml")

definventory_usernames(task):returnResult(host=task.host,result=f"{}usernameis{task.host.username}")

output=nr.run(task=inventory_usernames)print_result(output)10.1Nornir基础Nornir过滤器(filter)可以限制自动化脚本在特定网络设备或网络设备组上执行的能力。Nornir有两种过滤方法:一种是使用基本过滤器,根据特定设备属性来过滤网络设备;另一种是使用高级过滤器,可以使用设备属性的复杂逻辑运算如AND、OR、NOT、CONTAIN、LESSTHANOREQUAL和GREATERTHANOREQUAL等来过滤设备。6过滤器(1)10.1Nornir基础使用Nornir过滤器功能,首先需要在Nornir清单文件中为每个网络设备配置一些属性。设备属性可以是任何可用于过滤设备的属性,如物理位置、设备类型、设备的拓扑层等。所有这些属性都是通过在hosts.yaml清单文件中添加一个data字段来配置的。本例中每个设备使用了3个属性,type表示设备的类型,city表示设备的物理位置,core表示设备是否是核心路由器。。6过滤器(2)---S2:hostname:"54"groups:-huaweidata:type:switchcity:shenzhencore:True

SZ1:hostname:""groups:-huaweidata:type:routercity:guangzhoucore:True

S4:

hostname:""

groups:

-cisco

data:

type:switch

city:guangzhou

core:False10.1Nornir基础在Nornir的官方网站中可以看到官方的插件列表,插件列表分成任务类、连接类、清单管理类、进程管理类、函数类等7插件10.1Nornir基础nornir_netmiko插件用于调用netmiko的相关功能,自动管理到网络设备的连接,直接调用nornir_netmiko中的任务函数就可以实现与网络设备的交互。nornir_netmiko插件中的主要任务函数有:netmiko_commit()、netmiko_file_transfer()、netmiko_save_config()、netmiko_send_command()和netmiko_send_config()。8nornir_netmiko插件10.1Nornir基础nornir_utils插件常用的函数print_result()。大多数情况下,如果只想知道任务的执行结果,可以使用

print_result()

函数。print_result()

可以按照日志规则打印结果。默认情况下,它只打印严重级别大于

INFO

的任务(如果任务中没有指定日志级别,默认值是INFO);如果任务执行失败,它的严重级别是

ERROR,比

INFO

大,所以可以输出。日志级别:CRITICAL>ERROR>WARNING>INFO>DEBUG。nornir_utils插件中的write_file()函数可以用于非常便捷地将文本内容写入文件9nornir_utils插件10.1Nornir基础nornir_jinja2插件主要提供一些基于Jinja2封装的比较便捷的任务函数,可以方便地使用Jinja2。nornir_jinja2主要有两个任务函数即template_file()函数和tempalte_string()函数。10nornir_jinja2插件项目10使用Nornir收集网络日志10.1Nornir基础10.2任务实施10.2任务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论