Публикация научных статей.
Вход на сайт
E-mail:
Пароль:
Запомнить
Регистрация/
Забыли пароль?

Научные направления

Поделиться:
Статья опубликована в №13 (сентябрь) 2014
Разделы: Информационные технологии, Телекоммуникации
Размещена 16.09.2014. Последняя правка: 16.09.2014.
Просмотров - 4352

Методы автоматизации алгоритмов для работы с оборудованием Juniper

Лагутин Илья Анатольевич

Бакалавр Радиотехники

инженер-стажер филиала ЗАО «Энвижн Груп» Энвижн-Сибирь

Магистрант СибГУТИ

Консультант: Марамзин Валерий Валентинович, Ведущий инженер-конструктор Направление сетей и систем передачи данных NVision Group


Аннотация:
В статье проанализированы два метода автоматизированного взаимодействия пользователя с оборудованием Juniper, а так же выявлены их преимущества и недостатки.


Abstract:
The article is an analysis of two methods of user automated interaction with Juniper equipment. Also identified their strengths and weaknesses.


Ключевые слова:
автоматизация; Juniper; методы

Keywords:
Juniper; Junos; PuEZ; SLAX; automation; methods


УДК 004.722

Введение

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

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

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

Решением этого вопроса являются скрипты. Скриптом называется по факту любая исполняемая процедура. Но, говоря более конкретно, скрипт является программным файлом-сценарием,  где описана последовательность действий, которая будет выполняться. [1] В терминологии некоторых программ файлы сценарий могут называться макросами, что не меняет исходного их назначения. Скрипты могут применяться для сбора данных по сети и их обработки, автоматизации внесения изменений в конфигурационные файлы, а автоматизированные методы траблшутинга (поиска и устранения неисправностей) поспособствуют более быстрому выявлению и локализации проблемы, сократить список возможных причин и ускорить время к их разрешению.

Для написания скриптов существует много вариантов, вплоть до создания собственных программ на языках программирования высокого уровня. Приведем к анализу проприетарные методы автоматизации и создания скриптов, предлагаемые компанией Juniper.

Junos XML API

Junos XML API (Application Programming Interface) позволяет создать различные скрипты для Junos по осуществлению запросов и других действий над процессами. Сценарий автоматизации может быть написан на одном из сценарных языков: XSLT или SLAX.Последний (SLAX) был разработан компанией Juniper для предоставления пользователям более интуитивно понятного метода, в котором можно было бы создавать скрипты, и имеет естественный читабельный синтаксис. [2]

Скрипт является отдельным файлом, написанным с использованием XML, с расширением .slax . Примером самого простого скрипта, по традиции, является вывод на экран “Hello World” :

version 1.0;

ns Junos = "http://xml.juniper.net/Junos/*/Junos";

ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";

ns jcs = "http://xml.juniper.net/Junos/commit-scripts/1.0";

import "../import/Junos.xsl";

match / {

      {

      "Hello World!";

           }
}

Создав такой файл, необходимо загрузить его в директорию /var/db/scripts/op  устройства Juniper . Прежде чем запустить уже загруженный в память скрипт, необходимо активировать поддержку работы op script командой

set system scripts op file

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

user@Junos> op <filename>

Разумеется, SLAX имеет свой синтаксис и некоторые тонкости, а так же иерархическую структуру, схожую со структурой конфигурационного файла Juniper-устройства.[3]

Плюсы:

+ XML относительно прост

+ Иерархия для выражения иерархии, присущей сетям

+ Масштабируемость на макро и микроуровнях

Минусы:

- Передача XML создает больший траффик

- Разбор XML более медленен и требователен к памяти

 

Junos PyEZ

Являясь неким «микро-фреймворком» на базе языка Python, JunPyEZ позволяет удаленно администрировать Junos OS устройства и автоматизировать процесс взаимодействия с ними, не требуя при этом от пользователя особенных навыков в программировании, знаний о Junos OS или полного владения Junos OS XML API. [4]

Для людей, которые не обладают достаточными навыками программирования (например, сетевые инженеры), PyEZ предлагает для использования родную Python оболочку на своем сервере (которым может стать ноутбук, рабочая станция или даже планшет) для управления и удаленного контроля Junos OS устройств. Python оболочка является интерактивной средой, предоставляющей все необходимые инструменты для выполнения общих задач автоматизации, таких как тестирование, макросы, шаблоны. Используя предлагаемую оболочку, больше не придется всматриваться в экран в поисках нужных данных, все значения могут быть получены напрямую и непосредственно в виде массивов и хэш-таблиц.

