Guía de tecnologías

D. Virtualización

5 min read Virtualización Actualizado 18 Oct 2025
Virtualización con virt-manager y virt-install
Virtualización con virt-manager y virt-install

Resumen rápido

  • Objetivo: configurar redes virtuales aisladas y automatizar la instalación de dos invitados (node01/node02) usando kickstart y virt-install.
  • Resultado esperado: interfaces vnet0/vnet1 en el host, archivos kickstart listos y guests instalados con direcciones IP públicas/privadas según la configuración.

1. Redes virtuales

Ejecute como root:

virt-manager

Se abrirá la ventana de Virtual Machine Manager. Verá Domain-0 y los recursos que utiliza.

Importante: cerrar virt-manager cuando no lo use — consume mucha memoria.

1.a Crear la red virtual

  • En el menú, haga clic en Editar y luego en “Detalles del host”.
  • En la ventana Detalles del host verá sólo “default” en el marco izquierdo. Abajo, haga clic en “Agregar”.
  • Aparecerá la ventana “Crear una nueva red virtual”, haga clic en “Siguiente”.
  • Use el nombre public1 y pulse “Siguiente”.
  • Red: 192.168.222.0/24, pulse “Siguiente”.
  • Rango DHCP: Inicio: 192.168.222.128 Fin: 192.168.222.254, pulse “Siguiente”.
  • Tipo de conectividad: “Red virtual aislada”. Pulse “Siguiente”.
  • Resumen:
    • Nombre de la red: public1
    • Red IPv4: 192.168.222.0/24
    • Gateway: 192.168.222.1
    • Máscara: 255.255.255.0
    • DHCP: 192.168.222.128–192.168.222.254
    • Conectividad: Red virtual aislada
  • Pulse “Finalizar”.

Repita los mismos pasos para crear la red private1 con estos parámetros:

  • Nombre de la red: private1
  • Red IPv4: 192.168.100.0/24
  • Gateway: 192.168.100.1
  • Máscara: 255.255.255.0
  • DHCP: 192.168.100.128–192.168.100.254
  • Conectividad: Red virtual aislada

Cuando termine, en la ventana Detalles del host haga “Archivo > Cerrar” para volver a Virtual Machine Manager y luego “Archivo > Salir”.

Nota importante: no deje virt-manager abierto si no lo usa; puede consumir mucha memoria y en algunos entornos requerir reiniciar Xen.

Una vez creadas las redes, verifique en el host con:

ifconfig

Debería ver interfaces similares a vnet0 y vnet1, por ejemplo:

   vnet0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.222.1  Bcast:192.168.222.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:0 errors:0 dropped:0 overruns:0 frame:0

              TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7782 (7.5 KiB)
    
    vnet1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7712 (7.5 KiB)

2. Archivos kickstart

Los archivos kickstart automatizan la instalación. A continuación se proporciona el kickstart para node01; puede copiarlo y adaptarlo para node02 cambiando IPs y hostname.

2.a node01 (kickstart)

El contenido del archivo kickstart debe usarse tal cual (se muestra a continuación). Mantenga el archivo en un servidor accesible por HTTP o NFS para que virt-install lo lea.

