- Местами информация взята из собственного достаточно богатого опыта, местами из статьи habr и подкастов linkmeup
- `Автоматизация позволяет допускать меньше ошибок за счет учета алгоритмами типовых вещей, с другой стороны, если в самой автоматизации будет допущена ошибка, масштаб этой ошибки может быть очень глобальным (на моей памяти были примеры массовых окирпичиваний :)) – поэтому скорость деплоя зачастую не так важна при работе с сетевыми устройствами (в том числе поэтому от использования cli интерфейса для автоматизации не слишком страдают) и администраторы кучу раз перестраховываются перед массовым деплоем в прод, в том числе разнося изменения по времени.
- Сетевики с навыками кодинга нужны/есть во всех крупных компаниях – google, microsoft, facebook. За автоматизицию с опенсорсом сетевик может зарабатывать вплоть до 350к долларов (silicon valley). Автоматизация в таких компаниях достигает зачастую такого уровня, что исключает ручной ввод команд на устройстве полностью – между администратором и устройством есть прослойки, реализующие множество вещей
- не привязанные к вендору абстракции, управляющие модулями/драйверами, заточенными под конкретных вендоров
- деплой изменений в тестовой зоне,
- проверки корректности деплоя в тестовой зоне,
- проверки / фиксации первичного состояния прода,
- деплой в проде,
- коммит изменений в VCS
- проверки корректности деплоя и при необходимости быстрый откат на предыдущую версию
- Полный ZTP – от автовыделения адреса в IPAM до заливки прошивки и прод конфигурации и маршрутизация трафика девайсом в проде (через консольный интерфейс/DHCP/PXE/TR-069/Netconf/CloneZilla/etc)
- (дублируется в мониторинге и автоматизации сети) Автоматизация зачастую затрагивает интеграцию множества систем между собой. К примеру, на современные мониторинг системы зачастую ложится задача помимо самого мониторинга/оповещения/заведения инцидентов интеграция с системами провишенинга – напр. для реализаций сценариев по событию мониторинга:
- запускается некая healing логика (напр. деплой с нуля нового компонента/виртуальной машины вместо упавшего, поднятие бекапа)
- собирается доп.информация в инциденты
- проч автоматизированные интеграции
- Инструменты, часто используемые для автоматизации в целом и сети в частности: ansible, puppe, gitlab, jenkins, saltstack, pappet, chef (подробнее в отдельной статье, там же описаны плюсы python/python + nornir в сравнении с ansible)
- Протоколы и методы так же разные – от cli/snmp, до netconf/restconf (подробнее в отдельной статье)
- Ci/cd в сети – проверка необходимости изменения, деплой в тестовом контуре и автоматизированный анализ результатов, деплой в проде с кучей проверок.
- Главное это решение реальных задач, а не перфекционизм. Поэтому Expect/pexpect CLI – это зачастую нормальные/рабочие способы автоматизации! На тех же серверах так и делается зачастую. Можно даже сказать большее – зачастую средства самих вендоров по api под капотом предоставляя другой интерфейс снаружи по факту внутри используют cli 🙂 по сути просто метод доставки конфига/команд.
- Билайн, амазон, яндекс, одноклассники – да по сути почти все используют самописные утилиты, в том числе, часть или все операции зачастую там реализуются через CLI интерфейс (зачастую через прослойки типо nornir или почти напрямую через paramiko) и ничего постыдного в этом нет.
- ASA поддерживает REST (CRUD).
- У CUCM есть поддержка SOAP.
- Уже миллионы лет есть библиотеки по управлению сетевым оборудованием через CLI.
Для Perl существует модуль Net::Telnet Описание на www.cpan.org Для Python существует библиотека telnetlib Описание на www.python.org Также существуют аналогичные модули для работы с FTP, SSH и другими сетевыми протоколами.
- Программирование крайне важно сейчас для сетевых инженеров, которые поддерживают крупные сети. Используя api + скрипты можно изменять конфигурации максимально масштабируемо на современных устройствах Cisco. Скрипты можно писать на python, go и даже php, perl, javascript, swift. Первым и зачастую единственным языком рекомендуется python. При подключении к rest api очень часто используется связка python + requests library.
- Cisco добавила темы по автоматизации в сертификацию CCNA R&S. И отдельный трек по автоматизации devnet. Конечно во многом они пиарят там свои платформы – Cisco ACI (Application Centric Infrastructure), Cisco NSO (Network Services Orchestrator, на базе tail-f) для реализации сервисов OSS и говорят что кодинг (custom coding) с ними, по сути, не нужен. Но это безусловно в первую очередь касается стандартных кейсов использования поддерживаемых платформой устройств и чаще всего вендор лок в виде Cisco.
Automation and Programmability
Cisco has acquired Tail-f Systems, a leading provider of multi-vendor network service orchestration solutions for traditional and virtualized networks.
- Плагины в IDE поддерживают синтаксис оборудования передачи данных 🙂 Красота.
https://marketplace.visualstudio.com/items?itemName=codeout.vscode-junos