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
.
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.
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!
[student<X>@ansible ansible-files]$ ansible node1 -m setup|grep -i kernel
"ansible_kernel": "3.10.0-693.el7.x86_64",
motd-facts.j2
:
Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture
running kernel {{ ansible_kernel }}.
[student1@ansible ~]$ ansible-playbook motd-facts.yml
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