Cargando...

Prueba scripts sin arruinar tu PC: entorno seguro con Vagrant

Entorno de Pruebas con Vagrant

¿Te has preguntado alguna vez cómo los profesionales de IT practican y experimentan con diferentes configuraciones sin arriesgar sus sistemas de producción? ¿Cómo puedes tener un entorno Windows 10 completamente funcional para practicar todos los comandos y scripts de este curso sin instalar nada en tu máquina principal?

"Montar tu propio laboratorio es como abrir un taller digital: puedes romper, arreglar y volver a intentar sin miedo. Con Vagrant, todo queda en código, todo es repetible, y tu máquina principal ni se entera." – Filosofía de aprendizaje práctico.

Introducción

En este capítulo especial, aprenderás a crear un entorno de pruebas profesional usando Vagrant y VirtualBox. Este entorno te permitirá ejecutar todos los ejemplos prácticos del curso de manera segura, aislada y completamente funcional.

¿Por qué un Entorno Virtual?

Ventajas del Entorno Virtual

  • Seguridad total: juega sin miedo, tu sistema host queda intacto
  • Aislamiento completo: cada práctica en su “taller” limpio
  • Reproducibilidad: mismo ambiente en cualquier ordenador
  • Flexibilidad: ajusta RAM, CPU, red y discos como quieras
  • Profesional: igualito a lo que se usa en equipos de TI reales

Casos de Uso Reales

  • Desarrollo de scripts: valida antes de producción
  • Aprendizaje: experimenta sin el susto de romper nada
  • Testing: prueba configuraciones en entornos controlados
  • Demostraciones: muestra resultados en un ambiente estable

Herramientas que Usaremos

Vagrant

  • ¿Qué es?: el orquestador que define tu laboratorio como código
  • Ventajas: automatiza, versiona, y asegura infraestructura inmutable
  • Uso: todo se controla desde un archivo Vagrantfile y provisión

VirtualBox

  • ¿Qué es?: el motor de virtualización debajo de la VM
  • Ventajas: gratis, estable y multiplataforma
  • Uso: hospeda la VM donde correrás Windows 10

Windows 10

  • ¿Qué es?: el SO objetivo de nuestras prácticas
  • Ventajas: entorno real para administración y scripting
  • Uso: aquí ejecutas todos los comandos del curso

Requisitos del Sistema

Software Requerido

Recursos Mínimos

  • RAM: 8GB disponible (16GB recomendado)
  • Disco: 50GB espacio libre
  • CPU: 4 núcleos recomendados

Verificación de Requisitos

# Verificar Vagrant
vagrant --version

# Verificar VirtualBox
VBoxManage --version

# Verificar recursos del sistema
systeminfo | findstr /C:"Total Physical Memory"

Instalación Paso a Paso

Paso 1: Instalar VirtualBox

  1. Descargar VirtualBox
    • Ve a virtualbox.org
    • Descarga la versión para Windows
    • Ejecuta el instalador como administrador
  2. Configuración de VirtualBox
# Verificar instalación
VBoxManage --version

# Crear directorio para VMs (opcional)
mkdir C:\VirtualMachines

Paso 2: Instalar Vagrant

  1. Descargar Vagrant
    • Ve a vagrantup.com
    • Descarga la versión para Windows
    • Ejecuta el instalador
  2. Verificar instalación
# Verificar Vagrant
vagrant --version

# Verificar plugins disponibles
vagrant plugin list

Paso 3: Descargar el Repositorio

  • Clonar el repositorio
# Usando Git
git clone https://github.com/jersonmartinez/Curso_Administracion_Windows_Consola.git

# O descargar ZIP desde GitHub
# https://github.com/jersonmartinez/Curso_Administracion_Windows_Consola/archive/refs/heads/master.zip
  • Navegar al directorio
cd Curso_Administracion_Windows_Consola
cd vagrant

Tour por el Proyecto Vagrant

Estructura del Directorio

vagrant/
├── Vagrantfile                 # Configuración principal
├── env.vagrant.example         # Variables de entorno (ejemplo)
├── .env.vagrant               # Variables de entorno (personalizado)
├── cleanup.bat                # Script de limpieza
├── test-environment.bat       # Script de prueba del entorno
├── provision/                 # Scripts de provisión
│   ├── create-user.ps1        # Crear usuario y RDP
│   ├── install-guest-additions.ps1  # Instalar Guest Additions
│   ├── configure-windows.ps1  # Configurar Windows
│   └── install-dev-tools.ps1  # Instalar herramientas de desarrollo
├── README.md                  # Documentación principal
└── RDP.md                     # Guía de conexión RDP

Archivos Principales Explicados

1. Vagrantfile - El Cerebro del Proyecto

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Windows 10 Lab Environment for Batch Script Testing
# This Vagrantfile creates a Windows 10 VM optimized for console administration

Vagrant.configure("2") do |config|
  # Load environment variables from .env.vagrant file
  env_vars = {}
  env_file = File.join(File.dirname(__FILE__), ".env.vagrant")
  
  if File.exist?(env_file)
    File.readlines(env_file).each do |line|
      next if line.strip.start_with?("#") || line.strip.empty?
      k, v = line.strip.split('=', 2)
      env_vars[k] = v if k && v
    end
  end

  # Box configuration
  config.vm.box = env_vars["VAGRANT_BOX"] || "gusztavvargadr/windows-10"
  config.vm.box_version = env_vars["VAGRANT_BOX_VERSION"] || "2506.0.0"

¿Qué hace cada sección?

  • Configuración de entorno: lee tu .env.vagrant para parametrizar todo
  • Box configuration: define la imagen base de Windows 10
  • Provider configuration: ajusta RAM, CPU y gráficos de VirtualBox
  • Network configuration: mapea puertos y red para RDP
  • Provisioning: automatiza la configuración para lograr idempotencia

2. .env.vagrant - Configuración Personalizada

# Box configuration
VAGRANT_BOX=gusztavvargadr/windows-10
VAGRANT_BOX_VERSION=2506.0.0

# VM configuration
VAGRANT_VM_NAME=Win10-BatchLab
VAGRANT_VM_RAM=16384
VAGRANT_VM_CPUS=4
VAGRANT_VM_DISK_SIZE=120

# User credentials
VAGRANT_WIN_USER=batchtester
VAGRANT_WIN_PASS=P@ssw0rd123

# Network configuration
VAGRANT_RDP_PORT=3389
VAGRANT_HOST_ONLY_IP=192.168.56.10

# Scripts configuration
VAGRANT_SCRIPTS_PATH=../scripts
VAGRANT_SCRIPTS_DESTINATION=C:/BatchScripts

Variables importantes:

  • VAGRANT_VM_RAM: RAM asignada (16GB por defecto)
  • VAGRANT_VM_CPUS: núcleos de CPU (4 por defecto)
  • VAGRANT_WIN_USER/VAGRANT_WIN_PASS: credenciales de acceso
  • VAGRANT_RDP_PORT: puerto RDP mapeado
  • VAGRANT_SCRIPTS_PATH: ruta a los scripts del curso

3. Scripts de Provisión - Automatización Completa

create-user.ps1 - Creación de Usuario

# Create User and Enable RDP for Windows 10 Lab
param(
    [string]$Username = $env:VAGRANT_WIN_USER,
    [string]$Password = $env:VAGRANT_WIN_PASS
)

Write-Host "Creating user account and configuring RDP..." -ForegroundColor Green

