Установка и настройка 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 установлены и готовы к работе. Через веб-интерфейс можно управлять узлами и настраивать конфигурации.