Diferencia entre revisiones de «Virtualización con libvirt»
(→Paso 7: Instantáneas de máquinas virtuales) |
(→Paso 5: Configuración de la red en libvirt) |
||
Línea 136: | Línea 136: | ||
inet6 ::1/128 scope host | inet6 ::1/128 scope host | ||
valid_lft forever preferred_lft forever | valid_lft forever preferred_lft forever | ||
− | 2: | + | 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 |
link/ether 3d:f0:ee:49:aa:22 brd ff:ff:ff:ff:ff:ff | link/ether 3d:f0:ee:49:aa:22 brd ff:ff:ff:ff:ff:ff | ||
inet 192.168.100.168/24 brd 192.168.2.255 scope global eth0 | inet 192.168.100.168/24 brd 192.168.2.255 scope global eth0 | ||
Línea 145: | Línea 145: | ||
Que nos permite comprobar que estamos utilizando la dirección IP 192.168.100.168. | Que nos permite comprobar que estamos utilizando la dirección IP 192.168.100.168. | ||
+ | |||
+ | Si la interfaz no muestra una dirección IP, puedes forzar la obtención de una dirección IP desde la máquina virtual para la interfaz ''ens3'' con la orden: | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo dhclient ens3 | ||
+ | </syntaxhighlight> | ||
Vamos a comprobar ahora desde un terminal en el anfitrión que alcanzamos a nuestra máquina virtual. | Vamos a comprobar ahora desde un terminal en el anfitrión que alcanzamos a nuestra máquina virtual. | ||
Línea 168: | Línea 174: | ||
From 192.168.100.1 icmp_seq=2 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 | From 192.168.100.1 icmp_seq=3 Destination Host Unreachable | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | En dicho caso, puedes forzar la obtención de una dirección IP con la orden: | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo dhclient ens3 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 17:17 30 oct 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.
Contenido
- 1 Paso 1: Descarga de la imagen Ubuntu Cloud
- 2 Paso 2: Instalación del paquete cloud-init
- 3 Paso 3: Configuración de la imagen de Ubuntu con cloud-init
- 4 Paso 4: Instalación de libvirt e importación de imagenes
- 5 Paso 5: Configuración de la red en libvirt
- 6 Paso 6: Clonado de máquinas virtuales
- 7 Paso 7: Instantáneas de máquinas virtuales
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
En los ordenadores del aula de prácticas este paquete ya estará preinstalado, con lo que puedes saltarte la orden anterior.
Una vez instalada podemos lanzar virt-manager desde el intérprete de órdenes:
virt-manager
Para importar la imagen de Ubuntu cloud que hemos descargado a la máquina virtual, desde un intérprete de órdenes en el anfitrión (¡sin cerrar la ventana de virt-manager de la que ya disponemos!), vamos a copiar la imagen descargada en el paso 1 y la imagen generada en el paso 3 en el directorio de trabajo de virt-manager que se encuentra en /var/lib/libvirt/images. Para ello, desde el intérprete de órdenes que hemos lanzado y desde el directorio donde tengamos las imágenes anteriormente generadas, invocamos las siguientes ordenes:
sudo cp bionic-server-cloudimg-amd64.img /var/lib/libvirt/images
sudo cp media.img /var/lib/libvirt/images
Con estas ordenes, estas copiando la imagen de Ubuntu cloud descargada y la imagen generada por cloud-localds en la carpeta/var/lib/libvirt/images que contiene las imagenes de las que dispone la virt-manager.
Volvemos a la interfaz gráfica de virt-manager una vez copiadas las imágenes y creamos una nueva máquina virtual empleando dichas imágenes:
- Desde la interfaz de virt-manager creamos una nueva Máquina Virtual (Archivo --> Nueva máquina virtual)
- En la nueva ventana que se abre, seleccionamos Medio de instalación local y pulsamos Adelante
- 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
- Seleccionamos la cantidad de memoria y de CPU que queremos, por defecto 2048 de Memoria y 1 CPU está bien.
- 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
- 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 disponemos de un intérprete de ordenes en nuestro sistema operativo Ubuntu cloud que corre sobre nuestra máquina virtual.
Nota: El teclado de la imagen de Ubuntu cloud que corre en la máquina virtual está en inglés, puedes cambiarlo con la siguiente orden:
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:
- 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.
- La otra opción es utilizando comandos, podemos utilizar ip address en la consola de nuestra máquina virtual.
$ sudo ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 3d:f0:ee:49:aa:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.168/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::3e97:eff:fe39:dd20/64 scope link
valid_lft forever preferred_lft forever
Que nos permite comprobar que estamos utilizando la dirección IP 192.168.100.168.
Si la interfaz no muestra una dirección IP, puedes forzar la obtención de una dirección IP desde la máquina virtual para la interfaz ens3 con la orden:
sudo dhclient ens3
Vamos a comprobar ahora desde un terminal en el anfitrión que alcanzamos a nuestra máquina virtual.
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 hubiere algún problema de conectividad la salida sería de este tipo:
PING 192.168.100.168 (192.168.100.168) 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
En dicho caso, puedes forzar la obtención de una dirección IP con la orden:
sudo dhclient ens3
Esto quiere decir que la configuración de red es incorrecta, o quizás que la dirección IP de tu máquina virtual no es 192.168.100.168 :-).
Dispones de más información suplementaria sobre la configuración de red en libvirt.
Paso 6: Clonado de máquinas virtuales
Vamos a reutilizar la configuración y la máquina virtual creada, para crear varias iguales. Empecemos:
- Apagamos la máquina virtual si la tenemos encendida, para que nos permita hacer un clonado. Máquina virtual --> Apagar --> Apagar
- En la ventana principal, pulsar botón derecho encima de la máquina virtual que queramos clonar, y pulsar Clonar ...
- En la ventana que nos aparece, por defecto seleccionará la misma red y creará una MAC diferente para la nueva máquina y clonará la imagen de ubuntu que usamos de almacenamiento. Le damos un nuevo nombre a nuestra máquina, y pulsamos en Clonar.
- Repetimos este paso hasta que tengamos toda las máquinas virtuales deseadas, en nuestro caso, solo crearemos una para probar los detalles de red.
Ahora arrancaremos la máquina original y la clonada, y vamos a comprobar que ambas están en la misma red y que pueden verse entre ellas. Como comentamos en el paso anterior, comprobaremos la IP de la máquina virtual original y de la clonada, y haremos ping desde dentro de las máquinas para comprobar que se ven.
Ejemplo:
- Máquina original tiene IP 192.168.100.168
- Máquina clonada tiene IP 192.168.100.169
- Desde la máquina original haremos un ping 192.168.100.169
- Desde la máquina clonada haremos un ping 192.168.100.168
- Desde ambas máquinas, comprobaremos que la puerta de enlace es la misma, haciendo un ip route.
- Desde la máquina host, deberíamos de obtener ping hacía las dos máquinas
Paso 7: Instantáneas de máquinas virtuales
Las instantáneas nos permiten almacenar una captura del estado de la ejecución de una máquina virtual en un cierto instante tiempo que podremos restaurar cuando sea necesario. Las instantáneas te serán útiles si tienes trabajo a medio hacer en la máquina virtual, de manera que quieras guardar lo que has hecho para restaurarlo posteriormente.
Podemos realizar un pequeño ejemplo práctico para ver cómo funciona:
1. Desde la máquina virtual, abrimos un intérprete de ordenes para crear un fichero.
$ touch fichero.txt
2. Comprobamos con la orden ls que el fichero existe.
$ ls
fichero.txt
3. Ahora vamos a crear una instantánea. Desde Vista -> Instantáneas, creamos una instantánea pulsando en el botón + que aparece abajo a la izquierda y le damos a Finalizar'. 4. Volvemos a la vista de consola (Vista --> Consola), creamos un nuevo fichero y borramos el creado previamente.
$ rm fichero.txt
Tras borrar el fichero, podemos comprobar que ya no aparece.
$ ls
5. Para recuperar el fichero borrado fichero.txt, vamos a restaurar la instantánea de la máquina virtual que hemos creado previamente. Desde Vista -> instantánea, seleccionamos la instantánea que hemos creado anteriormente y la restauramos. 6. Si invocamos ahora a la orden ls, veremos que el fichero fichero.txt está ahí de nuevo.
$ ls
fichero.txt