Налаштування Foreman/Katello: управління життєвим циклом серверів

Коли серверний парк зростає, ручне оновлення та налаштування кожної машини перетворюються на хаос: конфігурації дрейфують, патчі пропускаються, а аудит займає тижні. Ми налаштовуємо Foreman і Katello, створюючи єдиний центр управління життєвим циклом серверів — від автоматичного провіжинінгу до патчингу та compliance-звітів. Наша команда реалізує проєкт під ключ з подальшою підтримкою, забезпечуючи стабільну та масштабовану інфраструктуру.
Часті запитання

Як Foreman+Katello вирішує проблему управління життєвим циклом серверів

Ми знаємо: коли серверний парк перевалює за 50 машин, ручне оновлення через SSH та пачки скриптів перетворюються на хаос. Пакети розходяться, оновлення пропускаються, а compliance-звіти збираються тижнями. Кожен новий сервер налаштовується руками, конфігурації дрейфують, а патчинг сотні машин займає 8–12 годин і часто ламає сумісність. Впровадження зв'язки Foreman і Katello вирішує ці проблеми: єдиний центр для провіжинінгу, управління конфігурацією, патчингу та аудиту. За нашими оцінками, час на обслуговування парку скорочується в 3–4 рази — наприклад, повний патчинг 100 серверів тепер займає 2–3 години замість 12. А compliance-звіти формуються автоматично за хвилини, що економить до 60% бюджету на адміністрування — це близько 150 000 грн на місяць для парку з 200 серверів. Впровадження окупається за 3–6 місяців завдяки зниженню трудозатрат на 70%. Наша команда з 5 роками досвіду та понад 50 успішними впровадженнями допомагає досягти таких результатів.

Компоненти та архітектура — налаштування foreman katello

Foreman — оркестратор з веб-інтерфейсом та REST API. Katello — плагін для управління контентом (репозиторії, content views, lifecycle environments). Разом вони тягнуть кілька залежностей:

  • Pulp 3 — синхронізація та зберігання репозиторіїв
  • Candlepin — управління підписками (актуально для RHEL)
  • Puppet Server або Ansible — управління конфігурацією
  • TFTP/DHCP — для PXE-провіжинінгу (Smart Proxy)
  • PostgreSQL — все сховище

Мінімальні вимоги для production: 8 CPU, 20 GB RAM, 500 GB під репозиторії (RHEL + CentOS + свій софт). Це не маленький сервіс — Foreman+Katello потребує виділеної машини.

Встановлення через foreman-installer:

# RHEL 8 / Rocky Linux 8
dnf install https://yum.theforeman.org/releases/3.9/el8/x86_64/foreman-release.rpm
dnf install https://yum.theforeman.org/katello/4.12/katello/el8/x86_64/katello.noarch.rpm
dnf install foreman-installer-katello
foreman-installer --scenario katello \
  --foreman-initial-admin-username admin \
  --foreman-initial-admin-password 'StrongPassword123!' \
  --enable-foreman-plugin-ansible \
  --enable-foreman-proxy-plugin-ansible \
  --foreman-proxy-tftp true \
  --foreman-proxy-dhcp true \
  --foreman-proxy-dhcp-range "192.168.10.100 192.168.10.200" \
  --foreman-proxy-dhcp-gateway 192.168.10.1 \
  --foreman-proxy-dhcp-nameservers 192.168.10.1

Установник сам налаштовує Apache, PostgreSQL, Pulp, Candlepin. Весь процес займає 15–30 хвилин.

Як налаштувати Content Views для безпечного патчингу?

Найцінніша функціональність Katello для великих парків — контент-в'юхи та lifecycle environments. Ідея: ви не оновлюєте сервери напряму з upstream-репозиторію. Натомість:

  1. Синхронізуєте репозиторій в Library (raw upstream контент)
  2. Створюєте Content View — snapshot потрібних репозиторіїв з фільтрами
  3. Публікуєте версію Content View
  4. Просуваєте через середовища: Dev → QA → Staging → Production
Library (upstream) → Content View v1.5 → Dev → QA → Staging → Production 

Пакети, що потрапили в Production, пройшли всі стадії тестування. Сервери підписані на конкретне середовище, а не на upstream — yum update на production-сервері ніколи не поставить неперевірений пакет.

