Python для сетевых инженеров. Автоматизация сети, программирование и DevOps

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Сети образуют основу для развертывания, поддержки и обслуживания приложений. 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
Резюме