Внедрение Ansible для автоматизации ИТ-инфраструктуры сети магазинов «Домотехника»

Дипломный проект: современный подход к управлению конфигурациями

О предприятии

ООО «Домотехника» — крупная сеть розничных магазинов и сервисных центров по продаже и обслуживанию бытовой техники. Компания объединяет 30 магазинов, центральный офис и распределённую ИТ-инфраструктуру, включающую:

  • 250 POS-терминалов на базе Xubuntu 22.04 LTS, интегрированных с кассовым оборудованием и сканерами штрих-кодов, работающих 24/7.
  • Кластер баз данных (7 серверов Oracle Linux 8.7), серверы приложений (3 узла CentOS Stream 9), контроллеры домена (4 сервера Windows Server 2022).
  • Сетевую инфраструктуру с Cisco Catalyst 9200L, маршрутизаторами MikroTik, объединёнными через IPSec-туннели с сегментацией на VLAN.

Актуальность

Внедрение централизованной системы управления конфигурациями необходимо для устранения рутинных ошибок, ускорения масштабирования и повышения надёжности ИТ-инфраструктуры.

Глава 1. Анализ исходных данных

Изучение предметной области

Автоматизация DevOps Ansible

Возможности Ansible:

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

Автоматизация настройки серверов и приложений

Непрерывная интеграция

Интеграция с CI/CD системами

Безопасность

Управление доступом и шифрование

Оркестрация

Управление распределенными системами

Основные проблемы в текущих процессах:

Ручное управление

Высокие затраты времени на ручные операции

Отсутствие стандартизации

Разные подходы к конфигурации в разных отделах

Временные затраты

Длительные процессы развертывания

Требования к системе

Требования Функционал Безопасность

Функциональные требования:

Автоматизация развертывания
  • Автоматическое развертывание приложений
  • Управление зависимостями
  • Контроль версий
Управление конфигурациями
  • Централизованное управление
  • Шаблоны конфигураций
  • Валидация настроек

Технические требования:

Поддержка платформ

Windows, Linux, macOS

Интеграция

Git, Jenkins, Docker

Безопасность

Шифрование, RBAC

Сравнительный анализ решений

Анализ Ansible Puppet Chef SaltStack

Критерии сравнения:

Простота использования

Минимальный порог входа, понятный YAML-синтаксис (Ansible).

Масштабируемость

Поддержка крупных инфраструктур, горизонтальное масштабирование.

Интеграция

Возможность интеграции с CI/CD, облачными сервисами, Docker.

Сообщество

Активное сообщество, наличие документации и модулей.

Вывод:

  • Ansible выбран как основное решение за счёт простоты, отсутствия агентов и широкой поддержки.
  • Chef и Puppet требуют установки агентов и имеют более сложный синтаксис.
  • SaltStack — мощный, но менее распространён в России.

Техническое задание

ТЗ Проектирование Документация

Цели:

  • Внедрение централизованной системы управления конфигурациями.
  • Автоматизация рутинных задач администрирования.
  • Повышение отказоустойчивости и безопасности.

Задачи:

  • Разработка архитектуры решения.
  • Создание инвентарных файлов и playbook'ов.
  • Тестирование и внедрение в тестовом контуре.
  • Оценка экономического эффекта.

Ожидаемые результаты:

  • Снижение времени развертывания сервисов на 30%.
  • Снижение количества ошибок на 50%.
  • Повышение прозрачности и управляемости инфраструктуры.

Глава 2. Разработка и внедрение

Архитектура системы

Архитектура Backend DevOps

Компоненты архитектуры:

Управляющий узел (Ansible Control Node)

Оркестрация и запуск playbook'ов, управление инвентарём.

Кластер баз данных

Хранение конфигураций и данных приложений.

Сетевые устройства

Маршрутизаторы, коммутаторы, сегментация по VLAN.

POS-терминалы

Рабочие станции магазинов, управляемые централизованно.

Визуализация backend (интерактивная схема):

Backend DB Cluster Ansible Node POS Terminals

Схема взаимодействия backend, управляющего узла, базы данных и POS-терминалов

Реализация

Установка Конфигурация Playbook Безопасность

Установка и настройка Ansible:

1
Подготовка системы
# Обновление системы
sudo apt update && sudo apt upgrade -y

# Установка зависимостей
sudo apt install software-properties-common

# Добавление репозитория Ansible
sudo apt-add-repository --yes --update ppa:ansible/ansible

# Установка Ansible
sudo apt install ansible

После установки проверьте версию:

ansible --version
2
Настройка inventory
# /etc/ansible/hosts
[webservers]
web1 ansible_host=192.168.1.10 ansible_user=admin
web2 ansible_host=192.168.1.11 ansible_user=admin

[databases]
db1 ansible_host=192.168.1.20 ansible_user=admin

