Сети образуют основу для развертывания, поддержки и обслуживания приложений. Python — идеальный язык для сетевых инженеров, предлагающий инструменты, которые ранее были доступны только системным инженерам и разработчикам приложений. Прочитав эту книгу, вы из обычного сетевого инженера превратитесь в сетевого разработчика, подготовленного ко встрече с сетями следующего поколения.
Третье издание полностью переработано и обновлено для использования Python 3. Помимо новых глав, посвященных анализу сетевых данных с помощью стека ELK (Elasticsearch, Logstash, Kibana и Beats) и Azure Cloud Networking, в него включены сведения по использованию Ansible и фреймворков pyATS и Nornir. Кроме того, были обновлены примеры для лучшего понимания концепций и обеспечения совместимости.
Author(s): Эрик Чоу
Series: Для профессионалов
Edition: 3
Publisher: Питер
Year: 2023
Language: Russian
Commentary: Vector PDF
Pages: 528
City: СПб.
Tags: DevOps; Amazon Web Services; Microsoft Azure; Command Line; Web Programming; Python; Data Visualization; Monitoring; Logstash; Elastic Stack; Network Security; OSI Model; VLAN; Flask; matplotlib; Network Programming; Jenkins; TCP/IP; Automation; Ansible; Scapy; Git; Infrastructure as Code; Virtual Environments; SNMP; Cisco; Pexpect; Paramiko; Netmiko; Nornir; Juniper; Arista; Pygal; Graphviz; Test-Driven Development
Предисловие
Введение
Об авторе
О научном редакторе
Вступление
Кому подойдет эта книга
Какие темы здесь освещаются
Как извлечь максимум из этой книги
Загрузка файлов с примерами кода
Загрузка полноцветных иллюстраций
Условные обозначения
От издательства
Глава 1. Обзор протоколов TCP/IP и Python
Краткий обзор интернета
Серверы, хосты и сетевые компоненты
Появление дата-центров
Модель OSI
Клиент-серверная модель
Наборы сетевых протоколов
Протокол управления передачей (TCP)
Протокол пользовательских датаграмм (UDP)
Межсетевой протокол (IP)
Обзор языка Python
Версии Python
Операционные системы
Выполнение программы на Python
Встроенные в Python типы данных
Операторы в Python
Средства управления потоком выполнения в Python
Функции в Python
Классы в Python
Модули и пакеты в Python
Резюме
Глава 2. Низкоуровневое взаимодействие с сетевыми устройствами
Трудности работы с CLI
Создание виртуальной лаборатории
Физические устройства
Виртуальные устройства
Cisco VIRL
Cisco DevNet и dCloud
GNS3
Библиотека Python Pexpect
Виртуальная среда Python
Установка Pexpect
Краткий обзор Pexpect
Наша первая программа на основе Pexpect
Другие возможности Pexpect
Pexpect и SSH
Итоговая программа на основе Pexpect
Библиотека Python Paramiko
Установка Paramiko
Краткий обзор Paramiko
Наша первая программа с использованием Paramiko
Другие возможности Paramiko
Итоговая программа на основе Paramiko
Библиотека Netmiko
Фреймворк Nornir
Недостатки Pexpect и Paramiko по сравнению с другими инструментами
Резюме
Глава 3. API и IDN-сети
Инфраструктура как код
Сети, ориентированные на намерения
Консольный вывод и структурированные результаты API-запроса
Моделирование данных для IaC
YANG и NETCONF
API и платформа ACI от Cisco
Cisco NX-API
Модель Cisco YANG
Cisco ACI и APIC-EM
Контроллер Cisco Meraki
API на языке Python для Juniper Networks
Juniper и NETCONF
Juniper PyEZ для разработчиков
API на языке Python для устройств Arista
Работа с eAPI от Arista
Библиотека Arista Pyeapi
Пример работы с VyOS
Другие библиотеки
Резюме
Глава 4. Фреймворк автоматизации на Python: основы Ansible
Ansible: более декларативный фреймворк
Короткий пример с Ansible
Установка управляющего узла
Установка разных версий Ansible из исходного кода
Подготовка лаборатории
Ваш первый сценарий Ansible
Преимущества Ansible
Отсутствие агентов
Идемпотентность
Простота и расширяемость
Поддержка от производителей сетевого оборудования
Архитектура Ansible
YAML
Файлы реестров
Переменные
Шаблоны Jinja2
Сетевые модули Ansible
Локальные соединения и факты
Переменная provider
Пример Ansible с устройствами Cisco
Пример сценария для Ansible 2.8
Пример Ansible с устройствами Juniper
Пример Ansible с устройствами Arista
Резюме
Глава 5. Фреймворк автоматизации на Python: следующий уровень
Подготовка лаборатории
Условные выражения в Ansible
Выражение when
Факты о сетевых устройствах в Ansible
Условные выражения в сетевых модулях
Циклы в Ansible
Стандартные циклы
Циклический перебор словарей
Шаблоны
Переменные в шаблонах Jinja2
Циклы в Jinja2
Условные выражения в Jinja2
Переменные групп и хостов
Переменные группы
Переменные хоста
Ansible Vault
Подключение файлов и роли в Ansible
Инструкции include в Ansible
Роли Ansible
Написание собственного модуля
Ваш первый модуль
Ваш второй модуль
Резюме
Глава 6. Сетевая безопасность с использованием Python
Подготовка лаборатории
Python Scapy
Установка Scapy
Интерактивные примеры
Захват пакетов с помощью Scapy
Сканирование TCP-портов
Коллекция пакетов для проверки связи
Распространенные атаки
Ресурсы о Scapy
Списки доступа
Реализация списков доступа с помощью Ansible
Списки доступа по MAC-адресам
Поиск в Syslog
Поиск с помощью модуля регулярных выражений
Другие инструменты
Приватные VLAN
UFW и Python
Дополнительный материал
Резюме
Глава 7. Сетевой мониторинг с использованием Python: часть 1
Подготовка лаборатории
SNMP
Подготовка
PySNMP
Python для визуализации данных
Matplotlib
Pygal
Работа с Cacti в Python
Установка
Сценарий на Python в качестве источника данных
Резюме
Глава 8. Сетевой мониторинг с помощью Python: часть 2
Graphviz
Подготовка лаборатории
Установка
Примеры работы с Graphviz
Примеры с Graphviz и Python
Создание графа ближайших соседей с помощью LLDP
Потоковый мониторинг
Разбор NetFlow с помощью Python
Мониторинг трафика с помощью ntop
Расширение ntop с помощью Python
sFlow
Резюме
Глава 9. Создание сетевых веб-сервисов с помощью Python
Сравнение веб-фреймворков для Python
Flask и подготовка лаборатории
Введение в фреймворк Flask
Клиент HTTPie
Маршрутизация URL
URL-переменные
Генерация URL
Возвращение результата с помощью jsonify
API для сетевых ресурсов
Flask-SQLAlchemy
API для работы с содержимым сети
API для работы с устройствами
API для работы с отдельными устройствами
Динамические сетевые операции
Асинхронные операции
Аутентификация и авторизация
Выполнение Flask в контейнерах
Резюме
Глава 10. Облачные сетевые технологи AWS
Подготовка к работе с AWS
AWS CLI и Python SDK
Обзор сети AWS
Виртуальное частное облако
Таблицы и цели маршрутизации
Автоматизация с использованием CloudFormation
Группы безопасности и списки доступа к сети
Elastic IP
NAT-шлюзы
Direct Connect и VPN
VPN-шлюзы
Direct Connect
Сервисы для масштабирования сетей
Elastic Load Balancing
Сервис Route 53 DNS
Доставка содержимого с использованием CloudFront
Другие сетевые сервисы от AWS
Резюме
Глава 11. Облачные сетевые технологии Azur
Сравнение сетевых сервисов в Azure и AWS
Подготовка к работе с Azure
Администрирование Azure и API
Субъекты-службы в Azure
Сравнение Python и PowerShell
Глобальная инфраструктура Azure
Виртуальные сети Azure
Доступ к Интернету
Создание сетевых ресурсов
Конечные точки сервисов для VNet
VNet-пиринг
Маршрутизация в виртуальных сетях
Сетевые группы безопасности
Azure VPN
Azure ExpressRoute
Сетевые балансировщики нагрузки в Azure
Другие сетевые сервисы Azure
Резюме
Глава 12. Анализ сетевых данных с помощью Elastic Stack
Что такое Elastic Stack?
Топология лаборатории
Elastic Stack как услуга
Первый полный пример
Elasticsearch и клиент на языке Python
Прием данных с помощью Logstash
Прием данных с использованием Beats
Поиск с помощью Elasticsearch
Визуализация данных с использованием Kibana
Резюме
Глава 13. Работа с Git
Git и разные аспекты управления контентом
Введение в Git
Преимущества Git
Терминология Git
Git и GitHub
Подготовка Git к работе
Gitignore
Примеры работы с Git
Ветви в Git
Пример работы с GitHub
Git и Python
GitPython
PyGitHub
Автоматизация резервного копирования конфигурационных файлов
Совместная работа с использованием Git
Резюме
Глава 14. Непрерывная интеграция с помощью Jenkins
Традиционный процесс управления изменениями
Введение в непрерывную интеграцию
Установка Jenkins
Пример с Jenkins
Первое задание для сценария на Python
Плагины Jenkins
Пример непрерывной интеграции в контексте сетевых технологий
Jenkins и Python
Непрерывная интеграция в контексте администрирования сети
Резюме
Глава 15. TDD для сетей
Обзор разработки через тестирование
Разные виды тестов
Топология как код
Модуль unittest
Еще о тестировании в Python
Примеры с pytest
Написание тестов для сетей
Тестирование доступности
Тестирование задержек сети
Тестирование безопасности
Тестирование транзакций
Тестирование сетевой конфигурации
Тестирование сценариев Ansible
Интеграция pytest с Jenkins
Интеграция с Jenkins
pyATS и Genie
Резюме