Construction d'images CentOS Stream avec Disk Image Builder pour OPCP
Découvrez comment construire des images OpenStack CentOS Stream 8 et 9 personnalisées avec diskimage-builder (DiB) pour On-Prem Cloud Platform
Objectif
Disk Image Builder (DiB) est l'outil OpenStack utilisé pour construire des images disque de systèmes d'exploitation personnalisées. Ce guide explique comment construire des images CentOS Stream 8 et CentOS Stream 9 prêtes à être importées dans OpenStack Glance et utilisées sur votre On-Prem Cloud Platform (OPCP).
Ce guide explique comment installer DiB, préparer des éléments personnalisés qui contournent un problème connu de CentOS, puis lancer la construction pour CentOS Stream 8 et CentOS Stream 9.
Pour un autre exemple basé sur Debian avec une personnalisation via Ansible, consultez le guide Création d'une image Debian personnalisée pour OPCP.
Dans ce guide, nous utilisons Debian 12 comme hôte de construction pour produire des images CentOS, mais vous pouvez utiliser une autre distribution Linux (des ajustements peuvent être nécessaires). Vous pouvez également adapter les chemins et les commandes présentés ici en fonction de vos besoins.
Prérequis
- Disposer des permissions root sur l'hôte de construction
- Au moins 10 Go d'espace disque libre
- Un environnement Linux Debian 12 (ou compatible) pour lancer la construction
- Un accès à internet pour télécharger les paquets et les miroirs CentOS amont
En pratique
Étape 1 : Installer les prérequis de construction
Installez les composants requis par DiB pour construire des images basées sur CentOS, Debian et Ubuntu :
git est nécessaire pour cloner le dépôt DiB, qemu-utils fournit l'outillage qemu-img utilisé pour manipuler les images qcow2, qemu-system-x86 fournit qemu-system-x86_64 utilisé à l'étape 7 pour tester le résultat, et curl sert à télécharger les paquets et le contenu des miroirs durant la construction.
Étape 2 : Installer Disk Image Builder
Créez et activez un environnement virtuel Python :
Clonez le dépôt DiB sur un tag spécifique et installez-le. Dans cet exemple, nous utilisons la version 3.42.0 :
Vérifiez que disk-image-create est disponible :
Étape 3 : Créer l'arborescence de dossiers
Créez les répertoires de travail utilisés par la construction :
Étape 4 : Définir les éléments personnalisés
La construction CentOS nécessite deux éléments personnalisés qui contournent des limitations actuelles des éléments DiB amont.
Élément personnalisé : block-device-efi-custom
L'élément block-device-efi par défaut crée une partition ESP (EFI System Partition) plus grande que nécessaire. Créez un élément personnalisé basé sur celui-ci et redimensionnez la partition de 550 Mio à 512 Mio :
Élément personnalisé : centos-custom
L'élément centos par défaut présente un problème qui n'est pas encore corrigé. Créez un élément personnalisé basé sur celui-ci pour appliquer le correctif requis :
Étape 5 : Construire une image CentOS Stream 8
Pour CentOS Stream 8, l'utilisateur par défaut créé par cloud-init est centos.
Créer les variables d'environnement
Lancer la construction
Réinitialisez toute variable précédemment définie, sourcez le fichier d'environnement, puis lancez la construction :
Une fois la construction terminée, vérifiez les fichiers générés :
Étape 6 : Construire une image CentOS Stream 9
Pour CentOS Stream 9, l'utilisateur par défaut créé par cloud-init est cloud-user.
Créer les variables d'environnement
Lancer la construction
Une fois la construction terminée, vérifiez les fichiers générés :
Étape 7 (optionnel) : Tester l'image localement
Avant d'importer l'image, vous pouvez la démarrer localement avec QEMU pour vérifier qu'elle démarre correctement :
Étape 8 : Importer l'image dans OpenStack
Importez l'image qcow2 générée dans Glance :
Vous pouvez désormais créer une instance Bare Metal (Ironic) ou Compute (Nova) à partir de l'image nouvellement créée.
Dépannage
L'image ne démarre pas (emergency mode) ou le build échoue sur grub2-probe
Symptômes
L'erreur peut apparaître à deux endroits différents :
Lors du build, sur l'étape grub :
Au démarrage d'une instance, le boot ne va pas jusqu'au bout et s'arrête en mode « emergency ». journalctl montre des erreurs sur le système de fichiers :
Cause
Le problème est lié à la version d'e2fsprogs, utilisé par les commandes mke2fs, e2fsck, grub2-probe.
disk-image-builder formate la partition root avec le mkfs.ext4 de la machine de construction, pas celui de l'image cible. Si l'hôte de construction utilise un e2fsprogs récent (version supérieure à 1.47), certaines fonctionnalités ext4 sont activées par défaut à la création du système de fichiers :
metadata_csum_seedorphan_file
Ces fonctionnalités sont trop récentes pour l'e2fsprogs/grub2 embarqué dans CentOS 8 ou 9, ce qui cause les erreurs observées.
Solution
Désactivez ces fonctionnalités à la création du système de fichiers via l'option --mkfs-options de disk-image-create :
Aller plus loin
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en place de nos solutions, contactez votre commercial ou cliquez sur ce lien afin d'obtenir un devis et demandez une analyse à nos experts Professional Services sur le cas d'usage spécifique de votre projet.
Échangez avec notre communauté d'utilisateurs.