КОМИТЕТ ПО НАУКЕ И ВЫСШЕЙ ШКОЛЕ
Санкт-Петербургское государственное бюджетное
профессиональное образовательное учреждение
«Санкт-Петербургский технический колледж управления и коммерции»

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

На тему Автоматизация администрирования сетевой инфраструктуры предприятия

Студента: Жукова Владимира Андреевича
Группы: 9КС-41


Руководитель проекта:

Худяков О.Ю.

Санкт-Петербург

2020

Проблема исследования

Проблема:

  • ​Постоянно возрастающая сложность управления вычислительными сетями на предприятиях. 

 

Объект:

  • Автоматизация администрирования вычислительных сетей.

Предмет:

  • Современные программные реализации и методы управления активным сетевым оборудованием. 

Цель и задачи исследования

Цель:

  • Разработать решение для автоматизации управления сетевой инфраструктурой.

Задачи:

  1. Рассмотреть современные сетевые технологии и концепции.
  2. Создать подсистему для инвентаризации сетевых устройств.
  3. Развернуть подсистему по контролю версий конфигураций.
  4. Спроектировать подсистему генерации конфигураций.
  5. Автоматизировать процесс применения конфигураций.
  6. Реализовать методы тестирования компонентов системы.
  7. Объединить все компоненты в единое решение.

Методология DevOps

Использованное ПО

Виртуализация:

  • GNS3 - Эмуляция сети
  • Docker - Среды для GitLab Runners
  • Docker-compose - Среда для NetBox
  • Libvirt - Управление виртулизацией

Source of Truth:

  • NetBox - Данные об устройствах
  • GitLab - Конфигурации оборудования

Контроль версий:

  • Git - Система контроля версий
  • GitLab - Менеджер репозиториев

Среда разработки:

  • Python3.7 - Язык программирования
  • VirtualEnv - Виртуальная среда

Валидация файлов:

  • Ansible - Синтаксис Playbook
  • Yamllint - Синтаксис YAML
  • Kwalify - Ограничение YAML
  • Jinja2_validate - Синтаксис Jinja2

Тестирование устройств:

  • PyATS - Платформа для тестов
  • Genie - Расширение для pyATS
  • Robot Framework - Фреймворк для TDD

Управление конфигурациями:

  • Ansible - Менеджер конфигураций
  • NAPALM - Взаимодействие с устройствами

План разработки

Level Tools
4 Source of Truth NetBox GitLab
3 Distributed Version Control Git
2.5 Validation Yamllint Kwalify Jinja2_validate Ansible
2 Automation Docker Python PyATS/Genie + Robot Framework
1 Environments GNS3
NetBox
NetBox
Компьютер инженера
Engineer's...
Python IDE
Python IDE
Git
Git
GitLab
GitLab
CI/CD
CI/CD
Runners
Runners
VIM
VIM
Python VirtualEnv
Python Virtu...
Python3.7
Python3.7
Test
Test
Production
Production
Локальный CI/CD
Local CI/CD
Development
Development
Ansible. Проверка синтаксиса
Ansible. Check...
Yamllint, Kwalify, JInja2_validate
Yamllint, Kwal...
Ansible. Генерация конфигураций
Ansible. Genera...
Ansible. Dry Run
Ansible. Dry Run
Manual
Manual
NAPALM
NAPALM
Robot Framework
Robot Framework
Авто CI/CD
Auto CI/CD
Ручной CI/CD
Manual CI/CD
Ansible + NAPALM
Ansible + NAPALM
Python
Python
PyATS/Genie + Robot Framework
PyATS/Genie + Robot Fr...
TestRunner%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22Development%26lt%3Bbr%26gt%3BEnvironment%22%20style%3D%22text%3Bhtml%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dcenter%3BverticalAlign%3Dmiddle%3BwhiteSpace%3Dwrap%3Brounded%3D0%3Bdashed%3D1%3BdashPattern%3D1%201%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22270%22%20y%3D%22350%22%20width%3D%2240%22%20height%3D%2220%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E
TestRunner%...
ProdRunner%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22Development%26lt%3Bbr%26gt%3BEnvironment%22%20style%3D%22text%3Bhtml%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3Balign%3Dcenter%3BverticalAlign%3Dmiddle%3BwhiteSpace%3Dwrap%3Brounded%3D0%3Bdashed%3D1%3BdashPattern%3D1%201%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22270%22%20y%3D%22350%22%20width%3D%2240%22%20height%3D%2220%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E
ProdRunner%...
L4. Source of Truth
L4. Source of Truth
L3. Distributed Source Control
L3. Distributed Sourc...
L2. Автоматизация
L2. Automation Tools
L1. Среды
L1. Environments
Validate
Validate
DeployToTestEnv
DeployTo...
DeployToProdEnv
DeployTo...
VerifyTestEnv
VerifyTe...
VerifyProdEnv
VerifyPr...
L2.5. Валидация
L2.5. Testing Tools
PeerReview
PeerRevi...
Viewer does not support full SVG 1.1

Виртуальная среда

