25. Автоматизация сети с помощью Python

Обновлено: 2024-03-12
6 мин

Python для автоматизации сети

Python — это стандартный язык, используемый для автоматизированных сетевых операций.

Хотя это не только автоматизация сети, кажется, что оно везде, когда вы ищете ресурсы, и, как упоминалось ранее, если это не Python, то обычно это Ansible, который также написан на Python.

Я думаю, что уже упоминал об этом, но в разделе «Изучение языка программирования» я выбрал Golang, а не Python, по причинам, связанным с тем, что моя компания разрабатывает Go, так что это было хорошей причиной для меня, чтобы учиться, но если это не так, тогда Python взял бы это время.

  • Удобочитаемость и простота использования. Кажется, что Python просто имеет смысл. Похоже, что в коде нет требований к {} для начального и конечного блоков. Соедините это с сильной IDE, такой как VS Code, у вас будет довольно легкий старт, если вы хотите запустить какой-либо код Python.

Pycharm может быть еще одной IDE, о которой стоит упомянуть.

  • Библиотеки. Расширяемость Python - это настоящая золотая жила, я упоминал ранее, что это не только для сетевой автоматизации, но на самом деле существует множество библиотек для всех видов устройств и конфигураций. Вы можете увидеть огромное количество здесь PyPi

Если вы хотите загрузить библиотеку на свою рабочую станцию, вы используете инструмент под названием «pip», чтобы подключиться к PyPI и загрузить его локально. Сетевые поставщики, такие как Cisco, Juniper и Arista, разработали библиотеки для облегчения доступа к своим устройствам.

  • Мощный и эффективный - Помните, во времена Go я прошел сценарий “Hello World”, и мы прошли, кажется, 6 строк кода? В Питоне это
print('hello world')

Сложите все вышеперечисленные пункты вместе, и должно быть легко понять, почему Python обычно упоминается как инструмент де-факто при работе над автоматизацией.

Я думаю, важно отметить, что, возможно, несколько лет назад существовали сценарии, которые могли взаимодействовать с вашими сетевыми устройствами, чтобы, возможно, автоматизировать резервное копирование конфигурации или собирать журналы и другую информацию о ваших устройствах. Автоматизация, о которой мы здесь говорим, немного отличается, потому что общий сетевой ландшафт также изменился, чтобы лучше соответствовать этому образу мышления и обеспечить большую автоматизацию.

  • Программно-определяемая сеть (Software-Defined Network). Контроллеры SDN несут ответственность за доставку конфигурации уровня управления на все устройства в сети, что означает только единую точку контакта для любых изменений в сети, больше не требуется telnet или SSH для доступа к каждому устройству, а также полагаются на люди, чтобы сделать это, что имеет повторяющийся шанс отказа или неправильной конфигурации.

  • Оркестрация высокого уровня (High-Level Orchestration ). Поднимитесь на уровень выше этих контроллеров SDN, и это позволит оркестровать уровни обслуживания, а затем интегрировать этот уровень оркестровки в выбранные вами платформы, VMware, Kubernetes, общедоступные облака и т. д.

  • Управление на основе политик (Policy-based management) - Что вы хотите иметь? Какое желаемое состояние? Вы описываете это, и в системе есть все детали, как это понять, чтобы стать желаемым состоянием.

Настройка рабочей среды

Не у всех есть доступ к физическим маршрутизаторам, коммутаторам и другим сетевым устройствам.

Я хотел дать нам возможность ознакомиться с некоторыми из ранее упомянутых инструментов, а также получить практические навыки и научиться автоматизировать настройку наших сетей.

Когда дело доходит до вариантов, есть несколько, из которых мы можем выбрать.

Мы построим нашу среду, используя Eve-ng, как упоминалось ранее, вы можете использовать физическое устройство, но, честно говоря, виртуальная среда означает, что у нас может быть среда-песочница. для тестирования множества различных сценариев. Кроме того, может быть интересна возможность играть с различными устройствами и топологиями.

Мы собираемся делать все на EVE-NG с изданием сообщества.

Начало

Издание сообщества поставляется в форматах ISO и OVF для загрузки.

Мы будем использовать загрузку в формате OVF, но в случае с ISO есть возможность сборки на «голом железе» без использования гипервизора.

