УДК 004.5
ББК 32.812
Э30
Э30 Автоматизация программируемых сетей / пер. с анг. А. В. Снас тина. – М.:
ДМК Пресс, 2019. – 616 с.: ил.
Эделман Дж., Лоу С. С., Осуолт М.
ISBN 978-5-97060-699-5
Постоянное появление новых протоколов, технологий, моделей доставки и ужесточение
требований к интеллектуальности и гибкости бизнес-процессов сделали сетевую
автоматизацию чрезвычайно важной. Это практическое руководство наглядно демонстрирует
сетевым инженерам, как использовать широкий спектр технологий и инструментальных
средств, в том числе Linux, Python, JSON и XML, для автоматизации систем
с помощью написания программного кода.
Книга поможет вам упростить выполнение задач, связанных с конфигурированием,
управлением и эксплуатацией сетевого оборудования, топологий, сервисов и поддержкой
сетевых соединений. Внимательно изучая ее, вы получите основные практические
навыки и освоите инструментальные средства, необходимые для сложного перехода
к автоматизации сети.
УДК 004.5
ББК 32.812
Authorized Russian translation of the English edition of Internet of Network Programmability
and Automation ISBN 9781491931257 © 2018 Jason Edelman, Scott S. Lowe, Matt Oswalt.
This translation is published and sold by permission of Packt Publishing, which owns or
controls all rights to publish and sell the same.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой
бы то ни было форме и какими бы то ни было средствами без письменного разрешения
владельцев авторских прав.
ISBN 978-1-491-93125-7 (анг.)
ISBN 978-5-97060-699-5 (рус.)
© 2018 Jason Edelman, Scott S. Lowe, Matt Oswalt
© Оформление, издание, перевод, ДМК Пресс, 2019
Стр.5
Содержание
Предисловие ............................................................................................................... 12
Глава 1. Тенденции в современной промышленной
эксплуатации сетей ................................................................................................. 20
Возникновение технологии программно определяемой сети ........................................ 20
OpenFlow ......................................................................................................................... 21
Что такое программно определяемая сеть ................................................................... 25
Резюме ................................................................................................................................. 39
Глава 2. Автоматизация сети ............................................................................. 40
Для чего нужна автоматизация сети ................................................................................. 40
Упрощение архитектуры ............................................................................................... 41
Детерминированные результаты .................................................................................. 42
Гибкость бизнеса ............................................................................................................ 42
Типы автоматизации сети ................................................................................................. 43
Подготовка и настройка устройств ............................................................................... 43
Сбор данных ................................................................................................................... 46
Переходы между платформами .................................................................................... 47
Управление конфигурацией .......................................................................................... 49
Совместимость ............................................................................................................... 49
Составление отчетов ...................................................................................................... 50
Устранение проблем ...................................................................................................... 51
Развитие уровня управления от протокола SNMP до API устройств .............................. 53
Прикладные программные интерфейсы (API) ............................................................ 53
Влияние концепции открытых сетей ........................................................................... 57
Глава 3. Операционная система Linux ........................................................ 60
Изучение ОС Linux с точки зрения автоматизации сети ................................................. 60
Краткая история создания ОС Linux ................................................................................. 61
Дистрибутивы Linux ........................................................................................................... 62
Red Hat Enterprise Linux, Fedora и CentOS .................................................................... 62
Debian, Ubuntu и другие производные дистрибутивы ................................................ 64
Другие дистрибутивы Linux .......................................................................................... 66
Автоматизация сети в эпоху SDN ...................................................................................... 58
Резюме ................................................................................................................................. 59
Работа в ОС Linux ................................................................................................................ 66
Перемещение по файловой системе ............................................................................ 67
Работа с файлами и каталогами .................................................................................... 72
Выполнение программ .................................................................................................. 79
Стр.7
Содержание 7
Работа с демонами ......................................................................................................... 82
Работа с сетями в ОС Linux ................................................................................................ 87
Работа с интерфейсами ................................................................................................. 87
Маршрутизация для конечного хоста ........................................................................... 98
Конфигурация маршрутизатора ................................................................................. 103
Коммутация .................................................................................................................. 105
Резюме ............................................................................................................................... 111
Глава 4. Изучение языка программирования Python
для применения в сетевой среде ................................................................ 112
Должны ли сетевые инженеры уметь писать программный код? ................................ 113
Использование интерактивного интерпретатора Python ............................................. 115
Типы данных языка Python.............................................................................................. 117
Использование строк ................................................................................................... 118
Использование числовых значений ........................................................................... 128
Использование логических значений ........................................................................ 130
Использование списков ............................................................................................... 133
Использование словарей ............................................................................................. 138
Множества и кортежи языка Python ........................................................................... 143
Использование условных логических выражений ......................................................... 145
Концепция объекта, содержащего другие объекты ........................................................ 148
Использование циклов ..................................................................................................... 149
Использование цикла while ......................................................................................... 149
Использование цикла for ............................................................................................. 150
Использование функций .................................................................................................. 154
Работа с файлами .............................................................................................................. 158
Чтение данных из файла ............................................................................................. 158
Запись данных в файл .................................................................................................. 161
Создание программ на языке Python .............................................................................. 163
Создание простого скрипта на языке Python............................................................. 163
Что такое shebang ......................................................................................................... 164
Перемещение кода из интерпретатора Python в независимый скрипт .................. 166
Работа с модулями языка Python .................................................................................... 167
Передача аргументов в скрипт ........................................................................................ 169
Использование pip для установки пакетов языка Python .............................................. 171
Советы, приемы и дополнительная информация по использованию
языка Python ..................................................................................................................... 173
Резюме ............................................................................................................................... 179
Глава 5. Форматы и модели данных .......................................................... 180
Введение в форматы данных ........................................................................................... 180
Типы данных ................................................................................................................ 182
YAML .................................................................................................................................. 184
Краткий обзор основ YAML ......................................................................................... 184
Работа с YAML в коде Python ....................................................................................... 187
Модели данных в YAML ............................................................................................... 188
XML .................................................................................................................................... 190
Стр.8
8 Содержание
Основы XML .................................................................................................................. 190
Использование определения схемы XML Schema Definition (XSD)
для моделей данных .................................................................................................... 191
Преобразование XML с помощью XSLT ...................................................................... 193
Поиск в данных XML с использованием XQuery ........................................................ 197
JSON ................................................................................................................................... 197
Основы формата JSON ................................................................................................. 198
Обработка формата JSON в коде Python ..................................................................... 200
Использование механизма JSON Schema для моделей данных ................................ 201
Создание моделей данных с использованием YANG ..................................................... 202
Общий обзор языка YANG ................................................................................................ 202
Практическое применение языка YANG .................................................................... 203
Резюме ............................................................................................................................... 207
Глава 6. Шаблоны сетевой конфигурации .............................................. 208
Современные языки шаблонов........................................................................................ 209
Использование шаблонов для веб-разработки .......................................................... 210
Универсальность шаблонов ......................................................................................... 211
Важность использования шаблонов в процессе автоматизации сети .......................... 212
Язык Jinja для создания шаблонов сетевой конфигурации ........................................... 213
Почему именно Jinja .................................................................................................... 213
Динамическая вставка данных в простой шаблон Jinja ............................................ 214
Обработка файла шаблона Jinja средствами языка Python ....................................... 215
Условные выражения и циклы .................................................................................... 217
Фильтры Jinja ................................................................................................................ 224
Наследование шаблонов в языке Jinja ........................................................................ 227
Создание переменных в Jinja ...................................................................................... 228
Резюме ............................................................................................................................... 229
Глава 7. Использование сетевых прикладных
программных интерфейсов (API) ................................................................. 230
Основы сетевых API .......................................................................................................... 231
Введение в API-интерфейсы на основе протокола HTTP .......................................... 231
Основы NETCONF ......................................................................................................... 236
Практическое использование сетевых API ..................................................................... 244
Практическое использование API на основе протокола HTTP ................................. 245
Практическое использование NETCONF .................................................................... 252
Автоматизация с использованием сетевых API ............................................................. 261
Использование библиотеки requests .......................................................................... 262
Использование Python-библиотеки ncclient .............................................................. 292
Использование библиотеки netmiko ........................................................................... 317
Резюме ............................................................................................................................... 322
Глава 8. Управление исходным кодом с помощью Git ................... 325
Варианты использования средств управления исходным кодом ................................. 326
Преимущества системы управления исходным кодом ................................................. 326
Стр.9
Содержание 9
Отслеживание изменений ........................................................................................... 327
Учетные записи ............................................................................................................ 327
Процесс и рабочий поток ............................................................................................ 327
Преимущества системы управления исходным кодом в сетевой среде ....................... 328
Знакомство с Git ............................................................................................................... 328
Краткая история создания и развития Git ................................................................. 329
Терминология Git ......................................................................................................... 330
Обзор архитектуры Git ................................................................................................ 331
Работа с системой Git ....................................................................................................... 332
Установка системы Git ................................................................................................. 332
Создание репозитория ................................................................................................ 333
Добавление файлов в репозиторий ............................................................................ 333
Выполнение коммита изменений в репозиторий ..................................................... 335
Внесение изменений и выполнение коммитов в отслеживаемые файлы ............... 339
Отмена фиксации файлов в индексе .......................................................................... 342
Исключение файлов из репозитория ......................................................................... 345
Получение более подробной информации о репозитории....................................... 349
Определение различий между версиями файлов ...................................................... 354
Создание ветвей версий в системе Git ............................................................................ 358
Создание ветви ............................................................................................................. 363
Выбор активной ветви ................................................................................................. 364
Объединение и удаление ветвей ................................................................................. 366
Совместная работа группы сотрудников в системе Git ................................................. 371
Совместная работа в нескольких системах, использующих Git ............................... 372
Совместная работа с использованием онлайновых сервисов на основе Git ........... 389
Резюме ............................................................................................................................... 395
Глава 9. Инструментальные средства автоматизации .................... 396
Краткий обзор инструментальных средств автоматизации ......................................... 396
Использование Ansible ..................................................................................................... 399
Основы работы Ansible ................................................................................................ 400
Создание inventory-файла ........................................................................................... 401
Выполнение сценария Ansible .................................................................................... 408
Использование файлов переменных .......................................................................... 412
Создание комплектов сценариев Ansible для автоматизации сети ......................... 414
Использование сторонних модулей Ansible от независимых авторов .................... 433
Резюме по системе Ansible .......................................................................................... 436
Автоматизация сети с использованием Salt ................................................................... 437
Основы архитектуры Salt ............................................................................................ 437
Общая информация о Salt ........................................................................................... 440
Управление сетевыми конфигурациями с помощью Salt ......................................... 458
Удаленное выполнение функций Salt ......................................................................... 467
Управляемая событиями инфраструктура Salt .......................................................... 469
Дополнительная информация о Salt ........................................................................... 475
Краткий итоговый обзор системы Salt ....................................................................... 478
Автоматизация сети, управляемая событиями, с использованием
StackStorm ......................................................................................................................... 479
Основные концепции системы StackStorm ................................................................ 480
Стр.10
10 Содержание
Архитектура StackStorm .............................................................................................. 482
Операции и рабочие потоки ....................................................................................... 484
Сенсоры и триггеры ..................................................................................................... 493
Правила ......................................................................................................................... 496
Краткий итоговый обзор системы StackStorm ........................................................... 499
Резюме ............................................................................................................................... 499
Глава 10. Непрерывная интеграция ........................................................... 500
Важные предпосылки ....................................................................................................... 502
Чем проще, тем лучше ................................................................................................. 502
Люди, процесс и технология ........................................................................................ 503
Изучение программного кода ..................................................................................... 503
Введение в непрерывную интеграцию ........................................................................... 504
Основы непрерывной интеграции ............................................................................. 504
Непрерывная доставка ................................................................................................ 506
Разработка через тестирование .................................................................................. 508
Применимость методики непрерывной интеграции к сетевой среде ..................... 511
Конвейер непрерывной интеграции для сетевой среды ............................................... 512
Рецензирование коллегами ......................................................................................... 513
Автоматизация сборки ................................................................................................ 519
Среда тестирования/разработки/перемещения данных ........................................... 524
Инструментальные средства развертывания ............................................................ 528
Инструментальные средства тестирования и автоматизация сети
по методике разработки через тестирование ............................................................ 531
Резюме ............................................................................................................................... 533
Глава 11. Формирование культуры автоматизации сети .............. 535
Организационная стратегия и гибкость ......................................................................... 536
Преобразование организации старого образца ......................................................... 536
Важность поддержки со стороны руководства .......................................................... 538
Купить или создать самостоятельно ........................................................................... 540
Восприятие ситуаций критических сбоев ...................................................................... 541
Практические навыки и обучение ................................................................................... 543
Изучайте неизвестное ................................................................................................. 544
Сосредоточьтесь на основных принципах ................................................................. 545
Нужны ли сертификации? ........................................................................................... 546
Может ли автоматизация лишить людей работы ...................................................... 547
Резюме ............................................................................................................................... 548
Приложение А. Профессиональное управление
сетевой средой в ОС Linux ............................................................................... 550
Использование интерфейсов macvlan ............................................................................. 550
Варианты практического использования интерфейсов macvlan ............................. 551
Создание, конфигурирование и удаление интерфейсов macvlan ............................ 551
Виртуальные машины в сетевой среде ........................................................................... 553
Использование шлюза ................................................................................................. 554
Стр.11
Содержание 11
Использование интерфейсов macvtap ........................................................................ 557
Работа с сетевыми пространствами имен .................................................................. 558
Практические примеры использования сетевых пространств имен ....................... 559
Создание и удаление сетевых пространств имен ...................................................... 560
Размещение интерфейсов в сетевом пространстве имен ......................................... 560
Выполнение команд в определенном сетевом пространстве имен ......................... 562
Соединение сетевых пространств имен с помощью пар veth .................................. 564
Использование контейнеров Linux в сетевой среде ...................................................... 566
Конфигурирование сетевой среды в LXC ................................................................... 567
Конфигурирование сетевой среды в Docker ............................................................... 568
Использование Open vSwitch ........................................................................................... 570
Установка OVS .............................................................................................................. 570
Конфигурирование OVS ............................................................................................... 572
Соединение нескольких типов рабочих нагрузок в OVS ........................................... 575
Приложение Б. Использование NAPALM ................................................. 583
Управление конфигурацией с использованием NAPALM .............................................. 583
Выполнение операции замены конфигурации ......................................................... 584
Выполнение операции объединения конфигураций ................................................ 588
Получение данных от устройств с помощью NAPALM................................................... 591
Возможности интеграции NAPALM с другим ПО ........................................................... 593
Использование NAPALM в Ansible .............................................................................. 594
Использование NAPALM в Salt .................................................................................... 595
Использование NAPALM в StackStorm ........................................................................ 596
Предметный указатель ....................................................................................... 598
Стр.12