Установка Foreman на Ubuntu Server 18.04: пошаговое руководство
Важно: для корректной работы рекомендуется минимум 2 ГБ ОЗУ, предпочтительно 4 ГБ. Этот гид рассчитан на Ubuntu Server 18.04 и Puppet 5.

Foreman — это open source решение для управления жизненным циклом физических и виртуальных серверов. Оно помогает администраторам автоматизировать provisioning, конфигурацию, оркестрацию и мониторинг. Foreman интегрируется с инструментами конфигурации: Puppet, Chef, Salt, Ansible и другими.
В этом руководстве показаны шаги по установке Foreman на Ubuntu Server 18.04 с использованием Puppet Foreman installer.
Что требуется перед началом
- Ubuntu Server 18.04 (хост Foreman)
- ОЗУ: минимум 2 ГБ, рекомендуется 4 ГБ
- Права sudo на сервере
- Доступ в интернет для загрузки репозиториев и пакетов
План работ
- Настроить FQDN
- Добавить репозиторий Puppet
- Установить Foreman
- Настроить UFW (фаервол)
- Доступ к веб-интерфейсу Foreman
- Добавить Puppet-модуль NTP в Foreman
- Запустить Puppet Agent и проверить конфигурацию
Шаг 1 — Настройка FQDN
FQDN (полностью квалифицированное доменное имя) нужен для корректной работы сертификатов и интеграций. Изменим hostname и /etc/hosts.
Измените имя хоста, подставив собственное доменное имя:
hostnamectl set-hostname server.hakase-labs.ioОткройте файл /etc/hosts в редакторе (здесь vim, можно использовать nano):
vim /etc/hostsВставьте строку с IP и FQDN (замените IP и домен на свои):
10.9.9.20 server.hakase-labs.io serverСохраните файл и проверьте, что FQDN резолвится:
ping $(hostname -f) -c 3Если пинги возвращаются — значение FQDN настроено корректно.
Шаг 2 — Добавление репозитория Puppet
Чтобы установить Puppet 5 и использовать скрипт установщика Foreman, добавим официальный репозиторий Puppet:
Установите пакет сертификатов и скачайте .deb пакет репозитория Puppet:
sudo apt install ca-certificates -y
cd /tmp && wget https://apt.puppetlabs.com/puppet5-release-bionic.debДобавьте репозиторий в систему:
sudo dpkg -i /tmp/puppet5-release-bionic.deb
Важно: команды выполняйте от имени пользователя с правами sudo.
Шаг 3 — Установка Foreman
Добавьте репозитории Foreman и ключ, затем установите пакет foreman-installer.
Добавление репозиториев:
echo "deb http://deb.theforeman.org/ bionic 1.20" | sudo tee /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 1.20" | sudo tee -a /etc/apt/sources.list.d/foreman.listДобавление ключа:
wget -q https://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -Обновите индексы пакетов и установите установщик Foreman:
sudo apt update
sudo apt install foreman-installer -y
Запустите инсталлятор (он автоматически развернёт Foreman, Puppet и необходимые компоненты по умолчанию):
sudo foreman-installerПо завершении установщика в выводе будут указаны учётные данные администратора (admin) и другие важные параметры. Сохраните эти данные.
Важно: foreman-installer имеет множество опций для кастомизации (БД, LDAP, сертификаты). Для продакшена изучите параметры установки в официальной документации.
Шаг 4 — Настройка UFW (фаервола)
Откройте порты, необходимые Foreman и Puppet (HTTP/HTTPS для UI, 8140 для Puppet CA/agent, DHCP/TFTP/прочие при необходимости).
Разрешите основные порты:
ufw allow http
ufw allow https
ufw allow ssh
ufw allow 69/udp
ufw allow 8140/tcpВключите UFW:
ufw enable
Примечание: если Foreman будет управлять DHCP/TFTP для PXE-профайлов, добавьте соответствующие правила и учтите безопасность сети.
Шаг 5 — Доступ к веб-интерфейсу Foreman
Откройте браузер и перейдите по адресу вашего сервера (пример):
https://server.hakase-labs.io/

Войдите пользователем admin и паролем, который вывелся после запуска foreman-installer. После входа вы попадёте в панель управления Foreman.

Шаг 6 — Добавление Puppet-модуля NTP в Foreman
NTP нужен для точного времени на Puppet Master и управляемых хостах. Далее показывается подключение модуля puppetlabs/ntp и назначение параметров через интерфейс Foreman.
Установка Puppet-модуля NTP на хост
Выполните на сервере Foreman (puppet master):
sudo /opt/puppetlabs/bin/puppet module install puppetlabs/ntpВключение и конфигурация модуля в Foreman
В веб-интерфейсе:
- Перейдите: Configure → Puppet → Classes.
- Нажмите Import Environment from server.hakase-labs.io.
- Отметьте класс ntp и нажмите Update.

Откройте класс NTP, перейдите в Smart Class Parameters, найдите параметр server и включите Override. Измените тип на array и задайте пул серверов NTP, например:
["0.id.pool.ntp.org","1.id.pool.ntp.org","2.id.pool.ntp.org","3.id.pool.ntp.org"]Нажмите Submit для сохранения.

