Open Image Cloud
Des images cloud pour OpenStack et Proxmox : builds reproductibles, signature cosign keyless, provenance embarquée dans chaque image.
- site
- openimages.cloud
- registre
- images.openimages.cloud
- code
- github.com/open-img-cloud
- licence
- Apache-2.0 / MIT selon les dépôts
- rôle
- Auteur et mainteneur
Open Image Cloud publie des images cloud prêtes à l’emploi pour OpenStack et Proxmox. Huit distributions Linux (Alpaquita, Alpine, Amazon Linux 2 et 2023, Gentoo, NixOS, Oracle Linux 9 et 10), plus les amphores Octavia alignées sur chaque version d’OpenStack.
Ce qui distingue ces images des images officielles des distributions n’est pas leur contenu. C’est ce qu’on peut en dire avec certitude.
Le problème
Vous démarrez une image cloud. Elle vient d’un miroir, elle a un nom de fichier et une somme de contrôle. La somme prouve que le fichier n’a pas été altéré depuis sa publication. Elle ne dit rien de ce qui s’est passé avant : quel dépôt, quelle révision, quelle machine, quels paquets à quelle date, quelles retouches appliquées après l’installation de base.
Sur une machine, c’est un détail. Sur une flotte, c’est la couche dont tout le reste hérite, et c’est la seule que personne ne relit.
Ce qui est mis en place
Builds reproductibles. Chaque image est construite par un workflow
GitHub Actions, à partir de sources amont épinglées et d’un conteneur de
build lui-même étiqueté. La révision du dépôt, l’URL d’exécution du build
et l’empreinte du conteneur constructeur sont écrites dans le
MANIFEST.json livré à côté de l’image.
Signature cosign keyless. Les images sont signées via l’OIDC de GitHub Actions. Il n’y a pas de clé privée à conserver, donc pas de clé privée à perdre. La vérification se fait contre l’identité du workflow qui a produit l’image :
cosign verify-blob alpine-3.23.4-uefi-x86_64.qcow2 \
--bundle alpine-3.23.4-uefi-x86_64.qcow2.bundle --new-bundle-format \
--certificate-identity-regexp 'https://github.com/open-img-cloud/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
Chemins immuables. Le registre public sert les images sous
images.openimages.cloud/<os>/<version>/<fichier>. Un chemin publié ne
change plus. Un alias latest/ mutable existe à côté, pour ceux qui le
veulent, mais ce n’est jamais lui qui fait foi.
L’architecture
La chaîne de build vit dans un dépôt .github partagé, sous forme de
workflows réutilisables et d’actions composites. Chaque dépôt d’image
reste mince : un VERSION, un script de personnalisation (libguestfs ou
diskimage-builder selon la distribution), un détecteur de nouvelle version
amont, et deux workflows appelants.
Côté stockage, la source de vérité est un
Garage auto-hébergé, miroité vers
Cloudflare R2 et servi derrière le CDN. Un petit Worker route les chemins
/<os>/* vers les compartiments correspondants.
Pourquoi ça compte
Le mot souverain est aujourd’hui vendu comme une propriété géographique. Mais un datacentre situé en Europe qui démarre des images dont personne ne sait reconstruire la généalogie ne vous donne aucune garantie supplémentaire : il déplace la confiance, il ne la supprime pas.
L’objectif d’Open Image Cloud est de rendre cette confiance inutile. Vous pouvez vérifier ce que vous démarrez sans avoir à me croire.