Read this in other languages:
English, 日本語, Portugues do Brasil, Française, Español.
Este ejercicio cubrirá las plantillas de Jinja2. Ansible utiliza plantillas de Jinja2 para modificar archivos antes de que se distribuyan a hosts administrados. Jinja2 es uno de los motores de plantillas más utilizados para Python (http://jinja.pocoo.org/).
Cuando se ha creado una plantilla para un archivo, se puede implementar en los hosts administrados mediante el módulo template
, que admite la transferencia de un archivo local desde el nodo de control a los hosts administrados.
Como ejemplo de uso de plantillas, cambiará el archivo motd para que contenga datos específicos del host.
En primer lugar, cree el directorio templates
que contendrá los recursos de plantilla en ~/ansible-files/
:
[student<X>@ansible ansible-files]$ mkdir templates
A continuación, en el directorio ~/ansible-files/templates/
, cree el archivo de plantilla motd-facts.j2
:
Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture.
El archivo de plantilla contiene el texto básico que se copiará más adelante. También contiene variables que se reemplazarán en las máquinas de destino individualmente.
A continuación, necesitamos un playbook para usar esta plantilla. En el directorio ~/ansible-files/
, cree el Playbook motd-facts.yml
:
---
- name: Fill motd file with host data
hosts: node1
become: true
tasks:
- template:
src: motd-facts.j2
dest: /etc/motd
owner: root
group: root
mode: 0644
Usted ha hecho esto un par de veces por ahora:
-
Entender lo que hace el Playbook.
-
Ejecutar el Playbook
motd-facts.yml
. -
Inicie sesión en node1 a través de SSH y compruebe el mensaje del contenido del día.
-
Cierre la sesión del nodo1.
Debería ver cómo Ansible reemplaza las variables con los facts que descubrió del sistema.
Agregue una línea a la plantilla para listar el kernel actual del nodo administrado.
- Encuentra un fact que contenga la versión del kernel usando los comandos que aprendiste en el capítulo "Ansible Facts".
Consejo
Hacer un
grep -i
para el kernel
-
Modificar la plantilla para utilizar el fact que encontró.
-
Ejecute el Playbook de nuevo.
Advertencia
Solución a continuación!
- Encuentra el fact:
[student<X>@ansible ansible-files]$ ansible node1 -m setup|grep -i kernel
"ansible_kernel": "3.10.0-693.el7.x86_64",
- Modificar la plantilla
motd-facts.j2
:
Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture
running kernel {{ ansible_kernel }}.
- Ejecute el playbook.
[student1@ansible ~]$ ansible-playbook motd-facts.yml
- Verifique el nuevo mensaje a través del login por SSH al
node1
.
[student1@ansible ~]$ ssh node1
Welcome to node1.
RedHat 8.1
deployed on x86_64 architecture
running kernel 4.18.0-147.8.1.el8_1.x86_64.
Navegación
Ejercicio anterior - Próximo Ejercicio
Haga clic aquí para volver al Taller Ansible for Red Hat Enterprise Linux