Назначение класса хосту
- Hosts → All Hosts.
- Выберите нужный хост → Edit → вкладка Puppet Classes.
- В списке Available Classes найдите ntp и добавьте его (кнопка +).
- Submit.

Шаг 7 — Запуск Puppet Agent и проверка
Запустите агент Puppet на хосте Foreman (или на целевом узле):
sudo /opt/puppetlabs/bin/puppet agent --testПосле успешного выполнения Puppet применит конфигурацию и установит/настроит ntp.
Проверьте содержимое /etc/ntp.conf, чтобы убедиться, что пул серверов соответствует заданному в Foreman:
cat /etc/ntp.conf
Проверки и критерии приёмки
Критерии приёмки:
- Веб-интерфейс Foreman доступен по HTTPS.
- Учетная запись admin создана и рабочая.
- Puppet агент запускается без ошибок: /opt/puppetlabs/bin/puppet agent –test возвращает успех.
- /etc/ntp.conf содержит пул серверов, установленный через Foreman.
- Порты 80/443/8140 доступны согласно правилам UFW.
Тестовые команды для проверки:
curl -k https://server.hakase-labs.io/ # проверка доступности веб-интерфейса
sudo systemctl status puppetserver # проверка статуса Puppet Server
sudo ufw status verbose # проверка правил UFW
ntpq -pn # проверка подключенных NTP-пировТипичные проблемы и устранение (траблшутинг)
Foreman недоступен по HTTPS
- Проверьте, что установлен foreman-installer успешно и nginx/Apache запущены.
- Проверьте сертификаты в /etc/foreman/ssl и наличие правильного FQDN.
Puppet agent не может связаться с master (порт 8140)
- Убедитесь, что ufw разрешает 8140/tcp.
- Проверьте DNS/hosts: hostname -f должен возвращать FQDN, совпадающий с сертификатом master.
Импорт классов Puppet не показывает ntp
- Убедитесь, что модуль puppetlabs/ntp установлен в каталог модулей Puppet.
- Повторно нажмите Import Environment и проверьте логи Foreman (обычно /var/log/foreman/).
NTP не синхронизируется
- Проверьте доступность NTP-пулов (firewall/голосовая сеть).
- Запустите ntpq -pn и проверьте OFFSET/DELAY.
Альтернативные подходы
- Установка Foreman вручную (без foreman-installer): пригодно для кастомных топологий, требует больше шагов (PostgreSQL, Puppetserver, Smart Proxy и др.).
- Использование пакетов Foreman с более новой версией для Ubuntu 20.04/22.04 при возможности обновления ОС.
- Управление конфигурациями с помощью Ansible, если вы не используете Puppet; Foreman поддерживает внешние интеграции.
Роли и чеклисты (кто что делает)
Администратор инфраструктуры:
- Проверяет DNS/FQDN и настраивает /etc/hosts.
- Создаёт учетные записи и управляет сетью/фаерволом.
SRE/DevOps:
- Запускает foreman-installer и проверяет логи.
- Подключает Puppet-модули и настраивает Smart Class Parameters.
Тестировщик:
- Проверяет доступность веб-интерфейса, синхронизацию NTP и корректность Puppet runs.
Мини-методология развёртывания
- Подготовка хоста: OS, FQDN, сетевые настройки.
- Установка зависимостей: CA certs, репозитории Puppet/Foreman.
- Запуск foreman-installer для базового развёртывания.
- Настройка фаервола и проверка сервисов.
- Подключение Puppet-классов и назначение хостам.
- Прогон Puppet agent и валидация конфигураций.
Безопасность и приватность
- Разверните Foreman за TLS (HTTPS) и используйте надежные сертификаты.
- Ограничьте доступ к веб-интерфейсу по IP (через UFW или проксирующий балансировщик).
- Регулярно обновляйте пакеты и проверяйте CVE для используемых компонентов (Puppet, Foreman, ОС).
Короткая памятка команд
- Изменить hostname:
hostnamectl set-hostname server.hakase-labs.io- Установить репозиторий Puppet:
cd /tmp && wget https://apt.puppetlabs.com/puppet5-release-bionic.deb
sudo dpkg -i /tmp/puppet5-release-bionic.deb- Установить Foreman:
sudo apt update
sudo apt install foreman-installer -y
sudo foreman-installer- Открыть порты в UFW:
ufw allow http
ufw allow https
ufw allow ssh
ufw allow 69/udp
ufw allow 8140/tcp
ufw enable- Установить Puppet-модуль NTP:
sudo /opt/puppetlabs/bin/puppet module install puppetlabs/ntp- Запустить Puppet agent:
sudo /opt/puppetlabs/bin/puppet agent --testКраткое резюме
Foreman обеспечивает удобный интерфейс для управления Puppet-классами и автоматизации конфигураций. Использование foreman-installer значительно упрощает базовую установку и настройку. После установки важно правильно сконфигурировать FQDN, firewall и провести валидацию назначенных Puppet-классов.
Ссылки и документация
Официальная документация Foreman:
https://theforeman.org/manuals/
1-line glossary:
- FQDN — полностью квалифицированное доменное имя, необходимое для TLS и идентификации узла.
Важно: адаптируйте параметры и версии (например, версия Foreman 1.20) под ваши требования и политику обновлений.
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить