Este documento explica cómo ejecutar los tests localmente y entender el flujo de CI/CD.
- Docker instalado y en ejecución
- Python 3.11+
- Permisos para ejecutar contenedores Docker
- Instalar dependencias de desarrollo:
pip install -r requirements-dev.txt- Instalar colecciones de Ansible:
ansible-galaxy install -r collections/requirements.ymlcd roles/funcional
molecule test# Crear el contenedor sin ejecutar playbook
molecule create
# Ejecutar el playbook (converge)
molecule converge
# Ejecutar las verificaciones
molecule verify
# Ver el estado de los contenedores
molecule list
# Conectarse al contenedor para debugging
molecule login
# Destruir los contenedores
molecule destroy
# Test completo (create -> converge -> verify -> destroy)
molecule testMolecule ejecuta el playbook dos veces para verificar idempotencia. En la segunda ejecución no debería haber cambios:
molecule test --scenario-name defaultPara testear solo una distribución específica:
# Solo Debian 12
MOLECULE_DISTRO=debian13 molecule test
# Solo Ubuntu 22.04
MOLECULE_DISTRO=ubuntu2204 molecule testroles/funcional/molecule/default/
├── molecule.yml # Configuración de Molecule
├── converge.yml # Playbook que ejecuta el rol
├── verify.yml # Tests de verificación
└── prepare.yml # Preparación del entorno de test
El workflow .github/workflows/molecule.yml ejecuta:
- Lint: Validación de sintaxis YAML y Ansible
- Test funcional: Tests del rol base (matriz: Debian 12 + Ubuntu 22.04)
- Test developer: Tests del rol developer (pendiente de implementar)
- Test sysadmin: Tests del rol sysadmin (pendiente de implementar)
- Push a branches
mainodevelop - Pull Requests a
mainodevelop - Manual via
workflow_dispatch
# Mantener el contenedor después de fallos
molecule converge
molecule login
# Investigar dentro del contenedorLos logs se suben como artifacts cuando fallan los tests. Puedes descargarlos desde la página de Actions.
- Implementar tests para rol
developer - Implementar tests para rol
sysadmin - Agregar tests de configuraciones específicas (GNOME, SSH, Git)
- Validar herencia de roles en tests
sudo systemctl start docker
sudo usermod -aG docker $USER
# Logout y login nuevamentemolecule destroy
docker ps -a | grep molecule
docker rm -f <container-id># Usar caché de paquetes
export MOLECULE_NO_LOG=false
molecule test --destroy=never