Como instalar Vagrant en Windows para VMware Workstation

¿Qué es #Vagrant?

En resumen, #Vagrant simplifica la creación y gestión de entornos de desarrollo virtuales, permitiendo a los equipos de desarrollo trabajar de manera más eficiente y consistente. Es especialmente útil en proyectos grandes y complejos donde es crucial tener entornos de desarrollo coherentes y reproducibles.

¿Para qué uso yo #Vagrant?

Principalmente para crear una máquina virtual de forma muy rápida y hacer pruebas sobre ella. Es perfecto para laboratorios de informática, para realizar cursos o cualquier cosa que vayas a probar.
Es buena praxis probar primero en una Máquina Virtual y una vez claro todo lo que quieres y has de hacer, implementarlo en un servidor directamente.

¿Cómo instalar Vagrant?

En Windows puedes hacerlo a la vieja usanza o con choco (si no sabes que es choco ya tardas).
Con Chocolatey (abriendo terminal con modo admin):
choco install vagrant
Ahora ya tienes Vagrant instalado pero si vas a usar VMware Workstation, necesitarás un plugin. Para usarlo con VirtualBox no es necesario. Comentar que en Mac con VirtualBox 7 no me ha funcionado pero con la ultima versión de VirtualBox 6 funcionó a la primera.
Instalar el driver Utility VMware para Vagrant aquí.
Para usar VMware ejecutamos lo siguiente (sin modo admin):
vagrant plugin install vagrant-vmware-desktop
Una vez instalado vamos a crear nuestra primera máquina virtual. Para ello yo voy a escoger una máquina Debian que es la que estoy acostumbrado a usar para mis pruebas. Si necesitas consultar otras Boxes puedes verlas aquí.
#crear una carpeta vagrant donde vayas a trabajar
mkdir vagrant
cd vagrant
# Para mayor orden, crear una carpeta por sistema o vagrantfile
mkdir debian12
cd debian12
# Inicializar vagrant con la box debian12
vagrant init generic/debian12
# Modificar Vagrantfile
notepad .\Vagrantfile
Al realizar el init nos creará un archivo VagrantFile donde habrá que modificar lo siguiente:
Vagrant.configure("2") do |config|
  config.vm.box = "generic/debian12"
  config.vm.provider "vmware_desktop" do |vmware|
    vmware.vmx["memsize"] = "1024"
  end
end
Finalmente arrancar la máquina
# Arrancar máquina
vagrant up --provider=vmware_desktop
Si la máquina al arrancar te da un problema prueba a ejecutar como admin lo siguiente:
net.exe start vagrant-vmware-utility
Ahora probar a arrancar la máquina de nuevo y ejecutar para entrar:
vagrant ssh
Y ya está, estamos dentro de nuestra máquina virtual.
Como puedes ver nos hemos ahorrado todo el proceso de crear una máquina, realizar instalación demás.
También comentar que puedes modificar el Vagrantfile para provisionar la máquina desde inicio. Imagina que quieres una máquina para experimentos docker. Pues provisonas el Vagranfile con los pasos de instalación de docker y con cada vagrant up que hagas tendrás una máquina con la que probar dockers.

Comandos útiles

Aquí te presento algunos de los comandos más comunes de Vagrant:
Inicializar un nuevo entorno Vagrant:
vagrant init [nombre_box]
Este comando inicializa un nuevo Vagrantfile en el directorio actual utilizando la caja especificada (si se proporciona).
Iniciar una máquina virtual:
vagrant up
Este comando crea e inicia una nueva máquina virtual según la configuración en el Vagrantfile.
Detener una máquina virtual:
vagrant halt
Este comando apaga la máquina virtual de manera segura.
Suspender una máquina virtual:
vagrant suspend
Este comando suspende la máquina virtual, guardando su estado actual para que pueda ser reanudada posteriormente.
Reanudar una máquina virtual suspendida:
vagrant resume
Este comando reanuda una máquina virtual que ha sido suspendida previamente.
Destruir una máquina virtual:
vagrant destroy
Este comando destruye la máquina virtual, eliminando todos sus recursos y configuraciones asociadas.
Acceder a una máquina virtual:
vagrant ssh
Este comando abre una sesión SSH en la máquina virtual, permitiéndote acceder y trabajar en ella desde la línea de comandos.
Actualizar la configuración de la máquina virtual:
vagrant reload
Este comando reinicia la máquina virtual y aplica cualquier cambio en la configuración del Vagrantfile.
Ver el estado de todas las máquinas Vagrant:
vagrant global-status
Este comando muestra información sobre todas las máquinas Vagrant en todos los proyectos en tu sistema.
Instalar o listar plugins:
vagrant plugin install [nombre_plugin]
vagrant plugin list
Estos comandos permiten instalar o listar plugins disponibles para Vagrant.
Estos son solo algunos de los comandos más comunes de Vagrant. Vagrant ofrece una amplia gama de funcionalidades y opciones, por lo que te recomiendo consultar la documentación oficial de Vagrant o utilizar el comando vagrant --help para obtener una lista completa de comandos y opciones disponibles.

