¿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

Configura una máquina desde un archivo (Ansible)

Después de esta lección: Puedo escribir un playbook que configure una máquina y que no cambie nada la segunda vez que se ejecuta.

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

Cinco servidores, cinco configuraciones

Una pequeña gestoría tiene cinco servidores web. Cada uno lo montó una persona distinta, a mano, durante dos años. Uno responde despacio y nadie sabe por qué.

La solución es escribir la configuración en un archivo y dejar que una herramienta ponga cada máquina igual. Si un servidor muere, montas otro idéntico en minutos.

Al terminar esta lección

Nota

Puedo escribir un playbook que configure una máquina y que no cambie nada la segunda vez que se ejecuta.

Palabras clave

PalabraQué significaEjemplo
Playbookarchivo que lista cómo deben estar las máquinas
Tareaun paso de un playbook
Móduloherramienta incluida que usa una tareaansible.builtin.file
Inventariola lista de máquinas que se gestionan
Idempotenteseguro de repetir, porque la segunda vez no cambia nada
Plantillaarchivo con huecos que rellenan las variables

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

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

Un playbook no dice "crea una carpeta". Dice "esta carpeta debe existir".

La herramienta mira la máquina, ve qué está ya bien y arregla solo lo que falla. Tú describes el estado final. La herramienta encuentra los pasos.

Esta máquina virtual tiene una carpeta de proyecto. Entra y lee sus archivos. Los Run comparten una terminal, así que el cambio de carpeta se mantiene.

Entra en la carpeta del proyecto

Comando
cd ~/ansible-lab

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

Lee el playbook

Comando
cat site.yml

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

Lee el inventario

Comando
cat 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.

Ejecútalo dos veces y no cambia nada más

Una tarea idempotente se puede ejecutar muchas veces con el mismo resultado. La primera vez hace el trabajo. La segunda no encuentra nada que hacer.

Pruébalo. El siguiente Run escribe un playbook pequeño, practice.yml. Crea una carpeta y una nota en /tmp. Está junto a site.yml y no lo toca.

Escribe tu playbook de práctica

Comando
printf '%s\n' '- hosts: localhost' '  gather_facts: false' '  vars:' '    team: Finanzas' '  tasks:' '    - name: Crear carpeta de notas' '      ansible.builtin.file:' '        path: /tmp/notas-demo' '        state: directory' '    - name: Escribir una nota' '      ansible.builtin.copy:' '        dest: /tmp/notas-demo/nota.txt' '        content: "Hola {{ team }}"' > practice.yml

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

Ejecútalo la primera vez

Comando
ansible-playbook practice.yml

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

Ejecútalo otra vez

Comando
ansible-playbook practice.yml

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

Un error frecuente

Advertencia

Mucha gente cree que un playbook es un script de shell escrito en YAML. Un script hace todos los pasos siempre. Un módulo de playbook comprueba primero y actúa solo si hace falta. Usa el módulo shell solo si no hay otro, porque informa de un cambio en cada ejecución.

Una plantilla rellena huecos con variables

Una plantilla es un archivo con huecos, como {{ site_name }}. Una variable rellena cada hueco al crear el archivo.

Cambia la variable y el archivo cambia, sin editarlo a mano. Puedes fijar una variable en la línea de comandos con -e. Y --check hace una prueba en seco (dry run): dice qué cambiaría, sin cambiar nada.

Lee primero la plantilla del laboratorio. Después cambia el equipo en tu playbook de práctica.

Lee la plantilla del laboratorio

Comando
cat 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.

Ejecútalo con otro equipo

Comando
ansible-playbook practice.yml -e team=Soporte

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

Prueba en seco: ¿qué volvería a cambiar?

Comando
ansible-playbook practice.yml --check --diff

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

Lee la nota

Comando
cat /tmp/notas-demo/nota.txt

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

Para ir más lejos

Escribe un segundo playbook, shell.yml, con una sola tarea que use ansible.builtin.shell para ejecutar date > /tmp/notas-demo/hora.txt. Ejecútalo dos veces y lee el resumen de cada una.

Después añade a la tarea args: con creates: /tmp/notas-demo/hora.txt y ejecútalo otras dos veces. Explica qué cambió en el resumen y por qué.

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.