En este artículo explico cómo montar un laboratorio SonarQube totalmente automatizado usando Vagrant y VirtualBox, traducido y reescrito para facilitar su comprensión y adaptación. El objetivo es ofrecer un entorno limpio y aislado para practicar Infraestructura como Código, automatización con Bash y gestión de servicios con SystemD, sin necesidad de instalar un entorno Java completo en la máquina anfitriona.
Por qué montar este laboratorio y qué aporta SonarQube: SonarQube es la herramienta líder para análisis estático de código que detecta bugs, vulnerabilidades y code smells, ayudando a mantener altos estándares de calidad y seguridad. Tener un laboratorio permite explorar integraciones con pipelines de CI CD y experimentar sin riesgo sobre el equipo principal.
Herramientas principales utilizadas: Vagrant para crear y gestionar máquinas virtuales de forma declarativa y reproducible. VirtualBox como proveedor de virtualización. Un pequeño script de provisionamiento en Bash que instala dependencias, descarga SonarQube y lo configura como servicio systemd. Un archivo .env para centralizar variables de versión y rutas.
Estructura básica del proyecto: una carpeta de proyecto que contiene un Vagrantfile con la definición de la VM, un archivo provision.sh con los pasos de instalación y configuración, y un archivo .env con las variables como versión de SonarQube, URL de descarga, usuario y rutas. Esta separación facilita actualizaciones y mantenimiento.
Requisitos previos: tener instalados Vagrant y VirtualBox en la máquina anfitriona. Crear la carpeta del proyecto e inicializar Vagrant con vagrant init. En el Vagrantfile se define la box base, por ejemplo ubuntu 22.04, el reenvío de puerto 9000 para acceder a SonarQube desde el navegador, la memoria y CPU asignadas, y la provisión de archivos y ejecución del provision.sh.
Archivo de variables .env: conviene almacenar aquí datos como SONAR_USER, SONAR_GROUP, SONAR_VERSION, SONAR_URL, SONAR_HOME y JAVA_BIN. Separar configuración de lógica hace que sea muy sencillo actualizar a nuevas versiones del producto.
Qué hace el script provision.sh: ejecuta actualizaciones del sistema, instala dependencias como OpenJDK 17 que requiere SonarQube 9.9 LTS, descarga y descomprime el paquete de SonarQube, crea un usuario y grupo específicos, ajusta permisos, genera un archivo de servicio systemd para lanzar SonarQube con opciones de memoria y JVM, habilita y arranca el servicio y comprueba su estado. También puede instalar sonar scanner y herramientas adicionales como Node.js si son necesarias para ciertos análisis.
Subir el laboratorio: con todos los archivos preparados, ejecutar vagrant up. Vagrant descargará la imagen base, creará la VM y ejecutará el script de provisión. El primer arranque puede tardar varios minutos según la conexión y recursos.
Acceso y credenciales: una vez provisionado, acceder a SonarQube en https://localhost:9000. La primera vez el servicio puede tardar un par de minutos en estar totalmente operativo. Las credenciales por defecto suelen ser admin admin y se recomienda cambiar el password y generar un token personal para el scanner.
Analizar un proyecto de ejemplo: crea una carpeta de proyecto local con un archivo de código simple que contenga un code smell y configura sonar-project.properties con projectKey, projectName, projectVersion, sonar.sources y los datos de conexión sonar.host.url y sonar.login con tu token. Ejecuta el análisis con sonar scanner local o con la imagen de Docker del scanner, montando el volumen del proyecto hacia el contenedor.
Depuración y consejos prácticos: si el provisionamiento falla, usar vagrant ssh para entrar en la VM y revisar systemctl status sonarqube.service o journalctl -u sonarqube.service. SonarQube consume memoria, por lo que los 2 GB definidos son mínimos; si la interfaz va lenta, aumentar la RAM a 4 GB o más. Mantener variables en .env facilita actualizaciones a nuevas versiones de SonarQube.
Aprendizajes: este laboratorio ejemplifica Infraestructura como Código, permite practicar despliegues repetibles y seguros y enseña a configurar servicios como si se tratara de una VPS real, ideal para equipos DevOps y desarrolladores que desean dominar la automatización de infraestructuras.
Acerca de Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software que ofrece soluciones a medida y consultoría tecnológica. Nos especializamos en aplicaciones a medida y software a medida, inteligencia artificial aplicada a empresas, ciberseguridad, servicios cloud aws y azure y soluciones de inteligencia de negocio. Si buscas un socio para crear software personalizado, puedes conocer nuestros servicios de desarrollo en desarrollo de aplicaciones a medida. También diseñamos soluciones basadas en inteligencia artificial y agentes IA para automatizar procesos y mejorar resultados; descubre nuestras propuestas de IA empresarial en servicios de inteligencia artificial.
Palabras clave y servicios relacionados: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si necesitas integrar SonarQube en pipelines de CI CD en la nube, o desplegar análisis de calidad como parte de un flujo DevOps en entornos AWS o Azure, en Q2BSTUDIO podemos acompañar en la arquitectura, automatización y seguridad del proceso.
Conclusión: montar un laboratorio SonarQube con Vagrant y VirtualBox es una forma accesible y segura de aprender operaciones de infraestructura, automatización y análisis de calidad de código. Además, este tipo de laboratorios permiten probar integraciones con herramientas de CI CD, escalar a servicios cloud y validar prácticas de seguridad antes de aplicarlas en entornos de producción. Si te interesa llevar estas prácticas a proyectos reales, Q2BSTUDIO ofrece experiencia en desarrollo, cloud, ciberseguridad y soluciones de inteligencia de negocio para transformar ideas en productos escalables.