¿Existe un equivalente moderno de python-vm-builder?

11

Estoy tratando de encontrar la mejor práctica y la forma moderna de hacer lo que solía hacer con python-vm-builder (también conocido como ubuntu-vm-builder).

Quiero una forma guionizada y repetible para comenzar desde algo como ubuntu-core (también conocido como el artista anteriormente conocido como JeOS ), agregar algunos paquetes, definir scripts de primera ejecución, etc.

Lo que busco es algo parecido a girar un ISO personalizado (aunque no será un ISO, será un sistema "instalado"). El resultado debe ser un kernel, una imagen initrd y rootfs que sea adecuado para un arranque PXE sin disco con NFS.

¿Qué herramientas se utilizan para crear, por ejemplo, la imagen de arranque de red de Ubuntu (o cualquier imagen de Ubuntu para el caso)? ¿Son lo suficientemente flexibles para mis necesidades?

¿Qué hay de las herramientas utilizadas para crear los entornos de instalación nueva utilizados para las pruebas de integración de Ubuntu? ¿Serían apropiados?

Tenga en cuenta que en tiempo de ejecución los rootfs se montarán de solo lectura, por lo que no estoy buscando administrar una instancia con el tiempo. Estoy buscando volver a girar una instalación automatizada en cada nueva versión de Ubuntu, y periódicamente en los 6 meses intermedios.

jderose
fuente
2
No tengo una respuesta, ya que no estoy seguro de la mejor práctica actual, pero esto parece sospechosamente una tarea para Chef o Puppet, posiblemente incluso Vagabundo.
Marco Ceppi
1
¿Por qué vmbuilder ya no satisface tus necesidades? Se utiliza debootstrappara crear el sistema base (un "chroot" que luego se puede copiar en una imagen de disco). Eche un vistazo y vea si ayuda.
Salem
Creo que vmbuilder funcionaría, pero esto es para un sistema a largo plazo, por lo que no quiero construir sobre bits que ya están muertos en el agua.
jderose

Respuestas:

7

Puede usar una imagen oficial en la nube directamente, y luego crear una pequeña imagen ISO usando cloud-localds(del cloud-utilspaquete) para usarla como fuente de datos "nocloud" para cloud-init.

Luego, puede usar datos de usuario de inicio en la nube (ejemplo) como un mecanismo único para agregar paquetes y ejecutar sus propios scripts de primera ejecución en los proveedores de la nube que proporcionan imágenes oficiales de Ubuntu Cloud, así como en sus máquinas virtuales locales.

Si ejecuta cloud-localdssin parámetros, mostrará el uso de ejemplo para configurar y ejecutar una VM utilizando kvm directamente.

Para ejecutar la máquina virtual de otra manera, solo proporcione una imagen de nube (por ejemplo, descargada de https://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img para 12.04) como primer disco, y presente la salida de imagen ISO cloud-localdscomo un CD-ROM.

Más información está en la publicación del blog de Scott Moser .

Robie Basak
fuente
1
Sin embargo, no estoy seguro de cuán aplicable sería esto si quieres terminar con un sistema de escritorio.
Robie Basak
¡Gracias! Este parece el tipo de cosas que estoy buscando. Y este entorno no es para un sistema de escritorio, por cierto. Estoy construyendo algo parecido al entorno efímero de MAAS. Tiene que ser más completo que decir solo Ubuntu Core, pero me gustaría que sea bastante más pequeño que una instalación mínima de servidor Ubuntu.
jderose
2

Nunca he empaquetado un ISO, por lo que no puedo comentar desde mi propia experiencia, pero parece que la respuesta a su pregunta es Cobbler ( http://cobbler.github.com ).

De la documentación de la comunidad de Ubuntu:
"Ubuntu utiliza cobbler como el servidor de aprovisionamiento preferido para las máquinas Ubuntu". -  https://help.ubuntu.com/community/Cobbler

Buddy Gorven
fuente
1
help.ubuntu.com/community/Cobbler está desactualizado. Acabo de pedir que se actualice. Lo siento, esto se perdió antes.
Robie Basak
1
¡Gracias! Aunque probablemente podría hacer lo que quiero con Cobbler, parece demasiado exagerado para lo que busco. No quiero un servicio de aprovisionamiento (y las complejidades que eso conlleva), solo una herramienta de aprovisionamiento muy simple. Estoy buscando algo más alto que debootstrap, pero aún así una línea de comandos de un solo uso o una herramienta API.
jderose