Images système

Configurer ses images cloud avec Glance

Un guide pratique des propriétés d'image Glance : OS, architecture, Secure Boot, VirtIO, et les différences à connaître entre Linux et Windows.

Quand on ajoute une image dans OpenStack, lancer la première instance peut vite tourner au casse-tête : écran noir, carte réseau absente, images mal organisées dans Horizon… Autant de petits soucis très courants dont on se passerait bien. C’est souvent à ce moment-là qu’on réalise qu’une image cloud n’est pas qu’un disque : c’est aussi un ensemble de métadonnées. Dans OpenStack, ces métadonnées (les image properties) sont gérées par le service Glance. Bien définies, elles pilotent le comportement de Nova, Ironic et Cinder pour que vos images fonctionnent comme prévu.

Ce guide vous montre comment poser les bonnes propriétés (OS, version, architecture, Secure Boot), tirer parti de VirtIO pour les performances, et éviter les pièges classiques Linux contre Windows. On y glisse aussi la bonne habitude d’utiliser la nomenclature libosinfo pour garder un catalogue propre et scriptable.

Objectif

  • Comprendre les propriétés d’image Glance les plus utiles.
  • Voir les différences clés entre Linux et Windows.
  • Optimiser pour la performance (VirtIO) et la compatibilité (Secure Boot, IDE/e1000).
  • Disposer d’un aide-mémoire prêt à l’emploi (sans remplacer la documentation officielle).

Propriétés système et OS

PropriétéExempleUtilité
architecturex86_64Architecture CPU
os_distroubuntu, windowsNom de l’OS (libosinfo)
os_version24.04, 2019Version de l’OS
os_typelinux, windowsFamille d’OS
os_secure_bootrequiredActive Secure Boot

Astuce pratique. Renseignez os_distro et os_version avec des valeurs normalisées (voir libosinfo ci-dessous). Ça évite Ubuntu contre ubuntu (ou Win2019 contre windows), simplifie les scripts, et garde vos listes propres dans Horizon.

libosinfo, c’est quoi et à quoi ça sert ?

libosinfo est une base de connaissances des systèmes d’exploitation (projet open source) utilisée par de nombreux outils de virtualisation. Elle fournit des noms et versions normalisés ainsi que des informations utiles (pilotes, compatibilité, paramètres recommandés).

Dans notre contexte, l’utiliser pour nommer os_distro et os_version apporte :

  • de la cohérence (scripts, CI/CD, filtres, étiquetage),
  • une meilleure lisibilité dans les interfaces,
  • moins d’erreurs dues aux variations de casse ou d’orthographe.

Exemples conformes :

os_distro=ubuntu    os_version=24.04
os_distro=debian    os_version=12
os_distro=rocky     os_version=9
os_distro=windows   os_version=2019

Ce n’est pas obligatoire pour Glance, mais c’est une bonne pratique.

Propriétés hyperviseur

PropriétéExempleDescription
hypervisor_typekvmHyperviseur cible
img_config_driveoptionalConfig-drive requis ou non
instance_uuid<UUID>UUID source si snapshot

Propriétés VirtIO (performance)

PropriétéExempleDescription
hw_disk_busvirtio, ideContrôleur disque
hw_scsi_modelvirtio-scsiContrôleur SCSI
hw_vif_modelvirtio, e1000Carte réseau
hw_rng_modelvirtioPériphérique RNG
hw_qemu_guest_agentyesAgent invité QEMU

Linux : passez directement en virtio (pris en charge nativement par le noyau). Windows : démarrez en ide et e1000, puis basculez en virtio après installation des pilotes VirtIO.

Propriétés sécurité

PropriétéExempleDescription
cinder_encryption_key_id<UUID>Clé KMS pour volumes
cinder_encryption_key_deletion_policyon_image_deletionPolitique de suppression

Exemples pratiques

Créer une image Ubuntu 24.04 optimisée VirtIO

openstack image create \
  --file ubuntu-24.04.qcow2 \
  --disk-format qcow2 \
  --container-format bare \
  --property os_distro=ubuntu \
  --property os_version=24.04 \
  --property os_type=linux \
  --property architecture=x86_64 \
  --property hw_disk_bus=virtio \
  --property hw_scsi_model=virtio-scsi \
  --property hw_vif_model=virtio \
  --property hw_rng_model=virtio \
  --property hw_qemu_guest_agent=yes \
  "ubuntu-24.04-virtio"

Créer une image Windows Server 2019 (mode compatibilité)

openstack image create \
  --file windows-server-2019.qcow2 \
  --disk-format qcow2 \
  --container-format bare \
  --property os_distro=windows \
  --property os_version=2019 \
  --property os_type=windows \
  --property architecture=x86_64 \
  --property hw_disk_bus=ide \
  --property hw_vif_model=e1000 \
  "windows-server-2019"

Ensuite, dans la VM Windows :

  • installez les pilotes VirtIO,
  • installez Cloudbase-Init,
  • puis migrez les propriétés :
openstack image set <WIN_IMAGE_ID> \
  --property hw_disk_bus=virtio \
  --property hw_scsi_model=virtio-scsi \
  --property hw_vif_model=virtio

Comparatif Linux et Windows (valeurs recommandées)

PropriétéLinux (Ubuntu, CentOS…)Windows (Server 2019/2022/2025)
os_typelinuxwindows
os_distroubuntu, centos, rocky…windows
os_version24.04, 9…2019, 2022, 2025
architecturex86_64x86_64
hw_disk_busvirtio / scsiide → virtio (après pilotes)
hw_scsi_modelvirtio-scsivirtio-scsi (après pilotes)
hw_vif_modelvirtioe1000 → virtio (après pilotes)
hw_rng_modelvirtiovirtio (si pilote installé)
hw_qemu_guest_agentyesyes (Cloudbase QGA)
img_config_driveoptionaloptional
os_secure_bootoptional / requiredrequired (UEFI et Secure Boot)

Linux : VirtIO partout dès le départ. Windows : IDE et e1000 pour installer, puis VirtIO après les pilotes et Cloudbase-Init.

En résumé

  • Les propriétés d’image pilotent concrètement le démarrage, la compatibilité et la performance.
  • VirtIO apporte un gain immédiat (disque et réseau).
  • Windows : la compatibilité d’abord (IDE/e1000), VirtIO ensuite.
  • Standardisez os_distro et os_version avec libosinfo pour rester propre et scriptable.
  • Pensez à l’agent invité QEMU et à la description de l’image (catalogue lisible).

Pour aller plus loin