HOMELAB
Preparación de directorios:
En la unidad C: (SSD - 300 GB), la estructura de carpetas será la siguiente:
C:\VMware_Homelab\
├ ESX01\
├ ESX02\
Aquí se guardarán la configuración de las MVs y disco principal del sistema.
En la unidad E: (HDD - 1.3 TB), la estructura será:
E:\VMware_Homelab\
├ Datastores\
│ ├ ESX01_Data.vmdk
│ └ ESX02_Data.vmdk
├ vCenter\
│ └── vCenter_Server.vmdk
├ MVs\
Aquí se guardarán los discos virtuales un poco más pesados.
Creación de ESX01 y ESX02
1. Abrimos VMware Workstation Pro 17 y creamos nueva MV
customizada.
Seleccionamos compatibilidad Workstation 17.x
Marcamos la opción de instalar el S.O después
Seleccionamos la versión del ESXi que vamos a instalar.
Renombramos la MV y ubicamos en nuestro directorio.
Le aplicamos la siguiente configuración de CPU para que tenga 2
vCPU
Le asignamos 6GB de memoria RAM.
En cuanto a la red, no nos deja elegir directamente nuestra red
privada creada anteriormente (VMnet2) por lo que elegiremos
cualquier opción y después modificaremos.
Usamos el controlador SCSI recomendado y Tipo de disco virtual -
SCSI
Creamos un nuevo disco virtual, será el Disco 1 dedicado a la
instalación del S.O. Para ello lo recomendado son 32 GB que será
guardados en el SSD. Marcamos la opción de “Store virtual disk as a
single file” para que nos cree únicamente un fichero vmdk. Le
ponemos de nombre “ESX01_Disk1.vmdk”
Por último, finalizamos la creación de la MV pese a que aún debemos
modificarla más.
Editamos la configuración de la máquina y seleccionamos nuestro
adaptador de red mencionado anteriormente.
Añadimos un nuevo disco virtual de tamaño de 100 GB ubicándolo en
nuestro HDD, con las mismas especificaciones que el anterior. Este
disco tendrá la función de ser un Datastore para nuestro ESXi.
Montamos la ISO con el VMware ESXi 8.x y procederemos con su
instalación.
2. Encendemos la MV y asignamos la siguiente configuración.
IP fija: [Link]
Gateway: [Link]
DNS: [Link]
Realmente los campos Gateway y DNS, no tienen relevancia en lo que
llevamos de Homelab puesto que las MVs no tendrán salida a inet.
Son meramente relleno para evitar que ESXi se queje o marque como
incompleto. Si a posteriori se planea hacer un laboratorio completo
con nombres internos, lo mejor sería montar un servidor DNS local en
una MV y usar su IP como DNS.
Instalamos en el disco de 32 GB que habíamos dedicado para ello.
Introducimos una contraseña para el usuario root.
Una vez instalado el S.O, apretamos F2 para abrir la configuración e
introducimos los datos anteriores en el apartado Configure
Management Network -> IPv4 Configuration.
Ya tenemos lista la primera máquina lista -> ESX01
3. Repetimos el proceso para el ESX02.
IP fija: [Link]
Gateway: [Link]
Con esto ya tendríamos nuestros 2 ESXi listos, con IPs fija y
Hostnames
Interfaces ESXi
1. Ya tenemos ambos host ESXi preparados. Podemos acceder a su
interfaz web a través de la dirección IP de cada uno de ellos en
nuestro navegador favorito.
2. Lo primero que vamos a hacer es activar una licencia para que no nos
caduque el progreso de los ESXi en 60 días. Para ello, vamos a la
pestaña Administrar -> Licencias. Asignamos una licencia sacada de
inet: “MM292-66K0M-481P8-0J9HH-992L0”
3. Continuaremos creando nuestros Datastores locales en los ESXi. En el
menú, vamos a la pestaña Almacenamiento -> Almacén de datos ->
Nuevo almacén de datos
Creamos nuevo almacén de datos de VMFS. Le nombramos y
seleccionamos el disco. Serán Datastore_ESX01 y Datastore_ESX02
Seleccionamos todo el disco y VMFS 6.
Repetiremos con el ESX02
Montar un Datastore Compartido (NFS)
1. El objetivo de montar un Datastore compartido es para poder: Mover
MVs entre ESXi, Crear un clúster en vCenter más adelante y Simular
almacenamiento de red tipo NAS.
Para ello, vamos a usar una MV con Linux ligera y montar nuestro
propio NFS Server.
2. Creamos la MV con nombre NFS-SERVER. El S.O lo instalaremos
después por lo que marcamos la siguiente opción
Seleccionamos el sistema operativo que vamos a usar, en este caso
sera un Ubuntu 24.04.2 LTS
Ubicamos la MV en el directorio que hemos creado en el HDD
Especificamos el numero de vCPUs
Le asignaremos 2 GB de RAM
Como se hizo anteriormente, seleccionamos cualquier adaptador de
red puesto que después tendremos que editarlo y seleccionar nuestra
red privada.
Seleccionamos la opción recomendada del Controlador SCSI
Seleccionamos un disco único virtual de 60 GB
Ya finalizada las especificaciones la MV, editamos nuevamente e
insertamos la ISO de Ubuntu y seleccionamos nuestra red virtual
privada.
3. Encendemos la máquina para proceder con la instalación del SO
Seleccionamos la opcion base Ubuntu Server
Asignamos la siguiente configuración de la interfaz de red.
Subred [Link]/24
IP Fija: [Link]
Omitimos el paso del proxy y el mirror lo dejamos como está
Para la configuración del disco, dejamos la opción de usar el disco
entero y sus opciones por defecto
Continuamos con la configuración de usuario. Pondré de nombre de
usuario “nfsadmin”
Marcamos la opción de instalar OpenSSH Server, lo que nos permitirá
conectarnos desde el PC usando PuTTY por ejemplo
Una vez completada la instalación del sistema, solicitará un reinicio.
Desactivamos la ISO de la máquina antes de encenderla
Tras el reinicio, ya nos podremos logear con nuestro usuario y
contraseña configurado
4. Vamos a proceder con la instalación del NFS Server. Ya con el terminal
arrancado vamos a actualizar el sistema operativo primero por si
hubiese quedado alguna actualización pendiente.
Para ello, debemos tener en cuenta que solo tenemos un unico
adaptador de red configurado con nuestra red privada por lo que no
tenemos salida a inet. Vamos a cambiar temporalmente la tarjeta de
red a Bridged o NAT
Una vez encendamos la máquina, observamos con el comando “ip a”,
que seguimos con la misma IP por lo que debemos tocar el archivo de
configuración de red
Cambiaremos de esto que tenemos:
A esto para que de manera temporal nos de otra IP por DHCP
Para que aplique el cambio, ejecutamos “sudo netplan apply” y
comprobamos
Ahora sí, ejecutamos los comandos para actualizar el sistema
operativo por si hubiese quedado algo durante la instalación.
Comando: “sudo apt update && sudo apt upgrade -y”
Una vez finalizado, vamos a instalar NFS Server con el siguiente
comando: “sudo apt install nfs-kernel-server -y”
Ya instalados, no nos hará falta mas salida a inet por lo que vamos a
volver a cambiar el archivo de configuración de red a como estaba.
Tras ello, vamos a crear una carpeta de compartición como por
ejemplo nfs_datastore y le damos permisos completos para que ESXi
no tenga problemas al conectarse:
¿Por qué se usa nobody:nogroup? Se usa para cuando no quiero que
ningún usuario especifico tenga permisos de dueño sobre los archivos
del servidor.
Ahora vamos a editar el archivo de exportación añadiendo esta linea
al final. Para abrir el archivo: “sudo nano /etc/exports”
“/mnt/nfs_datastore
[Link]/24(rw,sync,no_subtree_check,no_root_squash)”
Explicación:
rw: Lectura y escritura.
sync: Sincroniza escrituras para mayor seguridad.
no_subtree_check: Mejora compatibilidad.
no_root_squash: Permite que ESXi actúe como "root" en el NFS.
Esto permite que cualquier máquina de tu red [Link] monte
ese recurso.
Reiniciamos el servicio NFS para cargar los cambios:
Permitimos el tráfico NFS en el Firewall: “sudo ufw allow from
[Link]/24 to any port nfs”
Ya estaría finalizado la instalación del servidor NFS. Podriamos crear
más carpetas para usarlas para más cosas como por ejemplo: Un
datastore para ISOs, otro datastore para backups de MVs, otro para
logs, etc.
De momento lo dejaremos para más adelante.
Ahora vamos a añadir el NFS Datastore desde la interfaz ESXi.
Accedemos al primer host y creamos un nuevo almacén de datos.
Esta vez seleccionaremos la opción Montar almacén de datos de NFS
Nombramos e indicamos la IP de nuestro servidor NFS y la ruta del
recurso compartido
Si todo estuviese bien, deberia conectarse. A mi me devolvió un error
que acabé solucionando teniendo esto en cuenta.
Para empezar, mi MV NFS-SERVER tenia puesto de adaptador de red
NAT en vez de nuestra red privada VMnet02 por lo que no se iban a
ver jamas.
Una vez cambiada, probé a realizar pruebas de conexión entre las
máquinas. Para ello, habilité el SSH de los hosts ESXi desde DCUI
(Troubleshooting Options)
Me conecte por ssh desde mi PC local y realicé ping con el comando
“vmkping [Link]” resolviendo bien
Esto debería solucionar el error que nos sacaba el ESX01 al montar el
datastore. Probamos nuevamente y comprobamos que se ha añadido
el datastore compartido en ambos hosts.
Como podemos observar, unicamente tenemos de capacidad
23,51GB cuando nuestra MV tiene un disco de 60GB.
Esto es debido a que este disco contiene el montado todo el S.O
instalado (con las diferentes particiones que ha creado). Como la
carpeta contenedora está creada en la partición “/” el cual está
asignado en el sda3 que tiene 29GB y 4,9GB usados, cuenta con
23GB libres. El resto del espacio de los 60GB de disco se encuentran
reservados en un contenedor flexible (LVM) que nos será util tener en
cuenta para ampliar si las particiones del sistema se llenan o crear
alguna nueva partición.
Con un espacio tan reducido, no podriamos aprovechar bien el
Datastore NFS por lo que vamos a añadir un nuevo disco virtual a
nuestro NFS-SERVER y montarlo para el Almacenamiento. Esto es
recomendable ya que así disponemos de 2 discos para funciones
diferenciadas (sistema y almacenamiento puro).
5. Apagamos la máquina y añadimos un nuevo disco (100GB) y
volvemos a encenderla. Si ejecutamos el comando “lsblk”,
observaremos el nuevo disco nombrado como sdb (El primero es el
sda con sus particiones)
Creamos una única partición para que todo el almacenamiento sea
destinado al NFS. Para crear una nueva -> “sudo fdisk /dev/sdb”.
Ejecutamos n (para nueva partición), p (partición primaria), 1 (nº
particiones) y enter hasta que se cree. Por último w (para guardar).
Formateamos el disco a ext4
Para montar el disco usamos el siguiente comando “sudo mount
/dev/sdb1 /mnt/nfs_datastore” y editamos el archivo “sudo nano
/etc/fstab” (que es un fichero de configuración que define cómo y
dónde se deben montar los sistemas de ficheros) añadiendo la
siguiente linea final:
Solo quedaría revisar si en el archivo “/etc/exports” continua
apuntando bien hacia /mnt/nfs_datastore. Una vez revisado,
observamos que si desmontamos el Datastore de los ESXi y
montamos de nuevo, ya contamos con el espacio del nuevo disco.
Algo curioso es que cuando se apagan las MVs o el PC e iniciar
nuevamente tu homelab, comprobarás que se pierde la conexión de
los ESXi con este datastore. Esto lo solucionaremos más adelante
cuando tengamos nuestro vCenter con la función de Heartbeat.
Servidor DNS
A continuación, vamos a pasar a montar una nueva máquina que funcione
como Servidor DNS y, usarla para definir las IPs y nombres de todos los
equipos de la homelab para que resuelvan nombres, evitemos problemas de
instalación del vCenter y además, cuando hagamos pings o configuraciones
en ESXi o vCenter, también se hará por nombre. Esto último es muy
importante porque muchos sistemas no aceptan IPs, solo nombres FQDN
bien resueltos.
Dato a tener en cuenta, el dominio que utilizaremos será “[Link]”.
1. Primero crearemos una MV muy baja de recursos para que haga de
DNS Server ya que únicamente la queremos para esa función y
debemos tenerla encendida siempre.
CPU: 1 nucleo
RAM: 1 GB RAM
Disco: 8GB
Red: 2 adaptadores, 1 temporal con Bridge (para la instalación y
updates, después se eliminará) y VMnet2
S.O: Ubuntu Server 24.04
IP: [Link]
Instalamos el SO y una vez realizado, nos aseguramos de que este
actualizado:
2. Instalamos el servidor DNS bind9
Tras esta instalación, no necesitaremos más conexión a inet por lo
que cambiaremos el tipo de adaptador de red y modificaremos el
archivo “/etc/netplan/*.yaml” y “sudo netplan apply” para aplicar el
cambio.
3. Lo siguiente que haremos será modificar el archivo principal de
configuración de BIND, ubicado en /etc/bind y añadir las siguientes
lineas
Los ficheros “db.*” que apuntamos son bases de datos directas que
debemos crear a continuación, donde se contienen los diferentes
registros DNS.
De hecho BIND, por defecto trae de ejemplo “/etc/bind/[Link]” y
“/etc/bind/db.127” para inversas, los cuales copiaremos para crear
ambos nuestros y editarlos.
Editamos nuestro primer archivo con la BD para la resolución directa
añadiendo el contenido de nuestro homelab
Ahora vamos con la BD para la inversa
Revisamos que la configuración este correcta a través de los
siguientes comandos y reiniciamos el servicio de BIND para que
aplique.
Con esto ya tendríamos nuestro servidor DNS instalado y
funcionando. Podemos hacer pruebas de que esto funcione utilizando
el comando nslookup y consultando hacia nuestro servidor DNS.
4. Por último, vamos a configurar las MVs que tenemos para que usen
este servidor DNS en su configuración de red.
Ubuntu (NFS-SERVER):
Simplemente editamos el archivo de configuración
“/etc/netplan/*.yaml” y en nameservers, lo añadimos. Finalmente
aplicamos cambios.
Al realizar prueba de nslookup desde este cliente, no me está
respondiendo bien. Me devuelve lo siguiente:
Esto ocurre si “systemd-resolved” sigue actuando como
intermediario, incluso aunque hayas puesto el DNS correcto en
netplan. Lo que ocurre es que Ubuntu por defecto usa systemd-
resolved que escucha en [Link] y no pregunta a tu DNS real si el
sistema no confía en él, o si no encuentra la zona bien definida.
El DNS está bien configurado, vamos a hacer una prueba directa
desde el cliente para que ignore “systemd-resolved” temporalmente,
así:
Reemplazamos /etc/[Link] temporalmente con los siguientes
comandos y probamos a realizar la prueba:
Como podemos observar y confirmar, el problema es que “systemd-
resolved” es un pequeño servicio en Ubuntu que intercepta todas las
consultas DNS y usa [Link] como intermediario. Las consultas no
llegaban bien a tu servidor DNS porque systemd-resolved no tenía
configurado correctamente el forwarding o simplemente fallaba
resolviendo zonas personalizadas como [Link].
Sabiendo que este es el problema y que, estamos usando direcciones
fijas y gestionadas por nosotros mismos en la homelab, vamos a
desactivar de manera permanente este servicio.
Esto detiene el servicio y evita que arranque con el sistema. Ahora
eliminaremos el enlace de “/etc/[Link]” y crearemos uno
manualmente con el dns que hemos montado.
Listo, apagamos la MV y encendemos nuevamente para comprobar
que resuelve correctamente
ESXi Hosts
Accdemos a la interfaz web del ESX01 por ejemplo. Una vez dentro
vamos a la sección de redes, Pilas TCP/IP, seleccionamos la
predeterminada y editamos.
Rellenamos los campos de la configuración DNS y guardamos los
cambios.
Ahora nos podemos conectar por ssh al host ESX01 y probar a
resolver algunas consultas DNS para confirmar su funcionamiento
Implantación vCenter Server
Previo a ponernos con la instalación del vCenter, vamos a realizar una serie
de tareas recomendables para que después todo funcione correctamente.
1. Planificaremos previamente la IP y nombre del vCenter para poder
prepararlo en nuestro servidor DNS. Para nuestra homelab estos
datos serán:
Nombre: [Link]
IP: [Link]
Crearemos en nuestro DNS-Server los registros del vCenter en los
archivos de zona directa e inversa.
2. Sincronizar hora con servidor NTP. De normal, podríamos utilizar
alguno público como [Link] pero como nuestras MVs no
tienen salida a inet, vamos a utilizar una opción de VMware
Workstation para que las MVs sincronicen la hora con la del host (Mi
PC). Para ello con las máquinas apagadas, editamos y vamos a la
pestaña de Options -> VMware Tools y marcamos la siguiente opción.
Para que esta opción funcione correctamente, es necesario que
nuestras máquinas tengan instaladas las VMware Tools. En los ESXi no
hacen falta porque no son SO al uso, pero en las Ubuntu lo haremos
para evitar desincronizaciones.
Cambiaremos el adaptador de red a NAT de nuevo temporalmente
para instalar los paquetes de vmware tolos
Reiniciamos MV y listo, volvemos a hacer el cambio de adaptador de
red.
3.