Как стать автором
Поиск
Написать публикацию
Обновить
68.79
HOSTKEY
IT-инфраструктура: сервера, VPS, GPU, коло

Foreman в изоляции: как мы построили отказоустойчивую и безопасную систему для массового деплоя ОС

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров461

Foreman — это платформа для автоматизации повторяющихся задач, развертывания приложений и управления жизненным циклом серверов как в локальной инфраструктуре, так и в облаке. Ранее мы уже рассказывали о различных подходах к автоматизации установки ОС на серверы, а также делились опытом работы с PXE-деплоем ESXI через Foreman и развертыванием Windows UEFI.

Теперь же поговорим о более комплексном подходе к организации инфраструктуры установки операционных систем, к которому мы пришли с учетом накопленного опыта. Подобную схему установки операционных систем на bare metal серверы используют многие крупные компании, включая представителей отечественного IT-рынка. В данной статье мы сосредоточим внимание на архитектуре и общих принципах организации инфраструктуры и расскажем о тех проблемах, с которыми столкнулись на практике.

Серверы на базе процессоров AMD EPYC и Ryzen последних поколений

Мощные серверы: большое количество ядер, быстрые диски NVMe SSD, до 4.6 ТБ памяти DDR5 в России, Европе и США.

[[ Выбрать конфигурацию ]]

В нашем случае Foreman выступает в роли PXE-сервера для массовой установки операционных систем на bare-metal серверы и виртуальные машины (когда нет готового шаблона или его создание нецелесообразно). Для тех, кто интересуется техническими деталями работы с загрузочными образами, рекомендуем ознакомиться с нашим материалом о Linux LiveCD на базе CentOS и техниках PXE-загрузки через Foreman.

Система предоставляет удобный API для интеграции с другими инструментами. Стоит отметить, что решение может быть менее интересно для администраторов, предпочитающих классические подходы или активно использующих Puppet.

Архитектура до модернизации

Ранее у нас функционировало 2,5 локации, каждая из которых имела собственный экземпляр Foreman с публичным IP-адресом. «2,5 локации» означает, что было развернуто 2 полноценных площадки в России и Нидерландах, а также локация в США, где отсутствовала серая сеть и был развернут Foreman с особой структурой. В настоящее время у нас функционирует 13 унифицированных локаций (Россия, Нидерланды, США, Турция, Франция, Великобритания, Испания, Италия, Исландия, Польша, Германия, Швейцария, Финляндия). Как мы уже описывали в статье о мониторинге geo-распределенной инфраструктуры, управление несколькими локациями требует особого подхода. С точки зрения управления все локации работали полностью автономно.

На каждом Foreman были развернуты наборы конфигураций:

  • Production — рабочие конфигурации для продуктивной среды;

  • Development — тестовые конфигурации для отладки и экспериментов.

Администратор при внесении изменений брал малоиспользуемый development-сервер в US-локации, там тестировал, затем заливал изменения в production соответствующей локации. Использование белого IP несло риски безопасности: доступ сюда мог получить и клиент. Защитой был только файрвол и авторизация на Foreman. 

Поскольку DHCP-сервер располагался непосредственно на Foreman, а инфраструктура включала множество VLAN, требовалось:

  • Постоянное поддержание актуального списка активных сетей на Foreman;

  • Конфигурирование и мониторинг DHCP-сервера;

  • Обеспечение наличия DHCP helper-адресов для корректной маршрутизации запросов между сегментами сети.

Миграция на изолированную сетевую архитектуру

В рамках повышения безопасности инфраструктуры мы кардинально изменили сетевую архитектуру Foreman. Все экземпляры Foreman во всех локациях больше не используют публичные IP-адреса и размещены в выделенном VLAN 75 (в каждой локации свой 75 VLAN). Помимо существующих локальных файрволов на каждом Foreman, вся инфраструктура дополнительно защищена общим файрволом Cisco ASA. Такая архитектура обеспечивает полную изоляцию сетей — доступ извне категорически исключен.

