Installation du serveur Foreman (mono-nœud)

Configuration du hostname et du fichier hosts 

 # Configuration du hostname

sudo hostnamectl set-hostname foreman.mondomaine.com

# Vérification

hostnamectl 

 Editer le fichier /etc/hosts et configurer les entrées de la manières suivantes : 

 127.0.0.1 localhost localhost.localdomain

<VOTRE_IP_SERVEUR> foreman.mondomaine.com foreman 

 

 Installation des prérequis 

 # Mise à jour du système

sudo dnf update -y

# Installation des dépendances de base

sudo dnf install -y vim wget curl net-tools 

 

 Optimisation du noyau (optionnel) 

 Créer le fichier "/etc/sysctl.d/99-foreman.conf" pour optimiser les paramètres du noyau avec le contenu suivant : 

 # ===============================================================

# CONFIGURATION SYSCTL POUR SERVEUR FOREMAN / PUPPET

# ===============================================================

# --- RÉSEAU : Désactivation de l'IPv6 ---

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1

# --- RÉSEAU : Optimisations TCP pour Puppet & API ---

# Augmente la file d'attente pour gérer les pics de connexions des agents

net.core.somaxconn = 1024

# Augmente la plage de ports pour éviter l'épuisement lors de gros déploiements

net.ipv4.ip_local_port_range = 10240 65535

# Accélère la réutilisation des sockets en état TIME_WAIT

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 15

# --- MÉMOIRE : Optimisation PostgreSQL & Java ---

# Réduit l'utilisation du swap pour privilégier la RAM (très important)

vm.swappiness = 10

# Définit le seuil à partir duquel les données sales sont écrites sur disque

vm.dirty_ratio = 15

vm.dirty_background_ratio = 5

# Nécessaire pour les processus Java (Candlepin/Elasticsearch)

vm.max_map_count = 262144

# --- SYSTÈME DE FICHIERS : Gestion des dépôts (Pulp) ---

# Augmente la limite globale de fichiers ouverts

fs.file-max = 2097152

# --- SÉCURITÉ ---

# Empêche les attaques de type IP spoofing

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

# Désactive l'acceptation des redirections ICMP (prévention MITM)

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0 

 Appliquer les paramètres sans redémarrer : 

 sudo sysctl --system 

 

 Désactivation de SELinux (optionnel mais recommandé pour débuter) 

 sudo setenforce 0

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config 

 Note : En production, il est préférable de configurer SELinux correctement plutôt que de le désactiver. 

 

 Configuration du firewall 

 # Autoriser les ports pour Foreman (backend)

# IMPORTANT : Le trafic viendra du serveur HAProxy, pas directement des clients

# Autoriser HTTP depuis HAProxy (le SSL est terminé sur HAProxy)

sudo firewall-cmd --permanent --add-port=8443/tcp # Smart Proxy

sudo firewall-cmd --permanent --add-port=443/tcp # Nginx Local en HTTPS

# Puppet Server

sudo firewall-cmd --permanent --add-port=8140/tcp

# Services optionnels

sudo firewall-cmd --permanent --add-port=53/tcp # DNS (si activé)

sudo firewall-cmd --permanent --add-port=53/udp

sudo firewall-cmd --permanent --add-port=67-69/udp # DHCP/TFTP (si activé)

sudo firewall-cmd --reload 

 

 Installation des dépôts Foreman 

 # Installer le dépôt Foreman 

sudo dnf -y install https://yum.theforeman.org/releases/3.17/el9/x86_64/foreman-release.rpm

# Installer le dépôt Puppet

sudo dnf -y install https://yum.puppet.com/puppet8-release-el-9.noarch.rpm

# Nettoyer le cache

sudo dnf clean all 

 

 Installation de Foreman avec l'installateur 

 # Installer le paquet foreman-installer

sudo dnf install -y foreman-installer

# Lancer l'installation avec les options de base

sudo foreman-installer \

 --foreman-initial-admin-username admin \

 --foreman-initial-admin-password "MotDePasseSecurise" \

 --enable-foreman-proxy \

 --enable-puppet \

 --puppet-server true \

 --puppet-server-foreman-url https://foreman.mondomaine.com 

 Important : Notez bien le mot de passe admin et les informations affichées en fin d'installation. 

 

 Vérification de l'installation 

 # Vérifier que les services sont actifs

sudo systemctl status foreman

sudo systemctl status httpd

sudo systemctl status puppetserver

sudo systemctl status foreman-proxy

# Tester l'accès en local de la WebUI

curl -k https://foreman.mondomaine.com

# Tester l'accès en local de la page de status

curl -k https://foreman.mondomaine.com/status

# Tester l'accès en local du Smart Proxy

curl -k https://foreman.mondomaine.com:8443/version

### Doit retourner : {"version":"<version>","modules":{"puppetca":"<version>","puppet":"<version>","logs":"<version>"}}

# Vérifier que le module puppet fonctionne

curl --cert /etc/puppetlabs/puppet/ssl/certs/foreman.mondomaine.com.pem \

 --key /etc/puppetlabs/puppet/ssl/private_keys/foreman.mondomaine.com.pem \

 --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \

 https://foreman.mondomaine.com:8443/puppet/environments

### Doit retourner : ["production","common"]

# Vérifier que le module logs fonctionne

curl --cert /etc/puppetlabs/puppet/ssl/certs/foreman.mondomaine.com.pem \

 --key /etc/puppetlabs/puppet/ssl/private_keys/foreman.mondomaine.com.pem \

 --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \

 https://foreman.mondomaine.com:8443/puppet/environments

### Doit retourner des logs parsés en json