Foreman composants
| Fiche express | |
|---|---|
| Type | Détail des composants et concepts internes de Foreman |
| Complète | Foreman (page de présentation générale) |
| Voir aussi | Katello · Hammer foreman · Puppet |
Cette page détaille les composants et concepts qui structurent Foreman : modèle de provisioning, rôle d'ENC vis-à-vis de la gestion de configuration, organisation des hôtes, reporting et API. Pour une présentation générale de l'outil, voir Foreman.
Modèle de provisioning
Foreman prend en charge deux grandes familles de déploiement :
- Physique — via un serveur PXE classique.
- Virtuel — via un serveur PXE dédié (VLAN de provisioning, éventuellement isolé par mot de passe), ou directement via l'API de l'hyperviseur (par exemple
virt-installpour libvirt) sans passer par PXE.
Comparé à des solutions de provisioning plus basiques (voir Cobbler ci-dessous), Foreman ajoute :
- le support de plusieurs backends de provisioning en parallèle ;
- une décentralisation des services (TFTP, DNS, DHCP) via les smart proxies ;
- un ENC intégré pour la configuration post-provisioning ;
- un historique de changement et des rapports ;
- la prise en charge du cloud et du bare metal dans un même outil.
Les providers supportés côté virtualisation/cloud incluent notamment libvirt, EC2, OpenStack, Google Compute Engine, oVirt et VMware.
Le contenu réellement déployé sur les machines (post-install socle, agents de supervision, sauvegarde, comptes utilisateurs, clés SSH, durcissement...) reste porté par l'outil de gestion de configuration (Puppet, Ansible...), Foreman ne fait qu'orchestrer son exécution.
Rôle d'ENC (External Node Classifier)
Vis-à-vis de Puppet, Foreman joue le rôle d'ENC : il indique à chaque agent quelles classes appliquer et avec quels paramètres. Concepts clés :
- Classes et classes paramétrées — regroupement de configuration réutilisable.
- Smart variables — valeurs de paramètres qui varient selon le contexte (host group, environnement...).
- Global parameters — valeurs partagées à l'échelle de l'installation.
- Host groups — modèles réutilisables associant paramètres de provisioning, classes puppet et configuration réseau.
- Environnements — séparation logique (dev/prod...) reprise du modèle Puppet.
Pour le détail de ce que Puppet peut gérer une fois appliqué sur l'hôte (paquets, services, fichiers, comptes, réseau...), voir Puppet et Puppet client.
Reporting et requêtes
Foreman conserve un historique détaillé des exécutions (runs de configuration, temps de réponse) et permet des requêtes avancées pour cibler des sous-ensembles d'hôtes selon leurs facts, classes ou groupes.
API REST
L'ensemble des fonctions de Foreman est exposé via une API REST documentée, ce qui permet de l'intégrer à des outils tiers (CI/CD, scripts d'inventaire...) au-delà de l'interface web. C'est cette API que pilote la CLI Hammer.
Intégrations courantes
- Jenkins et Rundeck — déclenchement de provisioning ou de jobs depuis une pipeline CI/CD (voir aussi Integration continue).
- OpenStack (Openstack) et EC2 — provisioning cloud.
Comparaison avec Cobbler
Cobbler a longtemps servi de brique de provisioning (PXE + kickstart) mais reste plus limité que Foreman sur plusieurs points : interface moins intuitive, pas de support de Xen, TFTP non décentralisable nativement, gestion basique des dépôts yum, et pas de rôle d'ENC intégré. Foreman reprend ces besoins de provisioning tout en ajoutant l'orchestration de la configuration et le reporting.
Écosystème Katello
Lorsque le plugin Katello est activé, Foreman s'intègre à un écosystème de gestion de contenu plus large :
- Foreman — provisioning et ENC (bare metal ou VM).
- Katello — gestion de contenu et de cycle de vie applicatif.
- Pulp (Pulp) — gestion des dépôts (miroir, synchronisation, publication).
Voir Katello pour le détail de cette intégration.
Voir aussi
- Foreman — présentation générale
- Katello — plugin de gestion de contenu
- Hammer foreman — CLI
- Puppet · Ansible — gestion de configuration
- Cobbler · Razor · Preseed — autres outils de provisioning
- Smart proxies · Smart variables