Для тестирования изменений мы развернули отдельный Foreman develop в изолированном VLAN 75 с приватными IP-адресами. Этот экземпляр предназначен исключительно для взаимодействия с development-хостами Invapi, защищен файрволом ASA и не имеет никакой связи с продуктивными экземплярами Foreman. Продуктивные экземпляры Invapi взаимодействуют с соответствующими Foreman согласно архитектурной схеме:

Механизм установки теперь работает следующим образом: в момент создания конфигурации на Foreman сервер автоматически переключается в приватный VLAN, где и происходит весь процесс установки. После завершения установки операционной системы скрипт из самой ОС отправляет запрос в Invapi с просьбой переключить сервер в публичный VLAN. Предварительно скрипт модифицирует сетевые настройки на публичные параметры — это может быть как DHCP, так и статическая конфигурация, что регулируется непосредственно на Foreman в зависимости от требований клиента:

По завершении установки конфигурация автоматически удаляется, а IP-адрес возвращается в пул доступных адресов. Дополнительно функционирует автоматизированная система очистки конфигураций, а адреса из VLAN 75 выдаются посредством DHCP:

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

func SetparametrForHost(UserName, Pass, Url, HOSTNAME, Domain, name string, value string) foreman.ParameterForHostanswer {
  url := Url + "/" + HOSTNAME + Domain + "/parameters"

  obj := foreman.ParameterForHost{}
  obj.Parameter.Name = name
  obj.Parameter.Value = value
  ret := foreman.ParameterForHostanswer{}
  request1 := tool.NewRequestJson(url)
  request1.Header.AuthorizationBasic(UserName, Pass)

  request1.POST(&obj, &ret)
  return ret
}

Вся конфигурация теперь хранится в GitLab в отдельных ветках prod и develop. Рабочий процесс администратора значительно упростился: после работы с шаблоном выполняется push в GitLab, что сохраняет изменения в репозитории. GitLab автоматически активирует webhook, который через API обращается к development-экземпляру Foreman и обновляет все шаблоны, включая модифицированный администратором.

После тестирования в development-среде администратор вносит финальные изменения, которые автоматически распространяются по всем продуктивным локациям.

Наша реализация включает два основных компонента: Foreman Server выступает центральным элементом и включает веб-интерфейс, API и веб-сервер на базе Apache HTTPD, а Smart Proxy обеспечивает интеграцию с сервисами DHCP, DNS и TFTP. DHCP-сервер представлен стандартным dhcpd, управление которым осуществляется через Smart Proxy.

Развертывание плагина происходит одновременно с установкой Foreman. Для автоматизации развертывания используется Ansible, при этом базу данных мы получаем с другого хоста и модифицируем под текущие требования:

Реализованные улучшения и нерешенные задачи

Миграция принесла несколько критически важных изменений: централизованное хранение всех конфигураций в GitLab, автоматизированное развертывание Foreman, размещение всех экземпляров Foreman в приватных сетях и выделение отдельного Foreman для разработки.

Основной проблемой остается архитектура «одна локация — один Foreman». В перспективе планируется решить этот вопрос через внедрение архитектуры с прокси-Foreman, где один центральный Foreman в локации будет обслуживать остальные, получающие данные от него. Это решение устранит текущую проблему отсутствия автоматизации при добавлении новых операционных систем — сейчас администратору приходится обходить все экземпляры Foreman для регистрации новой ОС, например, при выходе Rocky Linux или AlmaLinux новых версий.

Заключение

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

Внедрение централизованного управления конфигурациями через GitLab с автоматическим развертыванием изменений существенно упростило работу администраторов и снизило вероятность ошибок при обновлении шаблонов. Разделение сред разработки и продукции обеспечило безопасное тестирование изменений без риска влияния на рабочие системы.

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

Серверы на базе процессоров AMD EPYC и Ryzen последних поколений

Мощные серверы: большое количество ядер, быстрые диски NVMe SSD, до 4.6 ТБ памяти DDR5 в России, Европе и США.

[[ Выбрать конфигурацию ]]

Теги:
Хабы:
+4
Комментарии2

Публикации

Информация

Сайт
www.hostkey.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия