一Nornir初识Nornir
北京白癜风治疗效果好的医院 https://baijiahao.baidu.com/s?id=1680518420286668560&wfr=spider&for=pcNornir三问Nonir是什么? nornir是一个纯python的自动化框架 为什么选择Nornir?对于我们的学习路线来说,我们已经习惯用于netmiko以及paramiko这些模块,自然不愿意去学习一个全新的模块。nornir高度集成了netmiko的功能,使我们可以将netmiko的大部分内容迁移到nornir中 为什么要从Netmiko迁移到Nornir?在我们使用netmiko时,会发现大批量设备的操作会占用很久的时间,这是因为netmiko是单线程的,那么在有大批量操作时候选择nornir是个很好的选择,因为他天然支持多线程,可以节省很多程序执行的时间(当然也可以不用,避免被压榨)。 Nornir环境设置安装Nornir模块因为nornir是第三方模块,所以需要额外去安装它 pip3installnornir 在使用中也需要安装其他的额外插件 配置文件介绍在nornir中需要用到四个yaml配置文件,分别为defaults.yaml、groups.yaml、hosts.yaml、config.yaml。 default.yaml 用于一些默认参数的设定,比如说账密、端口这些固有的参数 groups.yaml 用于将设备分组,譬如安装交换机厂商分组,或者是按照产业园分组、楼层分组 hosts.yaml 这里会填写设备的一些参数,如果和default.yaml以及groups.yaml有相同的则可以不写 config.yaml 这里主要是描述信息是从哪里来的,以及是否工作在多线程中,线程数量设置为多少 Nornir的工作逻辑先初始化nornir,让nornir去读取config.yaml中的配置信息 定义任务,任务就是我们常写的那种函数,但是书写上还是有些不同的 使用第一步初始化后的nornir去执行任务,然后会得到返回的数据 最后可以打印出返回的数据 示例在学习过程中我们可以忽略default.yaml和groups.yaml,因为这两个配置文件不是必备的,这样可以减少我们的学习复杂度。更容易上手。接下来让我们使用nornir去sayhello设备名作为范例 hosts.yaml#---SW1:hostname:...1username:adminpassword:admin port:22platform:huaweigroups:-netdevdata:site:suzhoubuilding:Bfloor:3Frole:SWcmds:-displayversion-displayinterfaceSW2:hostname:...2username:adminpassword:adminport:22platform:huaweigroups:-netdevdata:site:suzhoubuilding:Bfloor:3Frole:SWcmds:-displayversion-displayinterfaceconfig.yaml---inventory:plugin:SimpleInventoryoptions:host_file:"hosts.yaml"group_file:"groups.yaml"defaults_file:"defaults.yaml"runner:plugin:threadedoptions:num_workers:代码部分 fromnornirimportInitNornirfromnornir_utils.plugins.functionsimportprint_result#初始化nornirnr=InitNornir(config_file=config.yaml)defhi(task):#定义输出内容worlds=fHi,mynameis{task.host.name}returnworlds#name后的参数为最上面横眉部分results=nr.run(task=hi,name=返回结果)print_result(results) PS:要先安装nornir_utils模块pip3installnornir_utils 运行效果如下:返回结果*****************************************************************************SW1**changed:False***********************************vvvv返回结果**changed:FalsevvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvINFOHi,mynameisSW1^^^^END返回结果^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*SW2**changed:False***********************************vvvv返回结果**changed:FalsevvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvINFOHi,mynameisSW2^^^^END返回结果^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 可以看到nornir简单直接的结果输出显示 分层次设计逻辑也更容易理解 NetDevOps小学徒
|
转载请注明地址:http://www.tanhuaa.com/gjth/10928.html
- 上一篇文章: PythonTypeHints从入
- 下一篇文章: 没有了