Створення фільтра в Content View — наприклад, виключити пакети з відкритими CVE:

hammer content-view filter create \
  --name "exclude-untested-kernels" \
  --content-view "RHEL8-Base" \
  --organization "MyOrg" \
  --type rpm \
  --inclusion false

Після публікації нової версії — hammer content-view version promote просуває в наступне середовище.

Автоматичний провіжинінг з PXE

Smart Proxy з увімкненими TFTP та DHCP дає PXE-провіжинінг прямо з інтерфейсу Foreman. Створюєте Host в веб-UI або через hammer host create, вибираєте Kickstart-шаблон, ОС, партиціонування — сервер при наступному завантаженні отримує IP від Foreman DHCP, завантажується по PXE, отримує кастомізований Kickstart і встановлюється автоматично.

Після встановлення — автоматична реєстрація через subscription-manager (RHEL) або foreman_register (решта), застосування Puppet-маніфестів або Ansible-плейбуків через Remote Execution.

Remote Execution — запуск довільних команд або плейбуків на групах хостів:

hammer job-invocation create \
  --job-template "Run Command - Script Default" \
  --inputs command="yum update -y --security" \
  --search-query "hostgroup = web-servers AND environment = staging"

Хід виконання видно в реальному часі, результати кожного хоста — в audit log.

Параметр Ручне управління Foreman + Katello
Час на патчинг 100 серверів 8–12 годин 2–3 години
Контроль версій пакетів Немає Повний через content views
Compliance-звітність Ручний збір Автоматичний аудит
Складність тиражування Висока Один клік
Етап Тривалість
Розгортання Foreman+Katello 1 день
Створення lifecycle environments 1 день
Імпорт існуючих хостів 1–2 дні
Налаштування Remote Execution 0.5 дня
Навчання команди 1 день
Реальний кейс: патчинг 200 серверів за 4 години

Клієнт з парком із 200 CentOS 7 серверів витрачав близько 20 годин на щомісячне оновлення. Після впровадження Foreman+Katello з lifecycle environments (Dev→QA→Staging→Production) та автоматизацією через Remote Execution, процес скоротився до 4 годин — це в 5 разів швидше. Додатково compliance-звіти перестали вимагати ручного збору — тепер вони генеруються API за хвилини.

Звітність та compliance

Foreman збирає facts з усіх керованих хостів (через Facter для Puppet або Ansible facts). В інтерфейсі можна швидко знайти всі хости з ядром < 5.14.0 або з відкритим портом 22 без обмежень. Для інтеграції із зовнішніми системами — Foreman API:

curl -u admin:password \
  "https://foreman.internal/api/hosts?search=os_title+%3D+RHEL+8&per_page=100" \
  | jq '.results[] | {name: .name, ip: .ip, os: .operatingsystem_name, last_report: .last_report}'

Це інтегрується в CMDB або compliance-системи. Скорочення часу на compliance-звіти економить до 600 годин на рік на парк із 200 серверів.

Що входить в роботу?

  • Розгортання Foreman і Katello на виділеному сервері
  • Налаштування Smart Proxy (DHCP, TFTP, DNS)
  • Створення lifecycle environments і перших content views
  • Інтеграція з Ansible або Puppet
  • Імпорт існуючих хостів і груп
  • Навчання команди та документація
  • Гарантія стабільної роботи протягом місяця після впровадження

Строки та вартість

Базове розгортання займає 3–4 дні. Повна інтеграція з імпортом та навчанням — 5–7 днів. Вартість розраховується індивідуально після аудиту вашого парку. Зв'яжіться з нами для оцінки — наші інженери з досвідом 10+ років в управлінні життєвим циклом серверів підберуть оптимальне рішення. Замовте консультацію, щоб обговорити деталі.

Масштабування

При > 500 хостів або кількох майданчиках — Capsule Server (remote Smart Proxy). Capsule синхронізує контент локально, обслуговує TFTP/DHCP/DNS у своєму сегменті мережі, знижуючи трафік до центрального Foreman. Додавання Capsule виконується через foreman-installer --scenario capsule. Ми гарантуємо скорочення часу на патчинг в 3 рази порівняно з ручним підходом. Наша команда з 5 роками досвіду на ринку виконала понад 50 успішних впроваджень Foreman/Katello для клієнтів з різних галузей.

Офіційна документація Foreman

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142