Установка и настройка Foreman + Puppet 8 на Ubuntu 22.04

Описание

Этот документ описывает процесс установки и настройки Foreman 3.12 и Puppet 8 Server на Ubuntu 22.04.

1. Подготовка системы

Обновляем пакеты и устанавливаем необходимые зависимости:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git gnupg2 dnsutils net-tools

2. Настройка имени хоста

Foreman требует правильной настройки FQDN. Проверьте и задайте имя хоста:

sudo hostnamectl set-hostname foreman.example.com

Открываем файл /etc/hosts и добавляем (или исправляем) строку:

10.10.0.135 foreman.example.com foreman

Проверяем правильность:

hostname -f
nslookup 10.10.0.135
dig -x 10.10.0.135 +short

3. Установка и настройка PostgreSQL

Foreman использует PostgreSQL. Установим его:

sudo apt install -y postgresql postgresql-contrib

Проверяем, что PostgreSQL запущен:

sudo systemctl enable --now postgresql

Создаём базу данных Foreman:

sudo -u postgres psql

В PostgreSQL выполняем:

CREATE DATABASE foreman;
CREATE USER foreman WITH PASSWORD 'foreman';
ALTER DATABASE foreman OWNER TO foreman;
GRANT ALL PRIVILEGES ON DATABASE foreman TO foreman;
\q

Cоздать пользователя foreman:

sudo useradd -r -s /bin/bash -d /usr/share/foreman -c "Foreman system user" foreman

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

sudo -u foreman psql -d foreman -c "SELECT 1;"

4. Установка Puppet 8 Server

Добавляем репозиторий и устанавливаем Puppet Server:

wget https://apt.puppet.com/puppet8-release-jammy.deb
sudo dpkg -i puppet8-release-jammy.deb
sudo apt update
sudo apt install -y puppetserver

Настраиваем параметры памяти (опционально):

sudo vim /etc/default/puppetserver

Изменяем строку:

JAVA_ARGS="-Xms512m -Xmx1024m"

Запускаем Puppet Server:

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

5. Установка Foreman

5.1 Добавление репозитория Foreman

echo "deb http://deb.theforeman.org/ jammy 3.12" | sudo tee /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 3.12" | sudo tee -a /etc/apt/sources.list.d/foreman.list
wget -qO /etc/apt/trusted.gpg.d/foreman.asc https://deb.theforeman.org/foreman.asc

Обновляем список пакетов:

sudo apt update

5.2 Установка Foreman и его компонентов

sudo apt install -y foreman-installer

Запускаем установку:

sudo foreman-installer --enable-foreman --enable-foreman-cli \
  --enable-foreman-proxy --enable-puppet --enable-foreman-plugin-puppet

6. Проверка и настройка HTTPS (порт 443)

Если Foreman не отвечает на 443 порту, проверяем:

sudo netstat -tulnp | grep 443

Если порт не слушается, проверьте конфигурацию Apache:

sudo systemctl status apache2
sudo systemctl restart apache2

Если у вас нет SSL-сертификатов, временно отключите HTTPS:

sudo foreman-installer --foreman-server-ssl false
sudo systemctl restart foreman foreman-proxy apache2

7. Проверка работы Foreman

Запускаем:

curl -k https://foreman.example.com:443

Если ошибка "Connection refused", проверьте firewall:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

8. Добавление Puppet Agent

На клиенте устанавливаем Puppet Agent:

wget https://apt.puppet.com/puppet8-release-jammy.deb
sudo dpkg -i puppet8-release-jammy.deb
sudo apt update
sudo apt install -y puppet-agent

Настраиваем файл /etc/puppetlabs/puppet/puppet.conf:

[main]
server = foreman.example.com
certname = client.example.com
environment = production

Запускаем агент и ожидаем сертификат:

sudo puppet agent --test --waitforcert 60

На сервере подписываем сертификат клиента:

sudo /opt/puppetlabs/bin/puppetserver ca sign --certname client.example.com

Повторно запускаем Puppet Agent:

sudo puppet agent --test

9. Завершение и тестирование

Перезапускаем все службы:

sudo systemctl restart foreman foreman-proxy apache2 postgresql puppetserver

Теперь Foreman и Puppet 8 установлены и готовы к работе. Через веб-интерфейс можно управлять узлами и настраивать конфигурации.