Use libguestfs para administrar imágenes de disco de máquina virtual

Recientemente tuve la oportunidad de jugar con una función de OpenShift llamada Virtualización OpenShiftque también se conoce como. La virtualización de OpenShift es una tecnología realmente excelente que permite a OpenShift aprovisionar y administrar máquinas virtuales (VM) en una plataforma Kubernetes. Su versión anterior es kubevirt. Mientras trabajaba con OpenShift Virtualización, necesitaba una forma de personalizar las imágenes existentes del sistema operativo (SO) de la máquina virtual. Como algunos de ustedes saben, existen diferentes tipos de imágenes de sistemas operativos como ISO y VDI. El que decidí usar es el formato QCOW2 para discos virtuales, ya que funciona para QEMU copy-on-write y es un buen formato para la imagen de la nube.

Personalizar una imagen existente no parece una tarea fácil. Afortunadamente, otro Red Hatter me sugirió que estudiara una herramienta de código abierto llamada libguestfsy me ayudó a lograr lo que quería hacer. Aquí hay una breve descripción de libguestfs de su sitio de Internet:

libguestfs es un conjunto de herramientas para acceder y modificar imágenes de disco de máquinas virtuales (VM). Puede usarlo para ver y editar archivos dentro de invitados, editar scripts de máquinas virtuales, monitorear estadísticas de discos usados/libres, crear invitados, P2V, V2V, realizar copias de seguridad, clonar máquinas virtuales y crear máquinas virtuales, formatear discos, cambiar el tamaño de discos y mucho más. . .

Suena como una herramienta poderosa, ¿no? libguestfs es parte de código abierto Herramientas de virtualizacióno Virt Tools, y la familia incluye otras herramientas como QEMU, KVM y libvirt. Asegúrese de revisar las otras utilidades en su sitio web en sitio web de herramientas virtuales.

libguestfs es una colección de muchas herramientas diferentes, y la lista puede parecer desalentadora. Este blog lo guía a través de algunas de sus funciones más útiles, pero siéntase libre de explorar otras herramientas disponibles con libguestfs después de leer este blog. La documentación de libguestfs es muy completa y proporciona un uso detallado de cada utilidad, como se muestra a continuación.

Estoy muy entusiasmado con libguestfs y creé YouTube video para mostrar varias de las herramientas que se encuentran en la colección. Asegúrate de ver el video después de leer el artículo.

Ahora, sin más preámbulos, comencemos. Para facilitarle las cosas, lo dividiré en una guía paso a paso.

Índice

Paso 0: Entorno de requisitos previos

Sin embargo, antes de comenzar, haré algunas suposiciones sobre su conocimiento previo y su entorno:

  • Tiene un entorno Linux disponible a través del hardware de su ordenador o una herramienta de máquina virtual como QEMU o VirtualBox.
  • Tiene conocimientos básicos de Linux y ha configurado y activado un administrador de paquetes (por ejemplo, YUM para Centos/Fedora/RHEL) para su distribución de Linux.
  • Tiene acceso a la red pública y tiene privilegios de root/sudo para su entorno Linux.
  • Has descargado un ejemplo Imagen de CentOS 7 QCOW2. Puede descargar CentOS-7-x86_64-GenericCloud.qcow2, por ejemplo.

En esta demostración estoy usando Sintió como mi principal entorno de trabajo. Para la imagen de máquina virtual QCOW2, estoy usando la imagen QCOW2 de Centos 7, como se mencionó anteriormente. Sin embargo, no dude en utilizar otras imágenes. Para Red Hat Linux (RHEL), puede quedarse atascado durante el paso de instalación de Tomcat con virt-customize ya que RHEL requiere una configuración de administración de paquetes adicional.

Paso 1: instalar libguestfs

Correcto. Sigamos adelante e instalemos las herramientas libguestfs usando un administrador de paquetes. Asegúrate de ejecutarlo como sudo usuario. Si está en un entorno Fedora/Centos/RHEL, el comando para instalar libguestfs es:

$ sudo yum install libguestfs-tools

O, si está utilizando un entorno Debian/Ubuntu, el comando para instalar libguestfs es:

$ sudo apt-get install libguestfs-tools

Desde que uso Fedora, uso el yum install para instalar libguestfs, como se muestra a continuación. libguestfs es una colección de muchas utilidades, por lo que se enumeran muchas herramientas.

Si la pantalla te pregunta: Es correcto [y/N]pegar para continuar con la instalación.

Nota: puede agregar -y opción después yum install para ignorar el aviso.

Espero que todo se arregle sin problema. De lo contrario, asegúrese de verificar sus repositorios de administración de paquetes, dependencias, etc. resolver problemas.

Paso 2: edite el archivo de configuración de QEMU

Antes de probar nuestro primer comando libguestfs, hay una cosa que debemos cambiar. Algunos comandos, como virt-customizerequieren que el comando se ejecute a través de la virtualización con QEMU, lo que requiere un privilegio diferente. De lo contrario, te encuentras con un error como este.