#START of node01_ks.cfg
install
text
reboot
#uncomment the line you want to use
# for nfs
nfs --server=192.168.222.1 --dir=/var/ftp/pub/centos5u1
##url --url ftp://:@/
# this will be an anonymous ftp access
#url --url ftp://192.168.222.1/pub/centos5u1/i386
#key --skip
lang en_US.UTF-8
keyboard us
skipx
# private
network --device eth1 --bootproto static --ip 192.168.100.10 --netmask 255.255.255.0 
# public - disabled on initial install
network --device eth0 --bootproto static --ip 192.168.222.10 --netmask 255.255.255.0 --gateway 192.168.222.1 --nameserver 192.168.222.1 --hostname node01.example.com
## password is n0de01pass
rootpw --iscrypted $1$Lqk1Y$Y8TIWCMLiiPjVt1GjRS0F1
## password is n0de02pass
#rootpw --iscrypted $1$Rn47b$DDwgrOv3IFGf3HVhsxv9X0
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Singapore
services --disabled ipsec,iptables,bluetooth,hplip,firstboot,cups,sendmail,xfs
bootloader --location=mbr --driveorder=xvda,xvdb --append="rhgb quiet"
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@development-libs
@system-tools
@gnome-software-development
@text-internet
@x-software-development
@dns-server
@core
@authoring-and-publishing
@base
@ftp-server
@network-server
@legacy-software-development
@java
@legacy-software-support
@smb-server
@base-x
@web-server
@printing
@server-cfg
@sql-server
@admin-tools
@development-tools
emacs
lsscsi
gnutls-utils
hwbrowser
audit
iptraf
mesa-libGLU-devel
kexec-tools
device-mapper-multipath
vnc-server
xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
imake
iscsi-initiator-utils
ypserv
-sysreport

%post
cat <> /etc/hosts
# private  or replace with nodeXY-
192.168.100.10  node01-priv
192.168.100.20  node02-priv
192.168.100.1   node00-priv

#public or replace with nodeXY
192.168.222.10 node01
192.168.222.20 node02
192.168.222.1  node00
EOT

