¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Preparar una máquina siempre igual con un guion

Después de esta lección: Puedo preparar una máquina siempre igual con un guion.

Lección de 45 min3 comandosLaboratorio de Ansible: configurar una máquina con un playbook, en el navegador

Veinte ordenadores del aula, todos iguales

Un playbook de Ansible es un archivo que describe cómo debe quedar una máquina. Ansible lo lee y hace los cambios por ti.

Imagina que debes preparar veinte ordenadores del aula con los mismos programas. Hacerlo a mano deja diferencias. Con un guion, todos quedan igual.

Al final de esta lección

Nota

Puedo preparar una máquina siempre igual con un guion.

Palabras clave

PalabraQué significaEjemplo
Playbookel archivo que dice cómo debe quedar una máquina
Tareaun paso del playbook, como instalar un programa
Módulola pieza de Ansible que hace un tipo de tareaansible.builtin.package
Inventariola lista de máquinas que Ansible prepara
Idempotenteque repetirlo no cambia nada más
Plantillaun archivo con huecos que se rellenan con variables

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un playbook dice cómo debe quedar la máquina

Un guion normal dice qué hacer, paso a paso. Un playbook dice cómo debe quedar: este programa instalado, este archivo presente.

Si la máquina ya está así, Ansible no toca nada. Si falta algo, lo hace.

Ejemplo resuelto: a mano o con un guion

CuestiónA manoCon un playbook
Preparar 20 equipos20 veces los mismos pasosUn solo archivo para los 20
Un paso olvidadoUn equipo queda distintoEl archivo no olvida
Saber qué se hizoHay que acordarseSe lee en el archivo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Lee el inventario de máquinas

Comando
cat ~/ansible-lab/inventory.ini

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pregunta a Ansible si llega a la máquina

Comando
ansible localhost -m ping

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Qué dicen el inventario y el ping

El inventario tiene una sola máquina, localhost, que es esta misma. La palabra ansible_connection=local dice que no hace falta conectarse por red.

El ping de Ansible no es el de la red. Comprueba que Ansible puede ejecutar cosas en la máquina. Si todo va bien, contesta SUCCESS y pong.

Cada tarea usa un módulo

Un playbook es una lista de tareas. Cada tarea tiene un nombre y usa un módulo, la pieza que sabe hacer ese trabajo.

Hay módulos para instalar un programa, crear una carpeta, copiar un archivo o rellenar una plantilla. Tú dices el resultado y el módulo se encarga.

Ejemplo resuelto: un playbook leído como tabla

TareaMóduloLo que pide
Instalar un editorpackageel programa nano presente
Crear una carpetafile/etc/aula existe y es de root
Escribir un avisotemplate/etc/aula/aviso.txt sale de una plantilla

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Lee una plantilla del proyecto

Comando
cat ~/ansible-lab/templates/welcome.txt.j2

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Repetirlo no cambia nada más

Un playbook es idempotente: se puede ejecutar dos veces y la segunda no cambia nada. La primera instala el programa. La segunda ve que ya está y lo deja.

Así se puede volver a ejecutar sin miedo. También sirve de prueba: si la segunda vez cambia algo, hay una tarea mal hecha.

Prueba la idea con Python

Código: python
packages = ["nano"]


def ensure(name):
    # Solo añade el programa si todavía no está.
    if name not in packages:
        packages.append(name)
        return "changed"
    return "ok"


print(ensure("htop"))
print(ensure("htop"))
# Cambia "htop" por "tree" y ejecuta otra vez.

Ejemplo resuelto: dos ejecuciones seguidas

TareaPrimera vezSegunda vez
Instalar un editorchangedok
Crear una carpetachangedok
Escribir un avisochangedok
Resumenchanged=3changed=0

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que ejecutar un playbook otra vez repite todo el trabajo. No es así: cada tarea mira primero cómo está la máquina. Solo cambia lo que no coincide con lo pedido. Una orden suelta de consola, en cambio, se repite siempre.

Para ir más lejos: lee antes de cambiar

Antes del laboratorio, piensa en el modo de prueba de Ansible: ansible-playbook site.yml --check --diff. Enseña qué cambiaría sin cambiar nada.

Cuando tengas tu playbook, ejecútalo primero así. Escribe qué te pareció que iba a cambiar.

Sobre este laboratorio y su código: Laboratorio de Ansible: configurar una máquina con un playbook, en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.