作为网工,学会通过执行脚本,可以自动化的完成日常一些设备相关配置或信息收集等工作,可以说是事半功倍。
Nornir就是这样一个自动化网络运维工具。按照官网上的说明:
Nornir是用python编写的自动化框架,可与python一起使用。Nornir旨在通过提供一个纯Python框架来解决这些问题。
详细参考:
-
官网
Welcome to nornir’s documentation! — nornir 3.0.0 documentation -
插件介绍
Nornir Plugins :: nornir.tech — News and information about nornir’s projects
简单说,Nornir类似于Flask,具有模块化的特性,可以选择性的接入各种功能,其中比较贴近网络运维场景的就有Netmiko插件,熟悉的都知道,Netmiko本身就是一个适用于进行网络远程登录管理的python模块,而Nornir继承了其特性,甚至更发扬光大了。
在网络运维中,比较常见的工作,都有设备备份,设备配置,以及设备CMDB管理。
Nornir具备如下目录结构:
├── config.yaml
├── inventory
│ ├── defaults.yaml
│ ├── groups.yaml
│ └── hosts.yaml
├── nornir.log
├── nornir.py
- config.yaml
定义了基本工作时需要的相关配置
默认支持并发threaded
---
inventory:
plugin: SimpleInventory
options:
host_file: "inventory/hosts.yaml"
group_file: "inventory/groups.yaml"
defaults_file: "inventory/defaults.yaml"
runner:
plugin: threaded
options:
num_workers: 100
类似Ansible,Nornir也有一个inventory,其中定义了hosts和groups相关信息,以便工作时读取这些文件实现相关功能。
- hosts.yaml
如下,关于一个设备的hosts信息定义,其中platform决定了Nornir自动将设备识别为何种类型,这里指定了"huawei",就是指这是一个网络设备(暂时没有找到H3C对应的类型),而如果是一个linux服务器,就是指定为" platform: linux"。
---
h3c_sw: