Diferencia entre revisiones de «Virtualización con libvirt»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Paso 4: Instalación de libvirt e importación de imagenes)
Línea 2: Línea 2:
 
sistema anfitrión con Ubuntu 18.04.
 
sistema anfitrión con Ubuntu 18.04.
  
En esta práctica se emplearán la imagen descargada de la web Ubuntu Cloud y se hará uso de la herramienta '''cloud-init''' para configurarla.
+
En esta práctica se empleará la imagen descargada de la web Ubuntu Cloud y se hará uso de la herramienta '''cloud-init''' para configurarla.
  
 
A continuación, utilizaremos la imagen de Ubuntu ya configurada para ser importada al software de virtualización '''libvirt'''.
 
A continuación, utilizaremos la imagen de Ubuntu ya configurada para ser importada al software de virtualización '''libvirt'''.
Línea 33: Línea 33:
 
= Paso 2: Instalación del paquete cloud-init =
 
= Paso 2: Instalación del paquete cloud-init =
  
A continuación, tienes que instalar los paquetes que ofrecen la herramienta ''cloud-init'' para configurar la imagen de Ubuntu que has descargado, estos paquetes son:
+
A continuación, tienes que instalar los [[paquetes]] que ofrecen la herramienta ''cloud-init'' para configurar la imagen de Ubuntu que has descargado, estos paquetes son:
  
 
* '''cloud-init''': herramienta para configurar una imagen de Ubuntu cloud.
 
* '''cloud-init''': herramienta para configurar una imagen de Ubuntu cloud.
Línea 57: Línea 57:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
El ejemplo anterior muestra cómo configurar la imagen descargada para que disponga del usuario ''ubuntu'', y en este caso, la contraseña es ''querty123'', y que se pueda acceder a dicho usuario por medio de ''ssh''.
+
El ejemplo anterior muestra cómo configurar la imagen descargada para que disponga del usuario ''ubuntu'', y en este caso, la contraseña es ''querty123'', y que se pueda acceder a dicho usuario por medio de ''[[ssh]]''.
  
 
Podemos configurar la imagen para que apliquen estos cambios con el siguiente comando:
 
Podemos configurar la imagen para que apliquen estos cambios con el siguiente comando:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
cloud-localds bionic-server-cloudimg-amd64.img cloud.cfg
+
cloud-localds media.img cloud.cfg
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
Esta aplicación genera un fichero imagen que será empleado para configurar la imagen de Ubuntu cloud que has descargado.
  
 
Dispones de más información suplementaria sobre como usar [[cloud-init]].
 
Dispones de más información suplementaria sobre como usar [[cloud-init]].
Línea 90: Línea 92:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
La carpeta ''/var/lib/libvirt'' contiene todas las subcarpetas propias del software ''libvirt'', en concreto, ''images'' contiene las imagenes de que va a emplear la máquina virtual de la que vamos a disponer.
+
Con esta orden, estas copiando la imagen de Ubuntu cloud descargada y la imagen generada por cloud-localds a la carpeta de imagenes de libvirt. La carpeta''/var/lib/libvirt'' contiene todas las subcarpetas propias del software ''libvirt'', en concreto, ''images'' contiene las imagenes de que va a emplear la máquina virtual que vamos a importar a continuación.
  
 
Volvemos a la interfaz de virt-managar una vez copiadas las imágenes y vamos a crear una nueva máquina virtual con dichas imágenes:
 
Volvemos a la interfaz de virt-managar una vez copiadas las imágenes y vamos a crear una nueva máquina virtual con dichas imágenes:
Línea 106: Línea 108:
  
 
Ya estamos dentro de nuestra máquina virtual de ubuntu server cloud.
 
Ya estamos dentro de nuestra máquina virtual de ubuntu server cloud.
 +
 +
'''Nota''': El teclado de la imagen de Ubuntu de la máquina virtual está en inglés, puedes cambiarlo con:
 +
 +
<syntaxhighlight lang="bash">
 +
sudo loadkeys es
 +
</syntaxhighlight>
  
 
= Paso 5: Configuración de la red en libvirt =
 
= Paso 5: Configuración de la red en libvirt =
Línea 111: Línea 119:
 
Antes de ver los detalles de red, vamos a hacer una pequeña diferencia entre las dos ventanas que tenemos abiertas, virt-manager principal y virt-manager máquina de ubuntu ejecutándose. En la primera tendremos las configuraciones generales y en la segunda tendremos las configuraciones de una máquina virtual concreta, en nuestro caso, la configuración de la máquina virtual de ubuntu.
 
Antes de ver los detalles de red, vamos a hacer una pequeña diferencia entre las dos ventanas que tenemos abiertas, virt-manager principal y virt-manager máquina de ubuntu ejecutándose. En la primera tendremos las configuraciones generales y en la segunda tendremos las configuraciones de una máquina virtual concreta, en nuestro caso, la configuración de la máquina virtual de ubuntu.
  
En la ventana de nuestra máquina virtual de ubuntu, vamos a cambiar la vista y ver los detalles de nuestra máquina. ''Vista --> Detalles''. Aquí tenemos toda la configuración de nuestra máquina, pero solo vamos a centrarnos en la Interfaz de red virtual, que es donde podremos ver cual es pa IP que tiene asiganada nuestra máquina y cual es la fuente de red que se está utilizando.
+
Con esto, veremos dos formas de saber la IP de nuestra máquina virtual:
[[Archivo:virt-manager-nic.png|thumb|Interfaz de red virtual.]]
+
 
 +
# En la ventana de nuestra máquina virtual de ubuntu, vamos a cambiar la vista y ver los detalles de nuestra máquina. ''Vista --> Detalles''. Aquí tenemos toda la configuración de nuestra máquina, pero solo vamos a centrarnos en la Interfaz de red virtual, que es donde podremos ver cual es pa IP que tiene asiganada nuestra máquina y cual es la fuente de red que se está utilizando. [[Archivo:virt-manager-nic.png|thumb|Interfaz de red virtual.]]
 +
# La otra opción es utilizando comandos, podemos utilizar ''ifconfig'' o ''ip address'' en la consola de nuestra máquina virtual.
 +
 
 +
En ambos casos, vemos que estamos utilizando la IP 192.168.100.168.
 +
 
 +
Vamos a comprobar ahora desde nuestra máquina host podemos ver dicha IP, abrimos una consola en nuestra máquina, y hacemos ping:
 +
 
 +
<syntaxhighlight lang="bash">
 +
ping 192.168.100.168
 +
</syntaxhighlight>
 +
 
 +
Deberíamos de ver una salida similar a la siguiente:
  
En este caso, vemos que estamos utilizando la fuente de red 'default' y que nuestra IP es 192.168.100.168. Sabiendo esto, vamos a la ventana principal del virt-manager, para ver la fuente de red. ''Editar --> Detalles de la conexión'' En la ventana que se nos abre, seleccionamos la segunda pestaña, ''Redes virtuales''. Aquí debería de aparecernos en el listado de la izquierda, la red default que tenemos asignada a nuestra máquina virtual y ver los detalles de esta. [[Archivo:virt-manager-redes-generales.png|thumb|Redes virtuales configuración general.]]
+
<syntaxhighlight lang="bash">
 +
PING 192.168.100.168 (192.168.100.168) 56(84) bytes of data.
 +
64 bytes from 192.168.100.168: icmp_seq=1 ttl=64 time=0.397 ms
 +
64 bytes from 192.168.100.168: icmp_seq=2 ttl=64 time=0.409 ms
 +
64 bytes from 192.168.100.168: icmp_seq=3 ttl=64 time=0.321 ms
 +
</syntaxhighlight>
  
Aquí podremos crear redes virtuales nuevas, editar o eliminar las que existen utilizando los botones en la esquina inferior izquierda. Vamos a crearnos una nueva red para asignarla a nuestra máquina.
+
Si probamos a hacer ping a una IP que no se exista, obtendremos:
  
# ''Pulsar en el botón +'
+
<syntaxhighlight lang="bash">
# Escoger nombre de red, por ejemplo, ''mired'' y pulsar ''Adelante''
+
PING 192.168.100.169 (192.168.100.169) 56(84) bytes of data.
# Escoger espacio de red, por ejemplo 192.168.2.0 y pulsar ''Adelante''
+
From 192.168.100.1 icmp_seq=1 Destination Host Unreachable
# Tenemos la opción de habilitar IPv6, pero no vamos a utilizarlo, pulsamos ''Adelante''
+
From 192.168.100.1 icmp_seq=2 Destination Host Unreachable
# Aquí debemos seleccionar como queremos conectarnos a la red, nosotros elegiremos la opción de reenvío a la red física, y utilizaremos el Modo NAT. Pulsamos ''Finalizar''
+
From 192.168.100.1 icmp_seq=3 Destination Host Unreachable
 +
</syntaxhighlight>
  
Nos movemos a la ventana de virt-manager donde está nuestra máquina virtual, vamos a seleccionar la fuente de red creada y aplicar los cambios. Hay que tener en cuenta que para que los cambios surtan efecto, necesitamos reiniciar nuestra máquina, así que pulsamos en ''Máquina Virtual --> Apagar --> Reiniciar''. Una vez reiniciada la máquina, si pulsamos en el botón de refrescar que aparece al lado de la IP, veremos que nuestra IP habrá cambiado. [[Archivo:virt-manager-nic-changed.png|thumb|Interfaz de red virtual cambiada.]]
+
Dispones de más información suplementaria sobre la [[configuración de red en libvirt]].
  
 
= Paso 6: Clonado de máquinas virtuales =
 
= Paso 6: Clonado de máquinas virtuales =

Revisión del 19:11 20 ago 2019

Para la realización de esta práctica necesitará de una imagen de Ubuntu Cloud que descargaremos de https://cloud-images.ubuntu.com/ y necesitaremos un sistema anfitrión con Ubuntu 18.04.

En esta práctica se empleará la imagen descargada de la web Ubuntu Cloud y se hará uso de la herramienta cloud-init para configurarla.

A continuación, utilizaremos la imagen de Ubuntu ya configurada para ser importada al software de virtualización libvirt.

Paso 1: Descarga de la imagen Ubuntu Cloud

Entramos en https://cloud-images.ubuntu.com/ y descargamos la imagen de Ubuntu 18.04 LTS (Long Time Support).

Puedes descargarla directamente con la orden wget:

wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img

si comenzó a descargar verás una salida similar a esta:

-2019-08-06 12:26:26--  https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
Resolviendo cloud-images.ubuntu.com (cloud-images.ubuntu.com)... 91.189.88.89, 2001:67c:1560:8001::8001
Conectando con cloud-images.ubuntu.com (cloud-images.ubuntu.com)[91.189.88.89]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 343474176 (328M) [application/octet-stream]
Grabando a: “bionic-server-cloudimg-amd64.img”

bionic-server-cloudimg-amd64.img.   0%[                                                              ]   2,21M   472KB/s    eta 14m 6s

Espera hasta que la imagen esté descargada al 100%.

Paso 2: Instalación del paquete cloud-init

A continuación, tienes que instalar los paquetes que ofrecen la herramienta cloud-init para configurar la imagen de Ubuntu que has descargado, estos paquetes son:

  • cloud-init: herramienta para configurar una imagen de Ubuntu cloud.
  • cloud-image-utils: esta herramienta es complementaria a cloud-init y sirve para modificar imágenes de Ubuntu cloud.

Podemos instalar estos paquetes con la herramienta apt desde el intérprete de órdenes:

sudo apt install cloud-init cloud-image-utils

En los ordenadores del aula de prácticas estos paquetes ya estarán preinstalados, con lo que puedes saltarte este paso.

Paso 3: Configuración de la imagen de Ubuntu con cloud-init

Para configurar la imagen de Ubuntu cloud, hay que crear un fichero de configuración para la herramienta cloud-init. Este fichero empieza siempre por la línea #cloud-config y se estructura en formato yaml, el contenido del fichero cloud.cfg sería el siguiente:

#cloud-config
password: qwerty123
chpasswd: { expire: False }
ssh_pwauth: True

El ejemplo anterior muestra cómo configurar la imagen descargada para que disponga del usuario ubuntu, y en este caso, la contraseña es querty123, y que se pueda acceder a dicho usuario por medio de ssh.

Podemos configurar la imagen para que apliquen estos cambios con el siguiente comando:

cloud-localds media.img cloud.cfg

Esta aplicación genera un fichero imagen que será empleado para configurar la imagen de Ubuntu cloud que has descargado.

Dispones de más información suplementaria sobre como usar cloud-init.

Paso 4: Instalación de libvirt e importación de imagenes

Para instalar libvirt lo hacemos con la herramienta apt desde el intérprete de órdenes:

sudo apt install virt-manager

Una vez instalada, podemos abrir el virt-manager, desde el intérprete de órdenes:

virt-manager
Interfaz de virt-manager.

Desde un nuevo intérprete de órdenes (¡y sin cerrar la 'virt-manager!), vamos a copiar la imagen descargada en el paso 1 y la imagen generada en el paso 3 al directorio de virt-manager /var/lib/libvirt/images, para que hacer la importación. Para ello, desde el intérprete de órdenes que hemos abierto y desde el directorio donde tengamos las imágenes anteriormente generadas, hacemos lo siguiente:

sudo cp bionic-server-cloudimg-amd64.img /var/lib/libvirt/images
sudo cp media.img /var/lib/libvirt/images

Con esta orden, estas copiando la imagen de Ubuntu cloud descargada y la imagen generada por cloud-localds a la carpeta de imagenes de libvirt. La carpeta/var/lib/libvirt contiene todas las subcarpetas propias del software libvirt, en concreto, images contiene las imagenes de que va a emplear la máquina virtual que vamos a importar a continuación.

Volvemos a la interfaz de virt-managar una vez copiadas las imágenes y vamos a crear una nueva máquina virtual con dichas imágenes:

  1. Desde la interfaz de virt-manager creamos una nueva Máquina Virtual (Archivo --> Nueva máquina virtual)
  2. En la nueva ventana que se abre, seleccionamos Medio de instalación local y pulsamos Adelante
  3. En Choose ISO or CDROM install media seleccionamos la imagen de media.img' creada en el paso 3; y desmarcamos la casilla de Detección automática para seleccionar nuestro Sistema Operativo, en este caso, Ubuntu 18.04 LTS. Vemos que todo queda como en la imagen y pulsamos Adelante
    Elegir imagen de configuración y SO.
  4. Seleccionamos la cantidad de memoria y de CPU que queremos, por defecto 2048 de Memoria y 1 CPU está bien.
  5. En el almacenamiento, vamos a seleccionar un almacenaje personalizado, y aquí sera donde seleccionemos la imagen de ubuntu descargada, en nuestro caso bionic-server-cloudimg-amd64.img y pulsamos Adelante
    Seleccionar imagen de Ubuntu descargada.
  6. En el último paso, podremos selecionar la red, por ahora dejaremos NAT por defecto y pulsamos Finalizar (Si nos pregunta si queremos crear una red NAT porque no está creada, le decimos que sí).
Ya tenemos nuestra máquina virtual creada con nuestra configuración, vamos a probar que todo funciona correctamente. La máquina debería de estar arrancando y debería de aparernos el login, como vemos en la image.
Login de ubuntu.
Utilizamos como usuario ubuntu, que es el usuario por defecto y como contraseña la que hayamos elegido en el paso 3, deberíamos de conseguir logearnos con éxito, como vemos en la imagen.
Usuario logueado.

Ya estamos dentro de nuestra máquina virtual de ubuntu server cloud.

Nota: El teclado de la imagen de Ubuntu de la máquina virtual está en inglés, puedes cambiarlo con:

sudo loadkeys es

Paso 5: Configuración de la red en libvirt

Antes de ver los detalles de red, vamos a hacer una pequeña diferencia entre las dos ventanas que tenemos abiertas, virt-manager principal y virt-manager máquina de ubuntu ejecutándose. En la primera tendremos las configuraciones generales y en la segunda tendremos las configuraciones de una máquina virtual concreta, en nuestro caso, la configuración de la máquina virtual de ubuntu.

Con esto, veremos dos formas de saber la IP de nuestra máquina virtual:

  1. En la ventana de nuestra máquina virtual de ubuntu, vamos a cambiar la vista y ver los detalles de nuestra máquina. Vista --> Detalles. Aquí tenemos toda la configuración de nuestra máquina, pero solo vamos a centrarnos en la Interfaz de red virtual, que es donde podremos ver cual es pa IP que tiene asiganada nuestra máquina y cual es la fuente de red que se está utilizando.
    Interfaz de red virtual.
  2. La otra opción es utilizando comandos, podemos utilizar ifconfig o ip address en la consola de nuestra máquina virtual.

En ambos casos, vemos que estamos utilizando la IP 192.168.100.168.

Vamos a comprobar ahora desde nuestra máquina host podemos ver dicha IP, abrimos una consola en nuestra máquina, y hacemos ping:

ping 192.168.100.168

Deberíamos de ver una salida similar a la siguiente:

PING 192.168.100.168 (192.168.100.168) 56(84) bytes of data.
64 bytes from 192.168.100.168: icmp_seq=1 ttl=64 time=0.397 ms
64 bytes from 192.168.100.168: icmp_seq=2 ttl=64 time=0.409 ms
64 bytes from 192.168.100.168: icmp_seq=3 ttl=64 time=0.321 ms

Si probamos a hacer ping a una IP que no se exista, obtendremos:

PING 192.168.100.169 (192.168.100.169) 56(84) bytes of data.
From 192.168.100.1 icmp_seq=1 Destination Host Unreachable
From 192.168.100.1 icmp_seq=2 Destination Host Unreachable
From 192.168.100.1 icmp_seq=3 Destination Host Unreachable

Dispones de más información suplementaria sobre la configuración de red en libvirt.

Paso 6: Clonado de máquinas virtuales

CLONAR LA MAQUINA VIRTUAL ACTUAL, USARLA COMO PLANTILLA, CONFIGURAR UNA RED SENCILLA DE MAQUINAS VIRTUALES, PROBAR QUE FUNCIONAN CORRECTAMENTE. ASÍ COMO OTRO CONTENIDO INCLUIDO EN EL ENUNCIADO 1. VIRTUALIZACION

Paso 7: Instantáneas de máquinas virtuales

CREAR INSTANTANEA BORRAR O CREAR UN FICHERO DEL SISTEMA RECUPERAR ESTADO DE LA MÁQUINA USANDO LA INSTANTÁNEA COMPROBAR QUE HEMOS VUELTO AL ESTADO ANTERIOR