try {
    # Create user account
    $securePassword = ConvertTo-SecureString $Password -AsPlainText -Force
    New-LocalUser -Name $Username -Password $securePassword -FullName "Batch Script Tester"
    
    # Add user to Administrators group
    Add-LocalGroupMember -Group "Administrators" -Member $Username
    
    # Enable Remote Desktop
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0

¿Qué hace?

  • Crea el usuario batchtester con privilegios de administrador
  • Habilita RDP y ajusta firewall/NLA para acceso seguro
  • Deja todo listo para entrar por Escritorio Remoto

configure-windows.ps1 - Configuración de Windows

# Configure Windows for Development and Script Testing
Write-Host "Configuring Windows for development environment..." -ForegroundColor Green

try {
    # Enable PowerShell execution policy for script development
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force
    
    # Configure Windows Explorer for better development experience
    Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Value 0
    
    # Configure UAC for development (less prompts)
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Value 0

¿Qué hace?

  • Habilita ejecución de scripts en PowerShell (sin sustos)
  • Muestra extensiones en el Explorador
  • Baja el ruido del UAC para un flujo de trabajo más ágil
  • Activa rutas largas y optimiza defensas para desarrollo
  • Crea accesos directos útiles

install-dev-tools.ps1 - Herramientas de Desarrollo

# Install Development Tools for Script Testing
Write-Host "Installing development tools..." -ForegroundColor Green

try {
    # Install Chocolatey if not already installed
    if (!(Get-Command choco -ErrorAction SilentlyContinue)) {
        Set-ExecutionPolicy Bypass -Scope Process -Force
        iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
    }
    
    # Install useful development tools
    choco install notepadplusplus -y -ErrorAction SilentlyContinue
    choco install 7zip -y -ErrorAction SilentlyContinue
    choco install git -y -ErrorAction SilentlyContinue
    choco install vscode -y -ErrorAction SilentlyContinue
    choco install microsoft-windows-terminal -y -ErrorAction SilentlyContinue
    choco install sysinternals -y -ErrorAction SilentlyContinue

¿Qué instala?

  • Notepad++: edición rápida y poderosa
  • 7-Zip: compresión/descompresión
  • Git: control de versiones
  • Visual Studio Code: tu IDE ligero
  • Windows Terminal: terminal moderna
  • Sysinternals Suite: utilidades pro de Windows

Uso del Entorno

Paso 1: Configurar el Entorno

# Navegar al directorio vagrant
cd vagrant

# Copiar archivo de configuración
copy env.vagrant.example .env.vagrant

# Editar configuración (opcional)
notepad .env.vagrant

Paso 2: Iniciar la Máquina Virtual

# Iniciar VM (descarga automática de la imagen)
vagrant up

# Ver estado de la VM
vagrant status

# Ver puertos asignados
vagrant port

Paso 3: Conectarse a la VM

# Conectar vía RDP (método recomendado)
vagrant rdp

# O usar cliente RDP manual
# Host: 127.0.0.1
# Puerto: (mostrado por 'vagrant port')
# Usuario: batchtester
# Contraseña: P@ssw0rd123

Paso 4: Usar el Entorno

Al entrar encontrarás:

  • Scripts del curso en C:\BatchScripts
  • Herramientas listas con accesos directos
  • PowerShell preparado y UAC menos intrusivo
  • Directorios test, logs, temp y backup ordenaditos

Conexión RDP Detallada

Información de Conexión

Parámetro

Valor

Notas

Host

127.0.0.1

Localhost

Puerto

3389

Verificar con vagrant port

Usuario

batchtester

Usuario administrador

Contraseña

P@ssw0rd123

Contraseña segura

Dominio

(vacío)

No requerido

Configuración de Cliente RDP

Windows (mstsc)

# Abrir cliente RDP
mstsc

# O desde línea de comandos
mstsc /v:127.0.0.1:3389 /u:batchtester

Configuración recomendada:

  • Pantalla: resolución completa
  • Colores: 24 bits
  • Experiencia: “Red local” para máximo rendimiento
  • Recursos locales: portapapeles y unidades activas

macOS (Microsoft Remote Desktop)

  1. Descargar desde App Store
  2. Configurar conexión:
    • PC name: 127.0.0.1:3389
    • User name: batchtester
    • Password: P@ssw0rd123

Linux (Remmina)

# Ubuntu/Debian
sudo apt install remmina remmina-plugin-rdp

# Abrir Remmina
remmina

Comandos Útiles

Gestión de la VM

vagrant up              # Iniciar VM
vagrant halt            # Apagar VM
vagrant reload          # Reiniciar VM
vagrant destroy -f      # Eliminar VM completamente
vagrant status          # Estado de la VM
vagrant provision       # Re-ejecutar provisión

Conexión

vagrant rdp             # Conectar vía RDP
vagrant port            # Ver puertos asignados
vagrant ssh             # Conectar vía SSH (si disponible)

Mantenimiento

cleanup.bat             # Limpiar archivos temporales
test-environment.bat    # Probar funcionalidad del entorno

Troubleshooting

Problemas Comunes

1. VM no inicia

# Verificar requisitos
vagrant --version
VBoxManage --version

# Limpiar y recrear
vagrant destroy -f
vagrant up

2. Error de puerto RDP

# Verificar puerto asignado
vagrant port

# Usar el puerto mostrado en lugar de 3389
# Ejemplo: 127.0.0.1:53389

3. Problemas de rendimiento

  • Baja un poco la RAM en .env.vagrant si tu host lo necesita
  • Revisa que tu host tenga recursos suficientes
  • Desactiva temporalmente el antivirus si interfiere

4. Error de Guest Additions

  • La VM funciona sin Guest Additions
  • Si algo raro pasa, reinstala VirtualBox

5. Errores de instalación de herramientas

  • A veces fallan por red o checksum: reintenta
  • Lo principal queda instalado automáticamente
  • Alternativa: Sysinternals directo desde Microsoft

6. Error "Cannot remove the last Administrator"

  • Sucede si el usuario ya existe o por políticas
  • No te preocupes: el acceso RDP seguirá funcionando
  • Verifica credenciales y listo

Logs y Debugging

vagrant up --debug      # Modo debug
vagrant provision       # Re-ejecutar provisión

Casos de Uso Prácticos

Para Aprendizaje

  • Prueba sin riesgo
  • Entorno limpio para cada ejercicio
  • Herramientas profesionales, sin dolores de cabeza

Para Desarrollo

  • Testea scripts antes de producción
  • Debug en un ambiente controlado
  • Experimenta con configuraciones avanzadas

Para Administración

  • Valida políticas y GPOs
  • Prueba automatizaciones de administración
  • Practica técnicas de seguridad

Estructura en la VM

C:\BatchScripts\
├── test\                      # Scripts de prueba
│   └── sample-test.bat        # Script de muestra
├── logs\                      # Archivos de log
├── temp\                      # Archivos temporales
├── backup\                    # Copias de seguridad
└── [scripts del curso]        # Scripts del curso organizados

Seguridad del Entorno

Configuraciones de Seguridad

  • Sin carpetas compartidas por defecto
  • Usuario de pruebas con contraseña fuerte
  • Red host-only para aislamiento
  • RDP limitado a localhost
  • Provisión automatizada y verificable

Buenas Prácticas

  • No uses credenciales de producción
  • Mantén la VM al día
  • Respaldos de lo importante
  • Documenta tus cambios

Integración con el Curso

El contenido del curso mantiene la línea práctica, por lo que es necesario tener un entorno de pruebas reconstruíble, de modo tal que no afecte tu equipo físico.

Cómo Usar el Entorno con el Curso

  1. Para cada capítulo:
    • Inicia la VM: vagrant up
    • Conéctate: vagrant rdp
    • Ve a C:\BatchScripts
    • Ejecuta los scripts del capítulo
  2. Para prácticas avanzadas:
    • Notepad++, VS Code y Sysinternals te esperan
    • Juega con configuraciones del sistema
    • Prueba tus automatizaciones
  3. Para desarrollo:
    • Crea scripts en C:\BatchScripts\test
    • Versiona con Git
    • Documenta lo aprendido

Actualizaciones y Mantenimiento

Actualizar el Entorno

# Aplicar nuevas configuraciones
vagrant provision

# Reiniciar y re-provisionar
vagrant reload --provision

# Actualizar box
vagrant box update

Backup y Restauración

# Exportar configuración
vagrant package --output curso-windows-lab.box

# Importar configuración
vagrant box add curso-windows-lab curso-windows-lab.box

Conclusión y Siguiente Paso

Listo: tienes un laboratorio profesional, automatizado e idéntico cada vez que lo generas. Es tu “taller digital” para aprender, romper, arreglar y dominar la administración de Windows desde la consola con tranquilidad.

Lo que has logrado:

  • Entorno virtualizado listo para trabajar
  • Herramientas pro instaladas y configuradas
  • Provisión automatizada e idempotente
  • Guía clara para uso y mantenimiento
  • Integración directa con el curso

Próximos pasos:

  1. Practica los comandos del curso
  2. Lleva tus scripts a otro nivel
  3. Ajusta la VM a tu gusto
  4. Comparte lo que armes con tu equipo o comunidad

Recursos adicionales:


Repositorios

Fuentes y Referencias


Scripts de provisión: se disparan durante vagrant up

Autor: Jerson Martínez

  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.