官方服务微信:dat818 购买与出租对接

Nornir网络自动化运维指南:Python框架应用与实战经验分享

3万

主题

2

回帖

10万

积分

管理员

积分
105727
发表于 2024-12-28 00:40:27 | 显示全部楼层 |阅读模式
    工欲善其事,必先利其器(当然,如果你不耐烦的话,可以先跳过这篇文章,等你确认了之后再回来和我一起唱这首《只有你》)以下应用对您有帮助)

    网络自动化运维,第一个推荐,是一个用 编写的自动化框架,它允许用户使用纯代码。只要懂一点,就可以用它来自动化操作,而且它默认支持多线程。如果你还在尝试,,,建议切换到顶部。

    网上有很多关于它的教学文章。这里只是简单介绍一下,以及我在实际工作中基于它的简单应用(以及我遇到的坑...)。涉及到的相关知识点会放在网络自动化操作中。本文总结了维度相关的知识点。

    使用说明:使用系统:20.04.1,版本3.8,我将使用Aruba 2930F堆栈来演示交换机(网上有很多cisco、华为、H3C,所以我会采取不同的方法)

    及其模块的安装

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>pip3 install netmiko
pip3 install napalm
pip3 install nornir
pip3 install nornir_utils
pip3 install nornir_napalm
pip3 install nornir_netmiko</code></pre></p>
    检查对应版本

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>root@ansible:~/nornir# pip freeze | grep nornir
nornir==3.0.0
nornir-jinja2==0.1.2
nornir-napalm==0.1.1
nornir-netmiko==0.1.1
nornir-scrapli==2021.1.30
nornir-utils==0.1.1</code></pre></p>
    基本结构

    包含以下4个文件,

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>root@ansible:~/nornir# ls -l | grep yaml
-rw-r--r-- 1 root root 230 Jan 26 02:27 config.yaml
-rw-r--r-- 1 root root 42 Jan 26 01:49 defaults.yaml
-rw-r--r-- 1 root root 86 Jan 26 02:43 groups.yaml
-rw-r--r-- 1 root root 494 Jan 26 05:35 hosts.yaml</code></pre></p>
    .yaml 是最基本的配置文件。它加载了自己的配置文件来管理设备。它还指定了所需的其他 3 个文件名。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>root@ansible:~/nornir# more config.yaml
---
inventory:
  plugin: SimpleInventory
  options:
       host_file: "hosts.yaml"
       group_file: "groups.yaml"
       defaults_file: "defaults.yaml"
runner:
  plugin: threaded
  options:
      num_workers: 100 #多线程数,默认20</code></pre></p>
    Hosts.yaml 可以存储链接的名称、账户密码、指定交换机的平台、组和自定义参数。 。 。 。除了名称IP(这是必需的)之外,还可以汇总其他字段并将其放入组的定义中。稍后可以使用这些字段来过滤特定交换机执行命令,例如仅备份组为 cisco 的交换机。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>root@ansible:~/nornir# more hosts.yaml
---
sw1:
hostname: 1.1.1.1
username: admin
password: pwdxxx
platform: nxos_ssh
groups:
    - cisco
data:
    floor: &#39;3&#39;
    level: &#39;1&#39;
sw2:
hostname: 2.2.2.2
platform: aruba_osswitch
groups:
   - aruba</code></pre></p>
    .yaml group的好处是可以将主机中交换机的公共部分写在group中,减少主机的重复配置。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>root@ansible:~/nornir# more groups.yaml
---
cisco:
   platform: nxos_ssh
aruba:
   platform: aruba_osswitch
   data:
       floor:&#39;3&#39;</code></pre></p>
    .yaml的作用是填写hosts.yaml和group.yaml中缺失或者缺失的参数。例如,当hosts中的某个开关没有指定登录用户名和密码,并且在 中不可用时,将读取 中的帐户密码。登录

    注意,如果密码中有数字,必须用引号括起来,例如:“123”

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>root@ansible:~/nornir# more defaults.yaml
---
username: admin
password: "abc1234"</code></pre></p>
    介绍完架构,我们来看一个简单的示例应用(此时你可能会有很多疑问,比如华为的交换机平台应该用什么?写1000个这样的hosts.yaml可能要花人的命了……。等等,别着急,我稍后会介绍)

    我们先做最简单的事情,检查开关的位置。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>Aruba-MX01# show system information | i Location
System Location : 4F-Hubroom</code></pre></p>
    创建一个 .py 文件并编写以下代码。有关每行命令的说明,请参阅注释。

    查看运行结果

    好了,在正式开始之前,先简单介绍一下,我们继续吧。

    关于详细的介绍和教学,郑重推荐王印老师的相关教学文章。笔者也跟着王老师的文章学习

    网络工程师之路.0.0
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-5-15 02:47 , Processed in 0.086289 second(s), 18 queries .