Инструменты сетевого инженера: от блокнота до смартфона +5


AliExpress RU&CIS

image

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

Текстовый редактор


Что нужно:

  • редактирование конфигов (в том числе с применением regex);
  • сравнение конфигов;
  • просмотр и анализ лог-файлов;
  • редактирование кода и всевозможных YAML, JSON, XML файлов.

Примеры продукта: Notepad++, Atom, Sublime Text, Visual Studio Code или любой другой. Ниже разберем примеры задач и их решения.

1. Редактирование конфигов

Например, есть некий конфиг, в котором надо по определенному правилу заменить некие параметры. Приведу оторванный от сетевой тематики пример: допустим есть список российских имен людей и надо заменить все женские и мужские имена на male/female. Тут на помощь придет использование регулярных выражений. Допустим, что все женские имена заканчиваются на “а” или “я”, тогда этого будет достаточно, чтобы выполнить задачу в две итерации:

  • Замена (^\S+?[ая]$) на female;
  • Замена (^[^f]\S+) на male.

image

image

image

image

Так же важно, чтобы текстовый редактор умел делать еще выбор по вертикали.

image

2. Сравнение двух конфигов

Сравнение конфигураций или логов — довольна частая задача в работе сетевого инженера.

image

3. Просмотр и анализ лог-файлов

Допустим, есть длинный лог файл и нам надо просмотреть только те строки, которые начинаются на “fe”. У разных редакторов это делается по-своему, рассмотрим на примере VS Code. Тут надо установить расширение “Filter Line” и затем будет возможность отобразить нужные строки по регулярному выражению.

image

image

image

4. Редактирование кода

Это довольно объемная тема. Для сетевого инженера чаще возникает задача редактирования кода на Python, а так же файлов YAML, JSON, XML. Минимально достаточные функции редактора для сетевого инженера:

  • табы и пробелы (настройка 1 таба как Х пробелов);
  • подсвечивание (и удаление) пустых пробелов в конце (trailing whitespace);
  • вертикальная линия на 79 (или сколько вам нужно) знаков;
  • помощь в редактировании YAML, JSON, XML файлов.

image

Совместная работа с файлами и шаблонами


Что нужно:

  • хранение и отслеживание изменений конфигов / шаблонов;
  • совместное редактирование конфигов / шаблонов;
  • процедура принятия изменений в конфигах / шаблонах командой.

Примеры продукта: утилиты Git, Github Desktop, GitKraken и пр., а также сервисы такие как GitHub, GitLab и пр. Ниже разберем примеры задач и их решения.

1. Хранение и версионирование файлов

Git позволяет хранить все версии файлов, позволяя переключаться между разными версиями. Может быть использован как клиент в командной строке, так и графический клиент, вроде Github Desktop, GitKraken и многие другие, в том числе и встроенные в IDE.

image

2. Совместное редактирование файлов

Сервис Git позволяют вести совместно один файл, при этом будет видно кто и какие изменения внес.

3. Процедура принятия изменений командой

Для совместной командной работы в сервисе GitHub может быть использован механизм Pull-request, когда выбранные участники команды подтверждают изменение конфигурации, и только после этого она попадает в основную ветку, при этом прозрачно видны все изменения.

image

4. Создание шаблонов

Jinja – это язык шаблонов, созданный для Python. Как правило, шаблоны конфигураций пишутся на языке Jinja, а генерирование конфигурации на основе шаблона производятся при помощи модуля Jinja2 для Python.

image

Подключение к оборудованию


Подключение к сетевому оборудованию — важная составляющая работы сетевым инженером.

Разделим варианты подключения на 4 условных типа:

  • подключение по SSH из терминала;
  • подключение по SSH с использованием Connection Manager-ов;
  • подключение по SSH с использованием средств управления конфигурацией;
  • подключение по API.

1. Подключение по SSH из терминала

Это самый простой и базовый вариант подключения из командной строки (bash, shell, zsh, PowerShell и пр.), тут могут быть применены алиасы и функции для упрощения процесса подключения:

  • простое подключение из терминала (для единичных подключений);
  • алиас (например, алиас на команду “ssh admin@10.1.1.1 -p 1111”);
  • функция (например, для оборачивания sshpass, утилиты для подключения по ssh, позволяющую не вводить пароль);
  • использование менеджеров окон tmux или screen для одновременного вывода на экран нескольких подключений и отправки групповых команд в несколько окон сразу.

2. Использование Connection Manager-ов

Более продвинутый способ подключения, представлен в графическом режиме, подходит для более регулярного использования. Пример популярных продуктов: SecureCRT, PAC Manager.

3. Использование средств управления конфигурацией

Применение средств управления конфигурацией (Ansible, Salt и пр.) позволяет автоматизировать конфигурирование сети.

Возможности средств управления конфигурацией:

  • Отправка команд на оборудование по условному имени, имени группы, составному перечню групп;
  • Отслеживание результата выполнения команды;
  • Использование сценариев для решения комплексных или регулярных задач.

4. Использование Python

Скрипты на Python позволяют автоматизировать подключение по SSH (модули pexpect, paramiko, netmiko, scrapli и пр.) и API (модули requests, NAPALM и пр.).

Возможный сценарий использования Python с целью динамического формирования инвентарного файла для Ansible:

image

5. Использование инструментов для тестирования API

Postman — это наиболее популярный инструмент для тестирования API. Позволяет протестировать подключение к оборудованию по API.

ChatOps — собрать все в единое целое


Сервис чата Slack позволяет интегрироваться с разными сервисами, такими как:

  • GitHub. При обновлении шаблонов или конфигов в Github довольно важно, чтобы все участники команды узнали об изменениях, для этого удобно использовать сервис чата, такой как Slack, и интегрировать туда чат-бота с уведомлениями изменений нужного репозитория на Github или другими сервисами.
  • Trello. Ведение задач в любой из систем будет хорошо дополнено уведомлениями в Slack, дополнительно, есть возможностью управлять задачами в Trello из чата, отправляя сообщения соответствующему боту в нужном канале.
  • Google Drive. Например, команда инженеров ведет общую базу знаний с документацией, тогда при интеграции с чатом, о добавлении нового файла в хранилище узнают все участники через автоматическое уведомление в соответствующем канале чата.

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

Традиционные инструменты


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

  1. Быстро или медленно (iperf и его аналоги)
  2. Найти проблему (Wireshark и его вариации)
  3. Сделать и проверить Wi-Fi (Ekahau Site Survey и аналоги)
  4. Прочие специфичные утилиты

Экзотика


Не стоит недооценивать возможности автоматизации в смартфонах. Гибкая настройка правил автоматизации и возможность запуска скрипта подключения по SSH на бастион-сервер с заданными параметрами или переменными может позволить решить ту или иную задачу по администрированию сетевой инфраструктуры или для каких-либо бытовых вопросов.
Приведу пример. Команда работает на разных площадках и не знает о том, кто когда пришел. Допустим, что есть некоторая особенность работы, что команде важно знать, кто когда пришел и ушел с работы. Вручную это сложно, а сам СКУД или интеграция с ним отсутствует.
Добавляем на смартфон автоматизацию, которая при попадании смартфона в определенную геолокацию будет запускать скрипт по подключению на некий сервер, и оттуда уже дергать web-hook бота в Slack чате curl-ом с заданными параметрами. Значение переменной времени можно брать из смартфона.



image




Комментарии (1):