Laboratorio de roles de Ansible: un rol, handlers y Vault en una VM Ubuntu
Este laboratorio es el segundo nivel del laboratorio Fundamentos de Ansible. Cada alumno recibe una VM Ubuntu propia con ansible-core instalado, un proyecto pequeño y un README, y construye un rol desde cero: sus variables, una plantilla, tareas con etiquetas, un handler y un token guardado en Ansible Vault. La propia máquina es el destino, mediante una conexión local, así que no hace falta nada más.
No se instala nada en el ordenador del alumno. Fundamentos de Ansible va primero: enseña un playbook, un paquete, una plantilla y ejecutar un playbook dos veces, y este laboratorio no los repite.
Lo que aprenden los alumnos
Cómo un playbook se convierte en un rol. El alumno crea las carpetas estándar con ansible-galaxy role init, que funciona sin red, y rellena tasks, defaults, vars, templates, handlers y meta. Descubre en qué orden ganan las variables: los defaults del rol pierden frente a una variable puesta en el play, las vars propias del rol la superan, y un valor dado con -e supera a todas. Escribe una plantilla Jinja2 con un bucle y una condición y la ve con --check y --diff, usa loop, register y when, y ejecuta solo algunas tareas con --tags y --limit.
Un handler al que avisan tres tareas debe ejecutarse una sola vez, y el alumno tiene que hacer que el rol ejecute sus handlers a mitad de camino. La última parte es Ansible Vault: un archivo hecho con ansible-vault, abierto con un archivo de contraseña, y un token que no está escrito en claro en ningún otro sitio. Todo se hace con los módulos propios de Ansible, sobre archivos, carpetas y un usuario del sistema, que una comprobación puede ver.
El proyecto
El alumno empieza en una carpeta con un inventario de dos nombres para esta única máquina, un playbook que usa un rol que todavía no existe y una contraseña falsa de vault que dice no ser un secreto. El playbook ya pone dos variables en el play, así que el orden de precedencia es algo que el alumno debe acertar, no leer. La máquina es pequeña: una CPU, 1 GB de memoria y 10 GB de disco.
Ejecutarlo en tu navegador
Los laboratorios de VM se asignan como tarea de laboratorio en un módulo, y el ejemplo está en la página del laboratorio. El laboratorio solo usa el archivo de Ubuntu, así que la VM de una cuenta gratuita también lo ejecuta.
- Añadir el laboratorio. En un módulo que impartes, añade una tarea y elige la tarjeta de laboratorio de VM Ubuntu. La página muestra una descripción breve de la máquina en lugar de un archivo compose.
- Empezar desde el ejemplo. La página ofrece laboratorios ya hechos para empezar. Elige Ansible roles, handlers and vault. Usar un ejemplo sustituye el texto, y Deshacer devuelve el tuyo.
- Publicar e iniciar tu propia copia. Publica y después pulsa Iniciar. El script setup del laboratorio instala ansible-core desde el archivo de Ubuntu y escribe el proyecto, el playbook, una contraseña falsa de vault y el README, la primera vez que arranca la VM, en uno o dos minutos.
- Abrir el terminal. Abre su terminal y lee README.md en la carpeta personal: dice qué hacer en siete pasos y no da ninguna respuesta.
Una lección básica sobre este laboratorio
Ansible Roles Basics es una lección pequeña que se trabaja en este laboratorio, una VM Ubuntu. Tiene un gancho, un objetivo «Puedo», palabras clave, un calentamiento, una comprobación tras cada idea, un error frecuente y una comprobación final, y cada paso tiene un botón Ejecutar que escribe su comando en el terminal de la máquina. El alumno crea un rol desechable para ver sus carpetas, ejecuta dos veces un playbook pequeño para ver una variable superada por -e, ve cómo un solo handler se ejecuta tras dos avisos y cifra un valor con Vault.
La lección mira alrededor y deja al alumno el rol propio del laboratorio, así que no da ninguna respuesta.
Cómo se califica
El laboratorio tiene una comprobación. Se ejecuta sobre una copia de la máquina guardada tras un arranque limpio. Primero lee el rol: las carpetas estándar, un archivo meta rellenado, seis tareas en el rol y no en el playbook, un handler, un bucle, etiquetas y una plantilla con un bucle for y un if. Rechaza shell, command, raw y script, y una búsqueda que ejecute un programa. Abre el archivo vault con la contraseña del laboratorio y rechaza un token escrito en claro en el proyecto.
Después ejecuta siete veces el propio playbook del alumno con valores que nadie ha visto: en una máquina limpia, otra vez sin nada que cambiar, en seco con una salida que debe mostrar el cambio sin escribir nada, con otros valores, con cada etiqueta y con --limit sobre el host que el play no usa. Cuenta las ejecuciones del handler en la salida real, así que un handler que se ejecuta tres veces se rechaza, y lee los archivos resultantes. La primera línea de lo que imprimió dice por qué.
- Repartirlo. Asigna el laboratorio como cualquier tarea, con fecha de entrega si quieres. Cada alumno recibe una VM propia, que se conserva entre sesiones.
- Ejecutar la comprobación. En la fila de un alumno en la lista de la clase, pulsa Ejecutar la comprobación. Inicia una copia de su máquina guardada que no se vuelve a guardar, ejecuta como root el script de comprobación del laboratorio y muestra si pasó, lo que imprimió y cuándo. Al alumno no se le dice el resultado.
- Calificarlo. Lee la primera línea de lo que imprimió la comprobación: dice qué no está bien, por ejemplo un handler que se ejecutó tres veces, una variable en el sitio equivocado o un archivo vault que no se abre. Devuelve el trabajo con un motivo si necesita más.
La definición en GitHub
El archivo es toda la definición del laboratorio, el mismo texto que ejecuta la plataforma: tamaño, script setup, README y comprobación. Cópialo y cambia el rol, las variables o el handler para hacer un laboratorio más largo.
Prueba este laboratorio, y lo que cuesta
Con una cuenta personal gratuita puedes seguir las lecciones básicas de este laboratorio, con crédito gratuito suficiente cada mes para seguir la mayoría de las lecciones y sin tarjeta. Para una clase, un centro tiene gratis sus primeros 365 días, hasta 50 alumnos, y después paga por alumno y año, con todos los laboratorios incluidos y el profesorado gratis.
Preguntas frecuentes
- ¿El laboratorio necesita una licencia o un Ansible de pago?
- No. ansible-core es de código abierto y está en el archivo de Ubuntu, y se instala cuando arranca la VM del alumno. Nosotros no distribuimos nada de él, y no se descarga nada de otro sitio.
- ¿Por qué no hay ningún servicio que reiniciar?
- El laboratorio muestra un handler por lo que una comprobación puede ver: cuántas veces se ejecutó, contado en la salida de la ejecución real, y un archivo que escribe. El reinicio de un servicio real no lo puede demostrar una comprobación, así que el laboratorio lo deja fuera y lo dice.
- ¿Pueden los alumnos estropear algo?
- Solo su propia copia. La máquina llega al archivo de Ubuntu, PyPI, npm y GitHub, y a nada más. La contraseña de vault es falsa y está en el proyecto para el laboratorio, y el token son datos de demostración, nunca un secreto real.
- ¿Se probó el laboratorio en una VM de alumno real?
- El script setup, los comandos de la lección y la comprobación, con lo que le hacen las respuestas falsas, se ejecutaron en un Ubuntu 26.04 real, en un contenedor que hace de VM. Una VM de alumno arrancada, que parte de una imagen de disco, merece una prueba antes de una clase.