La forma más fácil que he encontrado que funciona hasta ahora es cambiar dos propiedades en /etc/libvirt/qemu.conf. Muestre el contenido del archivo con el siguiente comando:

# cat /etc/libvirt/qemu.conf

Cuando te desplazas hacia abajo, ves que dos campos usuario y grupo (alrededor de la línea 448 y la línea 452) están comentados. Descomenta estos valores para que se habiliten.

Abra el archivo con un editor de texto como Vi y descomentar estos valores. Guarda el archivo. Su resultado final debe ser similar al siguiente:

Ahora estamos listos para ir. Probemos nuestra primera utilidad libguestfs.

Paso 3: inspeccionar la imagen de la máquina virtual

libguestfs ofrece una serie de poderosas utilidades para inspeccionar y obtener información sobre cualquier imagen de máquina virtual. Solo utilizaremos tres de estas utilidades: qemu-img, sistemas de archivos virty inspector-virt.

Nota: siempre que necesite comprender un pedido específico, agregue --help para obtener información de uso básica (por ejemplo, virt-filesystems --help).

Primer uso qemu-img para obtener una descripción general de la imagen de la máquina virtual. qemu-img no es realmente parte de libguestfs, pero es una dependencia que se instala cuando instala libguestfs.

# qemu-img info OS-IMAGE-FILE

¿Dónde está la imagen de la máquina virtual?

Podemos obtener más información sobre el sistema de archivos del archivo con sistemas de archivos virt. Por ejemplo, ejecutar el siguiente comando muestra la información de montaje del archivo de la imagen del sistema operativo:

# virt-filesystems --long -h --all -a OS-IMAGE-FILE

inspector-virt examina una máquina virtual o una imagen de disco e intenta determinar la versión del sistema operativo y otra información sobre la máquina virtual. virt-inspector produce una salida XML para alimentar otros programas. Este comando es una forma poderosa de obtener una vista previa detallada de la imagen del sistema operativo. Aquí está el comando:

# virt-inspector OS-IMAGE-FILE

Eso es todo por nuestros tres comandos para recopilar información sobre la imagen del sistema operativo. Ahora pasemos a un poderoso comando que nos permite editar la imagen.

Paso 4: Modifique la imagen de la máquina virtual con virt-customize

Además de las utilidades para obtener una vista previa de la imagen del sistema operativo, libguestfs también proporciona muchas herramientas poderosas para modificar la propia imagen. Uno de ellos es constructor virtualque ayuda a construir una nueva imagen rápidamente. Otro ejemplo es formato-virtque borra todos los datos. Sin embargo, la herramienta que exploraremos a continuación es virt-personalizar.

virt-customize personalizar una máquina virtual (imagen de disco) instalando paquetes, modificando archivos de configuración, etc. virt-customize cambia el invitado o la imagen del disco en su lugar. El invitado debe ser detenido. Si desea conservar el contenido invitado existente, primero debe crear una instantánea, copiar o clonar el disco.

Veamos dos ejemplos. Puede cambiar la contraseña raíz de la imagen del sistema operativo con el siguiente comando:

# virt-customize -a OS-IMAGE-FILE --root-password password:YOUR-ROOT-PASSWORD

¿Dónde está la imagen de la máquina virtual y la contraseña de root que desea establecer?

Esto es extremadamente útil, ya que cambiar y cambiar las contraseñas de root para algunas versiones del sistema operativo es bastante difícil. Por ejemplo, la contraseña raíz para RHEL se establece aleatoriamente, por lo que es útil aprovechar este comando.

Otra cosa muy útil que puedes hacer con virt-customize es instalar un paquete desde un administrador de paquetes (por ejemplo, YUM). El comando se ve así:

# virt-customize -a OS-IMAGE-FILE --install PACKAGE-NAME

¿Dónde está la imagen de la máquina virtual y el nombre del paquete que desea instalar?

Por ejemplo, la siguiente captura de pantalla muestra el comando de instalación Matou.

Tomcat, por cierto, requiere algunos paquetes y configuraciones adicionales para ejecutarse en un entorno Linux. Si necesita configurar Tomcat en Linux, puedes leer este blog personal que escribí antes.

Como se indicó anteriormente, algunas distribuciones de Linux, como RHEL, requieren una configuración previa con administración de paquetes antes de instalar cualquier cosa. Por lo tanto, la ejecución del comando de instalación falla sin la configuración adicional.

Conclusión

Eso es. libguestfs, como puede ver, es una colección extremadamente útil de poderosas utilidades para administrar cualquier sistema operativo o imagen de máquina virtual. Este blog solo cubre algunos ejemplos de lo que puede hacer con libguestfs. Asegúrese de explorar más a fondo lo que puede desbloquear con la herramienta. Recuerda mirar mi video de libguestfs en Youtube. Consulte también otros artículos sobre Permitir que Sysadmin se convierta en un mejor administrador del sistema.

Artículos de interés

Subir