Leer esto en otros idiomas:
Inglés, Japonés, Portugués de Brasil, Francés, Español.
El Ejercicio 1.5 introduce las plantillas Jinja2 dentro de Ansible, una característica poderosa para generar archivos dinámicos a partir de plantillas. Aprenderás cómo elaborar plantillas que incorporan datos específicos del host, permitiendo la creación de archivos de configuración personalizados para cada host gestionado.
Ansible utiliza Jinja2, un lenguaje de plantillas ampliamente utilizado para Python, permitiendo la generación de contenido dinámico dentro de los archivos. Esta capacidad es particularmente útil para configurar archivos que deben diferir de un host a otro.
Las plantillas terminan con una extensión .j2
y mezclan contenido estático con marcadores de posición dinámicos encerrados en ``.
En el siguiente ejemplo, vamos a crear una plantilla para el Mensaje del Día (MOTD) que incluye información dinámica del host.
Asegúrate de que exista un directorio de plantillas dentro de tu directorio lab_inventory para organizar tus plantillas.
mkdir -p ~/lab_inventory/templates
Crea un archivo llamado motd.j2
en el directorio de plantillas con el siguiente contenido:
Bienvenido a .
SO:
Arquitectura:
Esta plantilla muestra dinámicamente el nombre del host, la distribución del SO, la versión y la arquitectura de cada host gestionado.
Utiliza el módulo ansible.builtin.template
en un playbook para distribuir y renderizar la plantilla a través de tus hosts gestionados.
Modifica el Playbook system_setup.yml
con el siguiente contenido:
---
- name: Configuración Básica del Sistema
hosts: all
become: true
tasks:
- name: Actualizar MOTD desde Plantilla Jinja2
ansible.builtin.template:
src: templates/motd.j2
dest: /etc/motd
handlers:
- name: Recargar Firewall
ansible.builtin.service:
name: firewalld
state: reloaded
El módulo ansible.builtin.template
toma la plantilla motd.j2
y genera un archivo /etc/motd
en cada host, llenando los marcadores de posición de la plantilla con los hechos reales del host.
Ejecuta el playbook para aplicar tu MOTD personalizado en todos los hosts gestionados:
[student@ansible-1 lab_inventory]$ ansible-navigator run system_setup.yml -m stdout
PLAY [Configuración Básica del Sistema] ****************************************
.
.
.
TASK [Actualizar MOTD desde Plantilla Jinja2] **********************************
changed: [node1]
changed: [node2]
changed: [node3]
changed: [ansible-1]
RECAP **************************************************************************
ansible-1 : ok=6 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
node1 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node3 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Verifica los cambios conectándote por SSH al nodo, y deberías ver el mensaje del día:
[rhel@control ~]$ ssh node1
Bienvenido a node1.
SO: RedHat 8.7
Arquitectura: x86_64
Registra este sistema en Red Hat Insights: insights-client --register
Crea una cuenta o ve todos tus sistemas en https://red.ht/insights-dashboard
Último acceso: Lun Ene 29 16:30:31 2024 desde 10.5.1.29
Navegación
Ejercicio anterior - Próximo Ejercicio
Haga clic aquí para volver al Taller Ansible for Red Hat Enterprise Linux