Таким образом, Junos PyEZ предназначен для обеспечения тех же функций, которыми пользователи располагают в командной строке JunOS, при этом позволяя решать задачи автоматизации. Вот далеко неполный список возможностей оболочки: [5]

- Получение базовых данных об устройстве: версия ПО, серийный номер и т.д.

- Извлечение любой текущей информации об устройстве

- Извлечение конфигурации устройства

- Создание изменений в конфигурации из шаблонов

- Обеспечение общих услуг для таких задач, как безопасное копирование файлов или обновление ПО

 

Оболочка функционирует из командной строки *.nix систем, а также есть возможность установки на Windows OS.

Ниже приведен скрипт, содержащий ряд команд, которые выполняются до того, как Python передает управление консолью в операционном режиме. Здесь импортируются некоторые стандартные модули ( в т.ч. и основной Junos PyEZ) и производится подключение к устройству. [6]

import sys

from jnpr.junos import Device

from getpass import getpass

from pprint import pprint as pp

user = "script"

print "\nPlease provide password for user '" + user + "' on device '" + sys.argv[1] + "'."

passwd = getpass()

dev = Device(sys.argv[1],user=user,password=passwd)

try:

  dev.open()

  print "Connected to " + sys.argv[1] + " as dev"

except:

  print "Connection failed. :-("

  print "\n** Type exit() to quit **"

 

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

Далее, используя команды данной оболочки, можно получить абсолютно любую информацию о девайсе:

 

>>> pp (dev.facts)
{'2RE': False,
 'RE0': {'last_reboot_reason': '0x1:power cycle/failure ',
         'model': 'RE-SRX100H',
         'status': 'OK',
         'up_time': '19 days, 19 hours, 42 minutes, 41 seconds'},
         'fqdn': None,
 'hostname': None,
 'ifd_style': 'CLASSIC',
 'model': 'DELL J-SRX100H',
 'personality': 'SRX_BRANCH',
 'serialnumber': 'AB9110AE0730',
 'switch_style': 'VLAN',
 'version': '10.3R2.11',
 'version_info': junos.version_info(major=(10, 3), type=R, minor=2, build=11)}
 >>>
>>> for key in eths: print key.name
...
fe-0/0/0
fe-0/0/1
fe-0/0/2
fe-0/0/3
fe-0/0/4
fe-0/0/5
fe-0/0/6
fe-0/0/7
ae0
ae1
ae2
ae3
>>> 

 

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

Плюсы:

+ Простота использования

+ Не требуется знание языков программирования или разметки XML

+ Скорость отработки и получения данных

Минусы:

- Работа в основном только в linux системах (windows поддерживается, но не столь широко)

- Первичная интеграция и настройка библиотек занимает некоторое время

 

Заключение

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

Рассмотренные два метода имеют как преимущества, так и недостатки, и в разных ситуациях оба могут быть полноправно использованы. Но в целом, по результатам сравнительного анализа и изучения материалов, вариант с оболочкой Junos PyZE является менее громоздким и более удобным в применении. 

Библиографический список:

1. Сценарный язык https://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA
2. Junos® Automation Series DAY ONE: APPLYING JUNOS OPERATIONS AUTOMATION
3. SLAX Overview http://www.juniper.net/techpubs/en_US/junos14.1/topics/concept/junos-script-automation-slax-overview.html
4. Junos PyEZ https://techwiki.juniper.net/Automation_Scripting/010_Getting_Started_and_Reference/Junos_PyEZ
5. Using the Juniper PyEZ Library http://ipengineer.net/2014/05/using-juniper-pyez-library/
6. Junos PyEZ in Interactive Mode http://lamejournal.com/2014/01/01/junos-pyez-interactive-mode/




Рецензии:

16.09.2014, 16:49 Каменев Александр Юрьевич
Рецензия: Следует привести сравнительную характеристику анализируемых методов в виде таблицы. После этого рекомендуется к печати.

16.09.2014, 17:11 Бондаревский Аркадий Самуилович
Рецензия: Заслугой автора является выделение проблемной ситуации в области программной реализации сложных алгоритмов, - необходимости автоматического использования в ней многократно повторяемых стандартных составляющих. В работе эта задача решается посредством обращения к программным продуктам фирмы Juniper, - при использовании обоснованного автором пакета Junos PyEZ. Статья, как актуальная и содержащая новизну в области IT, может быть опубликована. А.С. Бондаревский.

30.09.2014, 9:18 Назарова Ольга Петровна
Рецензия: Приведен грамотный сравнительный анализ программных блоков. Рекомендуется к печати.



Комментарии пользователей:

Оставить комментарий


 
 

Вверх