Установка Nornir на Windows для чайников
Emil GaripovВдохновившись тем, как Дмитрий Фиголь в своей сессии легко отправляет и получает данные на несколько сетевых устройств "одним нажатием кнопки", решил установить Nornir и попробовать его так сказать в деле. Так как для меня это совсем новый опыт, то статья будет именно о пошаговой установке Nornir на Windows в среде Anaconda, с использованием файлов из презентации Дмитрия. Кроме того, попробуем использовать Nornir для сбора информации с сетевых устройств.
Статья будет полезна для новичков, использующих Windows и никогда не работавших с Nornir.
Оглавление:
- Настройка виртуального окружения в дистрибутиве Anaconda
- Установка Nornir в виртуальное окружение
- Тестирование и получение первых данных
Настройка виртуального окружения в дистрибутиве Anaconda
Итак имеем на борту:
- Widows 10 c предустановленным дистрибутивом Anaconda с версией Python 3.7.
- EVE-NG с запущенными сетевыми устройствами из лабораторной работы #
Первым шагом запускаем 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 следующим образом:
pip install jupyter notebook

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

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

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

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

Установка Nornir в виртуальное окружение
Далее попробуем запустить Nornir:

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

Соглашаемся с установкой и ждем ее окончания.
Проверяем, установился ли Nornir. Для этого в ноутбуке Nornir вводим команду:
import nornir.core
и жмем Shif+Enter

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

Далее переходим к инвентаризации. Инвентаризация является чуть ли не самой важной частью Nornir. Она состоит из хостов, групп и настроек по умолчанию. Для хранения данных инвентаризации используется плагин SimpleInventory. Этот модуль инвентаризации хранит все необходимые данные в трех файлах- hosts, groups и 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