Configuraciones extras Vagrantfile

Nombre de la Máquina Virtual: Para establecer un nombre para tu máquina virtual, puedes agregar la siguiente línea dentro del bloque de configuración principal de tu Vagrantfile:
config.vm.hostname = "mi-nombre-de-maquina"
Otras Configuraciones Ajustables: Aquí hay algunas otras configuraciones que puedes ajustar en el bloque de configuración del proveedor VMware:
Configuración de Red: Puedes configurar diferentes tipos de redes, como redes privadas, públicas o de host. Por ejemplo:
vmware.vmx["ethernet0.networkName"] = "Red-Publica"
Aceleración 3D: Si deseas habilitar o deshabilitar la aceleración 3D, puedes hacerlo con:
vmware.vmx["svga.autodetect"] = "FALSE"
vmware.vmx["svga.vramSize"] = "128"
Configuración de Almacenamiento: Puedes ajustar la configuración del disco duro virtual (VMDK). Por ejemplo:
vmware.vmx["scsi0:0.present"] = "TRUE"
vmware.vmx["scsi0:0.fileName"] = "mi-disco.vmdk"
Configuración de CPU y Memoria: Como mencioné anteriormente, puedes ajustar el número de CPUs y la memoria RAM:
vmware.vmx["memsize"] = "4096"
vmware.vmx["numvcpus"] = "2"
Configuración de Visualización: Puedes ajustar la resolución de pantalla y otros aspectos relacionados con la visualización:
vmware.vmx["gui.fitGuestToHost"] = "TRUE"
vmware.vmx["gui.fullscreen"] = "FALSE"
Documentación Adicional:
TPara ponerle un nombre a la máquina virtual en VMware cuando usas Vagrant, puedes usar la propiedad config.vm.hostname dentro de tu Vagrantfile. Aquí te muestro cómo hacerlo y algunas otras configuraciones que puedes ajustar:
Nombre de la Máquina Virtual: Para establecer un nombre para tu máquina virtual, puedes agregar la siguiente línea dentro del bloque de configuración principal de tu Vagrantfile:
config.vm.hostname = "mi-nombre-de-maquina"
Otras Configuraciones Ajustables: Aquí hay algunas otras configuraciones que puedes ajustar en el bloque de configuración del proveedor VMware:
Configuración de Red: Puedes configurar diferentes tipos de redes, como redes privadas, públicas o de host. Por ejemplo:
vmware.vmx["ethernet0.networkName"] = "Red-Publica"
Aceleración 3D: Si deseas habilitar o deshabilitar la aceleración 3D, puedes hacerlo con:
vmware.vmx["svga.autodetect"] = "FALSE"
vmware.vmx["svga.vramSize"] = "128"
Configuración de Almacenamiento: Puedes ajustar la configuración del disco duro virtual (VMDK). Por ejemplo:
vmware.vmx["scsi0:0.present"] = "TRUE"
vmware.vmx["scsi0:0.fileName"] = "mi-disco.vmdk"
Configuración de CPU y Memoria: Como mencioné anteriormente, puedes ajustar el número de CPUs y la memoria RAM:
vmware.vmx["memsize"] = "4096"
vmware.vmx["numvcpus"] = "2"
Configuración de Visualización: Puedes ajustar la resolución de pantalla y otros aspectos relacionados con la visualización:
vmware.vmx["gui.fitGuestToHost"] = "TRUE"
vmware.vmx["gui.fullscreen"] = "FALSE"