# Instrucciones de Ejecución - VirtManager ## Iniciar el Servidor ### Con sudo (necesario para operaciones de libvirt) ```bash cd /home/creylopez/virtmanager source venv/bin/activate sudo -E /home/creylopez/virtmanager/venv/bin/uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` La opción `-E` preserva las variables de entorno del usuario. ### Verificar que el servidor está corriendo En otra terminal: ```bash curl http://localhost:8000/vms ``` Deberías obtener una respuesta JSON con la lista de VMs. ## Prueba Rápida de Creación de VM 1. **Acceder a la interfaz web:** - Abre `http://localhost:8000` en tu navegador 2. **Subir una ISO (si no tienes):** - Ve a la sección "Upload ISO" - Selecciona un archivo ISO - Haz clic en "Upload" 3. **Crear una VM:** - Ve a la sección "Create VM" - Completa los campos: - **Name:** nombre de la VM (ej: mivm) - **Memory:** memoria en MiB (ej: 2048) - **Disk Size:** tamaño del disco en GB (ej: 20) - **CPUs:** número de CPUs (ej: 2) - **ISO:** selecciona la ISO subida - Haz clic en "Create VM" 4. **Verificar creación:** - Si todo va bien, verás un mensaje de éxito - La VM aparecerá en la lista de VMs - El disco se creará en `/var/lib/libvirt/images/` ## Agregar Discos a una VM Existente ⚠️ **REQUISITOS IMPORTANTES:** - La máquina virtual **DEBE estar parada** (shut off) - El nombre del disco **NO debe existir** previamente ### Pasos: 1. **Parar la VM:** - En la lista de VMs, haz clic en "Stop" en la VM destino - Espera a que cambie el estado a "shut off" 2. **Agregar el disco:** - Ve a la sección "Add Disk to VM" - Selecciona la VM (debe estar parada) - Ingresa un nombre para el disco (ej: datos, backup, etc.) - Ingresa el tamaño en GB (ej: 50) - Haz clic en "Add Disk" 3. **Verificar:** - Si todo va bien, verás un mensaje confirmando que se agregó el disco - El disco estará asignado a un dispositivo virtio (vda, vdb, etc.) ## Troubleshooting ### Si aparece error "undefined" 1. **Verifica los logs del servidor:** ```bash # En la terminal donde corre el servidor, busca lineas que empiezan con [CREATE_VM] ``` 2. **Verifica los permisos:** ```bash sudo -l | grep create_disk ls -l /home/creylopez/virtmanager/create_disk.sh ``` 3. **Verifica que libvirt está corriendo:** ```bash sudo systemctl status libvirtd ``` 4. **Verifica el espacio en disco:** ```bash df -h /var/lib/libvirt/images/ ``` ### Si el disco se crea pero falla la VM Esto generalmente significa que hay un problema con la definición de XML de la VM. Los logs del servidor mostrarán el error exacto de libvirt. Posibles causas: - El archivo ISO no existe o no es accesible - La ruta del ISO está incorrecta - Problema con la arquitectura o tipo de máquina en el XML ## Detener el Servidor En la terminal donde corre el servidor, presiona `Ctrl+C` ## Logs El servidor mostrará logs con prefijo `[CREATE_VM]` cuando se crea una VM. Estos logs incluyen: - Rutas de archivos - Estado de creación de disco - Errores de libvirt - Mensajes de éxito o fallo Ejemplo de log exitoso: ``` [CREATE_VM] Starting VM creation: name=mivm, memory=2048, disk_size=20, cpus=2 [CREATE_VM] Using ISO path: /var/lib/libvirt/images/isos/ubuntu-22.04.iso [CREATE_VM] Script path: /home/creylopez/virtmanager/create_disk.sh [CREATE_VM] Disk creation return code: 0 [CREATE_VM] Disk created successfully: /var/lib/libvirt/images/mivm.qcow2 [CREATE_VM] Generated MAC: 52:54:00:ab:cd:ef [CREATE_VM] XML template prepared for VM definition [CREATE_VM] Defining VM with libvirt... [CREATE_VM] VM defined successfully. Starting VM... [CREATE_VM] VM started successfully! ``` ## Notas Importantes 1. El servidor debe ejecutarse con `sudo` para acceso total a libvirt 2. El script `create_disk.sh` debe estar configurado en sudoers sin contraseña 3. La ruta del script se calcula automáticamente desde la ruta del módulo app 4. Los errores de libvirt se mostrarán claramente en los logs y en la respuesta del frontend