Як 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-репозиторію. Натомість:
- Синхронізуєте репозиторій в Library (raw upstream контент)
- Створюєте Content View — snapshot потрібних репозиторіїв з фільтрами
- Публікуєте версію Content View
- Просуваєте через середовища: 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 для клієнтів з різних галузей.







