Architecture de Foreman

Vue d'ensemble

Foreman est une plateforme complète de gestion du cycle de vie des serveurs. C'est bien plus qu'un simple outil de gestion de configuration : c'est une solution intégrée qui combine plusieurs technologies pour offrir un système complet d'orchestration et de provisioning.

Qu'est-ce que Foreman ?

Foreman permet de :

Philosophie d'architecture

Foreman suit une architecture modulaire où chaque composant a un rôle spécifique :

Architecture détaillée

Schéma d'architecture complète

Les principaux composants

1. Foreman Core (Application Rails)

Rôle : Cerveau du système, interface web centrale

Caractéristiques :

Fonctionnalités :

Processus :

Service : foreman.service (Puma/Passenger)
Port : Aucun (accès via Apache/Nginx)
Utilisateur : foreman

2. Apache/Nginx (Serveur Web)

Rôle : Serveur web frontal pour Foreman

Caractéristiques :

Configuration par défaut :

Port HTTP : 80 (redirigé vers HTTPS)
Port HTTPS : 443
Serveur backend : Puma (socket Unix)

VirtualHosts principaux :

3. Smart Proxy (foreman-proxy)

Rôle : Agent d'infrastructure, bras armé de Foreman

Le Smart Proxy est le composant qui permet à Foreman d'interagir avec l'infrastructure réseau et les services. Il peut être installé sur le même serveur que Foreman ou sur des serveurs distants.

Fonctionnalités modulaires :

DNS

DHCP

TFTP

Puppet CA

Puppet

Templates

Logs

Realm (Kerberos/AD)

Configuration :

Port : 8443 (HTTPS)
Protocole : REST API
Authentification : Certificat SSL client
Configuration : /etc/foreman-proxy/settings.yml
Modules : /etc/foreman-proxy/settings.d/*.yml

4. Puppet Server

Rôle : Serveur de gestion de configuration

Le Puppet Server est le composant central pour la gestion de configuration. Il stocke les manifests, modules et données, et les distribue aux agents.

Composants Puppet :

Puppet Server (JVM)

PuppetDB (optionnel mais recommandé)

Puppet CA

Ports et services :

Puppet Server : 8140 (HTTPS)
PuppetDB : 8081 (HTTP/HTTPS)
Catalogue Compiler : Intégré dans 8140

Workflow Puppet :

1. Agent demande un certificat → Puppet CA
2. Agent envoie ses facts → Puppet Server
3. Server compile le catalogue → Renvoie à l'agent
4. Agent applique le catalogue
5. Agent renvoie le rapport → Puppet Server → PuppetDB
6. Foreman récupère le rapport → Affichage dans l'UI

5. Base de données

Rôle : Stockage persistant des données Foreman

Base de données supportées :

Données stockées :

Configuration :

Base de données : foreman
Utilisateur : foreman
Port : 5432 (PostgreSQL) / 3306 (MySQL)

6. Services d'infrastructure (optionnels)

DNS (BIND, PowerDNS, etc.)

DHCP (ISC DHCP, etc.)

TFTP

Conclusion

L'architecture de Foreman est modulaire et extensible :

Les agents Puppet se connectent via mTLS sur le port 8140, récupèrent leur configuration depuis Foreman (via ENC), et appliquent les changements de manière déclarative.

L'ajout de HAProxy permet de centraliser les accès, gérer le SSL/TLS, et protéger le serveur Foreman des accès directs.

Cette architecture offre :


Revision #5
Created 2026-02-02 12:02:36 UTC by NoNo
Updated 2026-02-02 15:00:16 UTC by NoNo