# yum local repo
mv /etc/yum.repos.d/*.repo /tmp
cat > /etc/yum.repos.d/centos5.repo << EOF
[centos5-Server]
name=CEntos5 Server
baseurl=http://node00/centos5u1/i386
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
EOF

#change default runlevel
ed /etc/inittab << EOF

,s/id:5:initdefault:/id:3:initdefault:/g
.
w
EOF

# vncserver stuff
cat << EOT > /opt/vnc_xstartup
#!/bin/sh

# run vncserver and copy to your $HOME/.vnc/xstartup file
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 130x30+12+12 -ls -bg black -fg green -title "$VNCDESKTOP Desktop" &
mwm &
EOT
# END of nod01_ks.cfg

2.b node02

Copie node01_ks.cfg a node02_ks.cfg y modifique los campos de hostname e IP para node02.

3. Instalación de los invitados (node01 y node02)

Usaremos virt-install desde CLI.

3.a Generación de direcciones MAC

Use el script macgen.py (proporcionado por la guía de Red Hat) para generar MACs:

#!/usr/bin/python
# macgen.py script to generate a MAC address for Red Hat Virtualization guests
import random
#
def randomMAC():
   mac = [ 0x00, 0x16, 0x3e,
     random.randint(0x00, 0x7f),

     random.randint(0x00, 0xff),
     random.randint(0x00, 0xff) ]
   return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
# careful with the indention
# this is from the Virtualization guide from redhat.com
# http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Virtualization/index.html

Ejemplo de salida para node01:

node01 NICs  
# for eth0 . public1  
[root@node00 ~]# ./macgen.py  
00:16:3e:33:32:07  
# for eth1 . private1  
[root@ node00 ~]# ./macgen.py  
00:16:3e:55:6b:83

Genere también MACs para node02.

3.b virt-install para node01

Ejemplo de comando:

virt-install -p -n node01 -r 768 -f /dev/Virtual00VG/lvNODE01 -m 00:16:3e:33:32:07 \  
-w network:public1 -m 00:16:3e:55:6b:83 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node01_ks.cfg" --vnc

Parámetros clave:

  • -n node01: nombre del invitado
  • -r 768: memoria RAM en MiB
  • -f /dev/Virtual00VG/lvNODE01: disco (LV o partición)
  • -m : dirección MAC por interfaz
  • -w network:public1|private1: asigna la interfaz a la red virtual
  • -l nfs:…: origen de instalación (NFS)
  • -x “ksdevice=eth0 ks=…”: url del kickstart
  • –vnc: abrirá la instalación en una sesión VNC (útil si lanzó virt-install desde VNC)

3.c virt-install para node02

Comando ejemplo (ajuste MACs, LV y kickstart):

virt-install -p -n node02 -r 768 -f /dev/Virtual00VG/lvNODE02 -m 00:16:3e:1e:05:b6 \  
-w network:public1 -m 00:16:3e:40:3d:b0 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node02_ks.cfg" --vnc

Si ejecuta virt-install desde la consola física, las instalaciones se ejecutarán en background y podrá monitorizarlas con virt-manager abriendo cada invitado.

Caja de datos: parámetros clave

  • Redes: public1 (192.168.222.0/24), private1 (192.168.100.0/24)
  • Gateways: 192.168.222.1 (public1), 192.168.100.1 (private1)
  • Rangos DHCP: .128–.254 en ambas redes
  • Memoria por guest en el ejemplo: 768 MiB

Lista de verificación por rol

  • Administrador de virtualización
    • Crear redes public1 y private1 en virt-manager
    • Generar MACs para cada NIC
    • Proveer LVs o discos para invitados
  • Administrador de red
    • Reservar rangos DHCP y evitar solapamientos
    • Confirmar rutas/gateways para cada subred
  • Administrador de sistema (instalación)
    • Publicar kickstart en HTTP/NFS accesible
    • Ejecutar virt-install con parámetros correctos
    • Verificar /etc/hosts y resolución interna

Comprobaciones y criterios de aceptación

  • El host muestra vnet0 y vnet1 con las IPs .1 correspondientes.
  • Los invitados obtienen/usan las IPs configuradas en el kickstart.
  • Se puede acceder por SSH a node01/node02 desde la red privada o pública según corresponda.
  • Las interfaces dentro del guest corresponden a las MACs generadas.

Solución de problemas comunes

  • virt-manager consume mucha RAM: cierre la aplicación y, si es necesario, reinicie Xen o el host.
  • Kickstart no alcanzable: verifique la URL (http/NFS) desde el host y que los permisos/firewall permitan acceso.
  • Conflicto DHCP: asegúrese de que no existan otros servidores DHCP en las mismas subredes.

Pequeño método (pasos mínimos para desplegar un guest rápidamente)

  1. Crear redes en virt-manager (public1/private1).
  2. Generar MACs con macgen.py.
  3. Subir kickstart al servidor HTTP/NFS.
  4. Ejecutar virt-install con -x ks=… y revisar la instalación por VNC o virt-manager.

Glosario (una línea)

  • virt-manager: interfaz gráfica para gestionar hipervisores y VMs.
  • virt-install: herramienta CLI para crear e instalar máquinas virtuales.
  • kickstart: archivo que automatiza la instalación de sistemas Red Hat/CentOS.
  • MAC: dirección física única para una interfaz de red.

Resumen final

Siga la secuencia: crear redes → preparar kickstart → generar MACs → ejecutar virt-install. Verifique vnet0/vnet1 en el host y compruebe que los invitados reciban las IPs configuradas. Use la checklist y las comprobaciones de aceptación para validar el despliegue.

Notas: adapte los nombres, IPs y LVs a su entorno y no deje virt-manager abierto innecesariamente.

Autor
Edición

Materiales similares

Arreglar teclado Mac que no responde
MacBook

Arreglar teclado Mac que no responde

Cómo conseguir más me gusta en Instagram Reels
Redes sociales

Cómo conseguir más me gusta en Instagram Reels

Instalar Valheim Plus: guía rápida
Juegos

Instalar Valheim Plus: guía rápida

Instalar MediaWiki con Nginx en CentOS 7
Guías Linux

Instalar MediaWiki con Nginx en CentOS 7

Desactivar caché de carpetas compartidas en Outlook
Outlook

Desactivar caché de carpetas compartidas en Outlook

Arreglar adjuntos que no se abren en Outlook
Soporte

Arreglar adjuntos que no se abren en Outlook