Установка Nornir на Windows для чайников

Установка Nornir на Windows для чайников

Emil Garipov

Вдохновившись тем, как Дмитрий Фиголь в своей сессии легко отправляет и получает данные на несколько сетевых устройств "одним нажатием кнопки", решил установить Nornir и попробовать его так сказать в деле. Так как для меня это совсем новый опыт, то статья будет именно о пошаговой установке Nornir на Windows в среде Anaconda, с использованием файлов из презентации Дмитрия. Кроме того, попробуем использовать Nornir для сбора информации с сетевых устройств.

Статья будет полезна для новичков, использующих Windows и никогда не работавших с Nornir.

Оглавление:

  1. Настройка виртуального окружения в дистрибутиве Anaconda
  2. Установка Nornir в виртуальное окружение
  3. Тестирование и получение первых данных

Настройка виртуального окружения в дистрибутиве Anaconda

Итак имеем на борту:

  • Widows 10 c предустановленным дистрибутивом Anaconda с версией Python 3.7.
  • EVE-NG с запущенными сетевыми устройствами из лабораторной работы #

Первым шагом запускаем Anaconda Promt от имени администратора:

Командная строка Anaconda Promt

Создаем виртуальное окружение с версией python 3.7 под названием nornir, командой:

conda create --name nornir python=3.7

Что такое виртуальное окружение и зачем оно используется можно прочитать здесь. Соглашаемся с условиями и нажимаем Enter. После этого у нас создастся новое виртуальное окружение:

Виртуальное окружение

Активируем виртуальное окружение командой:

conda activate nornir

Переходим в директорию с файлами из презентации Дмитрия Фиголя. Файлы понадобятся для демонстрации работы с Nornir.

Папка с установленными файлами

Далее пробуем запустить Jupyter Notebook в виртуальном окружении одноименной командой, но на экран выводится ошибка:

Ошибка виртуального окружения

Если запустить Jupyter Notebook вне созданного виртуального окружения nornir, то он прекрасно запуститься.

Запуск Jupyter Notebook

Откроется вкладка браузера с Jupyter Notebook в директории с файлами:

Вкладка браузера Jupyter Notebook

Так как мы хотим, чтобы Jupyter Notebook запускался из нашего виртуального окружения, надо будет его настроить. Для этого устанавливаем возможность запуска Jupyter Notebook следующим образом:

pip install jupyter notebook

Запускаем Jupyter Notebook из виртуальной среды nornir командой:

jupyter notebook

Теперь мы можем запускать Jupyter Notebook из нашего виртуального окружения. Создаем новый файл через выбор вкладки New - Python3:

Создание нового файла в Jupyter Notebook

Откроется новая вкладка с вновь созданным файлом. Можно его переименовать, что я и сделал, назвав его Nornir.

Новый файл

При этом в директории появится файл Nornir с расширением .ipynb, который мы будем использовать для демонстрации:

Расширение .ipynb

Установка Nornir в виртуальное окружение

Далее попробуем запустить Nornir:

Импортирование Nornir

Возникла ошибка ModuleNotFoundError: No module named 'nornir'. Это говорит о том, что модуль не установлен и его надо будет установить. Для этого мы открываем еще окно Anaconda Promt и воспользовавшись документацией, пробуем установить Nornir в нашу виртуальную среду, воспользовавшись командой:

pip install nornir
Установка Nornir в виртуальную среду

Соглашаемся с установкой и ждем ее окончания.

Проверяем, установился ли Nornir. Для этого в ноутбуке Nornir вводим команду:

import nornir.core  
и жмем Shif+Enter
Проверка установки Nornir

Не возникло никакой ошибки и можно приступить к инициализации Nornir. Самый простой способ инициализации через функцию  InitNornir. С помощью InitNornir вы можете инициализировать nornir с помощью конфигурационного файла, кода или их комбинации. Мы пойдем по "пути наименьшего сопротивления" и используем файл config.yaml, который у нас предварительно загружен в директорию. Воспользуемся следующими командами:

from nornir import InitNornir
nr = InitNornir(config_file="config.yaml")
Инициализация Nornir

Далее переходим к инвентаризации. Инвентаризация является чуть ли не самой важной частью Nornir. Она состоит из хостов, групп и настроек по умолчанию. Для хранения данных инвентаризации используется плагин SimpleInventory. Этот модуль инвентаризации хранит все необходимые данные в трех файлах- hostsgroups и defaults.

Вы можете получить доступ к инвентаризации с атрибутом inventory:

from nornir import InitNornir
nr = InitNornir(config_file="config.yaml")

print(nr.inventory.hosts)

Посмотрим настройки файла hosts. Файл hosts в основном представляет собой карту, где самым внешним ключом является имя хоста, а затем объект InventoryElement. Как видим у нас есть два коммутатора SW1 и SW2 c ip адресами 192.168.2.1 и 192.168.2.2 соответственно, находящиеся в группах Kremlin и White House.

Идем в настройки файла groups. Здесь у нас представлены настройки групп.

Наконец, файл defaults имеет ту же схему, что и описанный ранее InventoryElement, но без внешних ключей для обозначения отдельных элементов. Здесь прописаны имя пользователя и пароль для всех устройств:

Тестирование и получение первых данных

Nornir у нас импортирован. Проверяем настройки хостов:

Далее можем проверить группы:

Проверяем настройки конкретного хоста:

Ну и последний шаг соответственно к чему мы стремились это автоматизированное получение первых данных с устройств. Для этого воспользуемся документацией и демонстрацией из сессии Дмитрия. Берем готовый скрипт и запускаем:

from nornir import InitNornir
nr = InitNornir(config_file="config.yaml")
from nornir.plugins.tasks.networking import netmiko_send_command
from nornir.plugins.function.text import print_result
results = nr.run(netmiko_send_command, command_string = 'sh ip int brief')
print_result(results)

Данные успешно получены:

Дальше вы можете сами пробовать какие-то новые вещи в Nornir.

Рабочая тетрадь для рефлексии.

Присоединяйтесь к каналу Devnet

































Report Page