[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_private_key_file=/path/to/private_key

Проверка подключения:

ansible all -m ping
3
Создание базового playbook
---
- name: Configure web servers
  hosts: webservers
  become: yes
  vars:
    nginx_version: "1.18.0"
    app_port: 8080
  
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present
        update_cache: yes
    
    - name: Configure nginx
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: restart nginx
    
    - name: Enable and start nginx
      service:
        name: nginx
        state: started
        enabled: yes
  
  handlers:
    - name: restart nginx
      service:
        name: nginx
        state: restarted

Запуск playbook:

ansible-playbook -i inventory playbook.yml

Инфраструктура предприятия:

Тип Название IP-адрес Роль Конфигурация Статус
Сервер Web-Server-01 192.168.1.10 Веб-сервер 4 CPU, 8GB RAM Активен
Сервер DB-Server-01 192.168.1.20 База данных 8 CPU, 16GB RAM Активен
Компьютер Dev-PC-01 192.168.1.30 Разработка i7, 16GB RAM Активен
Компьютер Dev-PC-02 192.168.1.31 Разработка i7, 16GB RAM Активен

Визуализация работы Ansible

Ansible Automation Infrastructure
Ansible Серверы POS-терминалы Сеть

Как Ansible управляет инфраструктурой

A Ansible Серверы POS-терминалы Сеть DB App Web POS-1 POS-2 POS-3 POS-4 Router Switch Firewall

Ansible — центральный управляющий узел, который по SSH управляет серверами, POS-терминалами и сетевыми устройствами предприятия.

Экономическое обоснование внедрения

Экономика Эффективность Окупаемость

Расчет затрат на внедрение

Статья Сумма, руб. Комментарий
Аппаратные затраты 275 000 Серверы, апгрейд коммутаторов
Программные затраты 225 000 Лицензии RHEL, Ansible Tower
Трудовые затраты 378 000 Проектирование, разработка, тестирование, внедрение, обучение
Итого 878 000

Экономический эффект

  • Экономия на трудозатратах: сокращение времени настройки и обновления, снижение количества инцидентов
  • Годовая экономия: 980 000 руб.
  • Косвенные выгоды: повышение отказоустойчивости, ускорение развертывания, улучшение безопасности
Окупаемость: 11 месяцев
Затраты Экономия
Срок окупаемости: 878 000 / 980 000 ≈ 0,9 года (~11 месяцев)

Анализ чувствительности

  • Оптимистичный сценарий: +25% экономии — 8 месяцев
  • Базовый сценарий: 11 месяцев
  • Пессимистичный сценарий: -30% экономии — 16 месяцев

Выводы

  • Внедрение системы окупится менее чем за год
  • Годовая экономия превышает затраты на внедрение
  • Проект рентабелен даже при пессимистичном сценарии
  • Есть значительные операционные преимущества

Заключение

В результате работы была разработана и внедрена система автоматизации управления конфигурациями, которая позволила достичь значительных результатов в оптимизации процессов разработки и развертывания.

Сокращение времени

Сокращение времени развертывания на 60%

Снижение ошибок

Снижение количества ошибок на 80%

Эффективность команды

Повышение эффективности работы команды

Контроль процессов

Улучшение контроля над процессами

Глоссарий

Ansible

Инструмент автоматизации IT-инфраструктуры, использующий YAML для описания конфигураций. Отличается от других инструментов отсутствием необходимости установки агентов на целевые системы.

Idempotency

Свойство операций, при котором многократное выполнение одной и той же операции дает тот же результат, что и однократное выполнение. Ключевое преимущество Ansible.

Playbook

YAML-файл, содержащий набор инструкций для автоматизации задач в Ansible. Может включать переменные, условия, циклы и обработчики событий.

Handler

Специальный тип задачи, который выполняется только при изменении состояния системы. Обычно используется для перезапуска сервисов.

Inventory

Файл, содержащий информацию об управляемых хостах в Ansible. Может включать группы хостов, переменные и параметры подключения.

Facts

Системная информация, собираемая Ansible с целевых хостов. Включает данные об ОС, сети, оборудовании и установленном ПО.

Role

Набор задач, шаблонов и файлов, организованных в структурированном виде. Позволяет переиспользовать код и упрощает поддержку.

Vault

Механизм шифрования в Ansible для хранения конфиденциальных данных. Позволяет безопасно хранить пароли и ключи.

Task

Отдельная операция, выполняемая Ansible на целевых хостах. Может использовать различные модули для выполнения действий.

Module

Программный код, который Ansible выполняет на целевых хостах. Модули могут быть встроенными или пользовательскими.

Template

Файл с переменными, который Ansible обрабатывает перед отправкой на целевой хост. Использует синтаксис Jinja2.

Conditional

Условие, определяющее, будет ли выполнена задача. Позволяет создавать гибкие и адаптивные playbook'и.