Existe-t-il un équivalent moderne de python-vm-builder?

11

J'essaie de trouver la meilleure méthode moderne pour faire ce que je faisais avec python-vm-builder (alias ubuntu-vm-builder).

Je veux un moyen scripté et reproductible de commencer à partir de quelque chose comme ubuntu-core (alias l'artiste anciennement connu sous le nom de JeOS ), ajouter des packages, définir des scripts de première exécution, etc.

Ce que je recherche, c'est quelque chose qui ressemble à la rotation d'une image ISO personnalisée (même si ce ne sera pas une image ISO, ce sera un système "installé"). Le résultat doit être un noyau, une image initrd et rootfs qui convient pour un démarrage PXE sans disque avec NFS.

Quels outils sont utilisés pour créer, par exemple, l'image du netboot Ubuntu (ou toute image Ubuntu d'ailleurs)? Sont-ils suffisamment flexibles pour mes besoins?

Qu'en est-il des outils utilisés pour créer les nouveaux environnements d'installation utilisés pour les tests d'intégration d'Ubuntu? Seraient-ils appropriés?

Notez qu'au moment de l'exécution, les rootfs seront montés en lecture seule, donc je ne cherche pas à gérer une instance au fil du temps. Je cherche à relancer une installation automatisée à chaque nouvelle version d'Ubuntu, et périodiquement au cours des 6 mois qui s'écoulent.

jderose
la source
2
Je n'ai pas de réponse, car je ne suis pas sûr de la meilleure méthode actuelle, mais cela ressemble étrangement à une tâche pour Chef ou Puppet, peut-être même Vagrant.
Marco Ceppi
1
Pourquoi vmbuilder ne répond plus à vos besoins? Il utilise debootstrappour créer le système de base (un "chroot" qui peut ensuite être copié sur une image disque). Jetez un oeil et voyez si cela aide.
Salem
vmbuilder fonctionnerait, je pense, mais c'est pour un système à long terme, donc je ne veux pas construire sur des morceaux qui sont déjà morts dans l'eau.
jderose

Réponses:

7

Vous pouvez utiliser directement une image cloud officielle, puis créer une petite image ISO en utilisant cloud-localds(à partir du cloud-utilspackage) à utiliser comme source de données "nocloud" pour cloud-init.

Ensuite, vous pouvez utiliser des données utilisateur cloud-init (exemple) comme mécanisme unique pour ajouter des packages et exécuter vos propres scripts de première exécution sur des fournisseurs de cloud qui fournissent des images cloud Ubuntu officielles ainsi que sur vos machines virtuelles locales.

Si vous exécutez cloud-localdssans paramètres, il affichera un exemple d'utilisation pour configurer et exécuter une machine virtuelle à l'aide de kvm directement.

Pour exécuter la machine virtuelle d'une autre manière, il suffit de fournir une image cloud (par exemple, téléchargée à partir de https://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img pour 12.04) comme premier disque et présenter la sortie d'image ISO à partir cloud-localdsd'un CD-ROM.

Plus d'informations sont dans le blog de Scott Moser .

Robie Basak
la source
1
Je ne sais pas dans quelle mesure cela serait applicable si vous souhaitez vous retrouver avec un système de bureau, cependant.
Robie Basak
Merci! Cela ressemble au genre de chose que je recherche. Et cet environnement n'est pas pour un système de bureau, BTW. Je construis quelque chose un peu comme l'environnement éphémère MAAS. Il doit être plus complet que le noyau Ubuntu seul, mais j'aimerais qu'il soit un peu plus petit qu'une installation minimale du serveur Ubuntu.
jderose
2

Je n'ai jamais empaqueté un ISO, donc je ne peux pas commenter de ma propre expérience, mais il semble que la réponse à votre question soit Cobbler ( http://cobbler.github.com ).

De la documentation de la communauté Ubuntu:
"Ubuntu utilise cobbler comme serveur de provisioning préféré pour les machines Ubuntu." -  https://help.ubuntu.com/community/Cobbler

Buddy Gorven
la source
1
help.ubuntu.com/community/Cobbler est obsolète. Je viens de demander sa mise à jour. Désolé, cela a déjà été manqué.
Robie Basak
1
Merci! Bien que je puisse probablement faire ce que je veux avec Cobbler, cela semble bien exagéré pour ce que je vise. Je ne veux pas d'un service de provisioning (et des complexités que cela apporte), juste un outil de provisioning très simple. Je recherche quelque chose de plus élevé que debootstrap, mais toujours une ligne de commande à usage unique ou un outil API.
jderose