Для нашего пошагового руководства мы будем использовать VMware Workstation, поскольку у меня есть лицензия через мой vExpert, но вы в равной степени можете использовать VMware Player или любой другой вариант, упомянутый в документации. К сожалению, мы не можем использовать нашу ранее созданную среду в Virtual box!

Здесь также у меня возникла проблема с GNS3 с Virtual Box, хотя он и поддерживается.

Download VMware Workstation Player - FREE

VMware Workstation PRO. Есть бесплатный пробный период.

Установка на VMware Workstation PRO

Теперь у нас загружено и установлено программное обеспечение hypervisor, а также загружен файл EVE-NG OVF. Теперь мы готовы к настройке. Откройте VMware Workstation, а затем выберите file -> open.

Когда вы загружаете образ EVE-NG OVF, он будет находиться в сжатом файле. Извлеките содержимое в свою папку, чтобы оно выглядело так.

Перейдите в папку, в которую вы загрузили образ EVE-NG OVF, и начните импорт. Дайте ему узнаваемое имя и сохраните виртуальную машину где-нибудь в вашей системе.

Когда процесс импорта завершится, увеличьте количество процессоров до 4 и объем выделенной памяти до 8 ГБ. (Это должно быть после импорта с последней версией, если нет, то отредактируйте настройки ВМ)

Также убедитесь, что установлен флажок Virtualise Intel VT-x/EPT или AMD-V/RVI. Этот параметр указывает рабочей станции VMware передавать флаги виртуализации гостевой ОС (вложенная виртуализация). Это была проблема, с которой я столкнулся с GNS3 с Virtual Box, хотя мой процессор это позволяет.

Включение и доступ

Примечание и кроличья нора: помните, я упоминал, что это не будет работать с VirtualBox! Ну да, была такая же проблема с VMware Workstation и EVE-NG, но это не вина платформы виртуализации!

У меня есть WSL2, работающий на моей машине с Windows, и это, похоже, лишает возможности запускать что-либо, вложенное в вашу среду. Я смущен тем, почему виртуальная машина Ubuntu работает, поскольку она, кажется, устраняет аспект виртуализации Intel VT-d ЦП при использовании WSL2.

Чтобы решить эту проблему, мы можем запустить следующую команду на нашем компьютере с Windows и перезагрузить систему, обратите внимание, что, пока она отключена, вы не сможете использовать WSL2.

bcdedit /set hypervisorlaunchtype off

Если вы хотите вернуться и использовать WSL2, вам нужно будет запустить эту команду и перезагрузиться.

bcdedit /set hypervisorlaunchtype auto

Обе эти команды нужно запускать от имени администратора!

Хорошо, вернемся к шоу. Теперь у вас должна быть включенная машина в VMware Workstation, и у вас должно появиться приглашение, похожее на это.

Данные для входа:

username = root password = eve

Затем вас попросят снова ввести пароль root, который позже будет использоваться для SSH-соединения с хостом. Затем мы можем изменить имя хоста.

Затем мы определяем доменное имя DNS, я использовал имя ниже, но я не уверен, нужно ли будет его изменить позже.

Затем мы настраиваем сеть, я выбираю статический, чтобы указанный IP-адрес оставался постоянным после перезагрузки.

На последнем шаге укажите статический IP-адрес из сети, доступной с вашей рабочей станции.

Здесь есть несколько дополнительных шагов, где вам нужно будет указать маску подсети для вашей сети, шлюз по умолчанию и DNS. После завершения он перезагрузится, когда будет выполнено резервное копирование, вы можете взять свой статический IP-адрес и ввести его в свой браузер.

Имя пользователя по умолчанию для графического интерфейса — «admin», пароль — «eve», а имя пользователя по умолчанию для SSH — «root» и пароль — «eve», но это было бы изменено, если бы вы изменили его во время установки.

Я выбрал HTML5 для консоли вместо нативной, так как это откроет новую вкладку в вашем браузере, когда вы будете перемещаться по разным консолям.

Далее мы собираемся:

  • Установить клиентский пакет EVE-NG
  • Загрузить некоторые сетевые образы в EVE-NG.
  • Построить топологию сети
  • Добавить “ноды” (машины/хосты, Nodes)
  • Соединить ноды между собой
  • Начнем создавать скрипты Python
  • Посмотрим на telnetlib, Netmiko, Paramiko и Pexpect

Ресурсы