Локальная машина
Local Ma...
NetBox
NetBox
TestRunner
TestRu...
ProdRunner
ProdRu...
GNSTestEnv GNSProdEnv GNSDevEnv
Docker1
Docker1
Docker0
Docker0
wlp
wlp
192.169.18.0/16
192.169.18.0/16
192.169.17.0/16
192.169.17.0/16
virbr20
virbr20
.1
.1
.1
.1
.2
.2
.2
.2
192.169.16.0/16
192.169.16.0/16
.1
.1
:8000
:8000
Интернет
Internet
Viewer does not support full SVG 1.1

Предполагаемая среда

SRV1
SRV1
SRV2
SRV2
NIC1
NIC1
NIC2
NIC2
Корпоративная сеть
Enterprise Netwo...
Административная сеть
Administrtion Ne...
Runners
Runners
GNSTestEnv
GNSTes...
Mgmt
Mgmt
vSwitch
vSwitch
NIC1
NIC1
NIC2
NIC2
Replication
Replication
GitLab
GitLab
NetBox
NetBox
Docker0
Docker0
TestRunner
TestRu...
ProdRunner
ProdRu...
Docker1
Docker1
Docker0
Docker0
Viewer does not support full SVG 1.1

CI/CD Pipeline

Стадия Операции Runner Метод
Validation Валидация файлов testing_env Автоматически
DeployToTestEnv Проверка в тестовой среде testing_env Автоматически
VerifyTestEnv Тестирование устройств testing_env Автоматически
PeerReview Пересмотр вносимых изменений prod_env После Merge
DeployToProdEnv Отправка в реальную среду prod_env Вручную
VerifyProdEnv Тестирование устройств prod_env Автоматически
  1. (Пользователь) Создание Issue с описанием проблемы/предложения

  2. Рассмотрение и принятие Issue администратором

  3. Создание Merge Request и ветки develop

  4. Синхронизация локального и удаленного репозиториев

  5. Редактирование файлов конфигурации и написание тестов

  6. Проверка изменений в среде для разработки

  7. (В случае ошибки) Исправление ошибок и повторная проверка

Новый Issue
Новый Issue
Merge Request
Merge Req...
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Исправления
Исправления
Deploy to Development
Deploy to Devel...
Изменения
Изменения
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Синхронизация
Синхронизация
Deploy to Development
Deploy to Devel...
Локальные операции
Локальные операции
1
1
4
4
2, 3
2, 3
5
5
6
6
7
7
6
6
Viewer does not support full SVG 1.1
  1. Отправка директории проекта в удаленный репозиторий

  2. Автоматический запуск Pipeline:

    • Валидация файлов

    • Сборка и отправка конфигураций (с заменой)

    • Тестирование

  3. (В случае ошибки) Исправление ошибок и повторная отправка

Deploy to Test
Deploy to Test
Continuous Integration
Continuous Integration
Push изменения
Push изменения
Push исправления
Push исправления
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Deploy to Test
Deploy to Test
1
1
2
2
3
3
2
2
Viewer does not support full SVG 1.1
  1. Merge ветки develop с веткой master

  2. Автоматический запуск Pipeline:

    • Сборка и отправка конфигураций (без замены)

  3. Проверка вносимых изменений

  4. ​Ручная отправка конфигураций (с заменой) и автоматизированные тесты

  5. (В случае ошибки) Закрытие Merge Request и Revert (откат)

Merge Request
Merge Req...
Deploy to Production
Deploy to P...
Peer Review
Peer Review
Revert
Revert
Закрытие Merge Request
Закрытие Merge Request
...
...
Автоматическая сборка
Автоматическая сборка
Continuous Delivery
Continuous Delivery
Ручная сборка и тесты
Ручная сборка и тесты
Merge
Merge
Закрытие Issue
Закрытие Issue
1
1
2
2
3
3
4
4
5
5
Viewer does not support full SVG 1.1
Deploy to Test
Deploy to Test
Continuous Integration
Continuous Integration
Новый Issue
Новый Issue
Merge Request
Merge Req...
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Исправления
Исправления
Deploy to Development
Deploy to Deve...
Изменения
Изменения
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Синхронизация
Синхронизация
Deploy to Development
Deploy to Deve...
Автоматическая сборка
Автоматическая сборка
Continuous Delivery
Continuous Delivery
Deploy to Production
Deploy to P...
Закрытие Issue
Закрытие Issue
Ручная сборка и тесты
Ручная сборка и тесты
Peer Review
Peer Review
Revert
Revert
Закрытие Merge Request
Закрытие Merge Request
Локальные операции
Локальные операции
Merge
Merge
Push изменения
Push изменения
Push исправления
Push исправления
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Автоматические валидация, сборка и тестирование
Deploy to Test
Deploy to Test
Viewer does not support full SVG 1.1

Использованная компьютерная сеть

Вывод

Разработанное решение подтвердило гипотезу и следующие предположения:

  1. Процесс работы сетевых специалистов был упрощен и оптимизирован
  2. Снизилась вероятность отказа работы сети и ее сегментов
  3. Выполнение заявок клиентов стали выполняться последовательно с документированием всех действий
  4. Появилась возможность отката состояния сети до любого предыдущего
  5. Снизились затраты на обслуживание вычислительной сети предприятия и на обеспечение отдела по ее администрированию

Diploma

By Vladimir Z

Diploma

  • 207