Este proyecto utiliza Ansible para automatizar la configuración completa de notebooks para los distintos perfiles de trabajo en Adhoc.
✨ Nuevo: Tests automatizados con Molecule para todos los roles. Ver documentación de testing.
Para información interna más detallada sobre los objetivos, procedimientos y pendientes, consulta el documento de diseño interno.
Este playbook está diseñado para funcionar sobre instalaciones limpias de Debian (12+) y Ubuntu (22.04+).
Priorizamos el uso de Debian para mantener un sistema base limpio, estable y libre de las decisiones comerciales de Canonical (como la imposición de snap). Sin embargo, el playbook es totalmente compatible con las versiones LTS de Ubuntu.
El sistema está organizado en perfiles jerárquicos. Cada perfil incluye la configuración del anterior, creando un sistema incremental:
funcional(Base): Contiene el software y la configuración esencial para todos los miembros de la empresa (navegadores, herramientas de comunicación, seguridad básica, etc.).developer: Incluye el perfilfuncionaly añade todas las herramientas de desarrollo (Docker, VS Code, Git, Python, kubectl, etc.).freelance_developer: Perfil acotado para developers freelance. Reutiliza tareas puntuales defuncionalydeveloperpero evita configuración corporativa (por ejemplo branding/desktop) y corre solo un subset de herramientas de desarrollo.sysadmin: Incluye ambos perfiles anteriores y añade herramientas de administración de sistemas e infraestructura (pulumi, gcloud, VirtualBox, etc.).
| Perfil | Ideal para | Incluye (alto nivel) | Evita / notas | Ejecutar |
|---|---|---|---|---|
funcional |
Usuarios generales | Base de workstation | Puede incluir desktop/branding corporativo | ansible-playbook local.yml -K --verbose |
developer |
Devs internos | funcional + tooling completo de dev (VS Code, Git, Python, Docker, kubectl, etc.) |
Incluye desktop/branding corporativo (por herencia de funcional) |
ansible-playbook local.yml -e "profile_override=developer" -K --verbose |
freelance_developer |
Devs freelance/externos | Entorno de dev + cloud/containers (subset controlado) | Evita desktop/branding corporativo | ansible-playbook local.yml -e "profile_override=freelance_developer" -K --verbose |
sysadmin |
SRE/infra | developer + herramientas extra de infra/SRE |
Perfil más amplio (instala más herramientas) | ansible-playbook local.yml -e "profile_override=sysadmin" -K --verbose |
Más detalle (qué hace cada perfil y cómo elegirlo): docs/PROFILES.md
Este es el método preferido para configurar una notebook desde cero. Un único script se encarga de todo.
-
Descargar el script de arranque:
curl -L -o adhoc-ansible https://raw.githubusercontent.com/ingadhoc/ansible_notebooks/main/launch_project.sh
(El comando descarga
launch_project.shpero lo guarda comoadhoc-ansible.) -
Darle permisos de ejecución:
chmod +x adhoc-ansible
-
Ejecutar el script con
sudo:sudo ./adhoc-ansible
El script te guiará con un menú interactivo para que selecciones tu perfil. Se encargará de instalar Ansible, sus dependencias, clonar este repositorio y ejecutar el playbook por ti. Al finalizar, solo necesitarás reiniciar.
Si necesitas volver a ejecutar el playbook en un equipo ya configurado o quieres usar opciones avanzadas, puedes hacerlo manualmente.
Requisitos previos:
- Tener
gityansible(víapipx) instalados. - Haber clonado este repositorio.
Comandos:
# Navegar al directorio del proyecto
cd ~/repositorios/ansible_notebooks
# (Opcional) Actualizar el repositorio a la última versión
git pull
# (Opcional) Instalar/actualizar las colecciones de Ansible
ansible-galaxy install -r collections/requirements.yml
# --- Ejecutar el perfil deseado ---
# Para el rol Funcional (perfil por defecto)
ansible-playbook local.yml -K --verbose
# Para el rol Developer (ejecutará funcional -> developer)
ansible-playbook local.yml -e "profile_override=developer" -K --verbose
# Para el rol Freelance Developer (perfil acotado)
ansible-playbook local.yml -e "profile_override=freelance_developer" -K --verbose
# Para el rol SysAdmin (ejecutará funcional -> developer -> sysadmin)
ansible-playbook local.yml -e "profile_override=sysadmin" -K --verbose
# Para instalar solo herramientas de deploy rápido (ej. kubectl)
ansible-playbook local.yml --tags "deploy" -K --verboseEste perfil está pensado para developers externos que necesitan un entorno de desarrollo completo, pero sin configuraciones corporativas (por ejemplo branding/desktop) ni tareas que no aportan al trabajo diario.
Qué hace (resumen):
- Instala herramientas de desarrollo y CLI: Git, Python, VS Code, Docker, kubectl, gcloud, GH CLI, etc.
- Aplica un subconjunto de tareas de
funcionalydeveloperde forma controlada.
Qué NO hace (intencionalmente):
- No aplica branding corporativo.
- No fuerza configuración de GNOME/extensiones de escritorio.
Recomendado (bootstrap):
curl -L -o adhoc-ansible https://raw.githubusercontent.com/ingadhoc/ansible_notebooks/main/launch_project.sh
chmod +x adhoc-ansible
sudo ./adhoc-ansibleLuego elegir Freelance Developer en el menú.
Manual (si ya tiene el repo):
cd ~/repositorios/ansible_notebooks
ansible-playbook local.yml -e "profile_override=freelance_developer" -K --verbosePara una guía lista para copiar/pegar y enviar a externos, ver: docs/FREELANCE_DEVELOPER.md
Después de que Ansible termine, hay algunas acciones que requieren tu intervención para iniciar sesión en servicios específicos.
-
Configurar SSH en GitHub:
-
La CLI de
ghya estará instalada. Inicia sesión con:gh auth login
-
Sube tu nueva clave SSH. El playbook la creó con el formato
id_rsa_TU_USUARIO@NOMBRE_HOST.pub.# Reemplaza 'dib' y 'dib-adhoc-nb-debian' con tu usuario y hostname gh ssh-key add ~/.ssh/id_rsa_dib@dib-adhoc-nb-debian.pub
-
-
Iniciar sesión en Docker Hub:
docker login # username: adhocsa # password: (usar un token generado en Docker Hub)
-
Iniciar sesión en Google Cloud (si aplica):
gcloud auth login
Este proyecto utiliza Molecule con Docker para tests automatizados. Los tests se ejecutan automáticamente en GitHub Actions para cada push y pull request.
# Crear un entorno virtual (recomendado, evita PEP 668 en Debian/Ubuntu)
python3 -m venv .venv
source .venv/bin/activate
# Instalar dependencias de testing
pip install -r requirements-dev.txt
# Instalar colecciones
ansible-galaxy install -r collections/requirements.yml
# Ejecutar tests de un rol específico
./test-role.sh funcional
# Ejecutar todos los tests
./test-role.sh all
# Solo verificar requisitos
./test-role.sh --check
# Solo ejecutar linting
./test-role.sh --lintPor defecto, los tests ejecutan en Debian 12 y Ubuntu 22.04. Para probar con distribuciones adicionales:
# Usar el Makefile para comandos específicos
make test-ubuntu2404 # Test solo Ubuntu 24.04 LTS
make test-debian13 # Test solo Debian 13 (si disponible)
make test-all-distros # Test todas las distros configuradas
# Ver plataformas disponibles
make list-platforms
# Descargar imágenes Docker necesarias
make docker-pull-imagesDistribuciones soportadas:
- ✅ Debian 12 (Bookworm) - Producción, por defecto
- ✅ Ubuntu 22.04 LTS (Jammy) - Producción, por defecto
- 🟡 Debian 13 (Trixie) - Testing (algunas limitaciones)
- ✅ Ubuntu 24.04 LTS (Noble) - Producción, estable
Para agregar más distribuciones a tus tests, consulta:
- docs/MOLECULE_GUIDE.md - Sección "Testing con Múltiples Distribuciones"
- docs/MULTI_DISTRO_TESTING.md - Guía completa multi-distro
- docs/molecule-multi-distro-example.yml - Configuración de ejemplo
- roles/funcional/README.md - Testing específico del rol
Para más información sobre testing, consulta docs/TESTING.md.
En una instalación mínima de Debian, es posible que tu usuario no sea añadido al grupo sudo. Para arreglarlo:
# 1. Conviértete en root
su -
# 2. Añade tu usuario al grupo sudo (reemplaza 'tu_usuario')
gpasswd -a tu_usuario sudo
# 3. Sal de la sesión de root y reinicia la máquina
exit
sudo reboot# Solución: Agregar a packages_exclude_debian_13 en vars.yml
packages_exclude_debian_13:
- nombre-paquete-problemático# Verificar que la imagen existe
docker search geerlingguy/docker-debian13
# Si no existe, comentar esa plataforma en molecule.yml- docs/FREELANCE_DEVELOPER.md - Guía rápida para developers freelance (copy/paste)
- docs/PROFILES.md - Guía para elegir perfil + comandos
- docs/TESTING.md - Guía completa de testing con Molecule
- docs/LESSONS_LEARNED.md - Troubleshooting y lecciones aprendidas
- docs/molecule-multi-distro-example.yml - Ejemplo de configuración
- roles/funcional/README.md - Documentación del rol funcional
- Makefile - Todos los comandos disponibles