El nombre de host de este servidor web es ansible_hostname
Table of Contents
Cómo crear plantillas en Ansible para crear configuraciones en nodos administrados-Parte 7
En esta Parte 7. de la serie Ansible, aprenderá a crear y usar plantillas en Ansible para crear configuraciones personalizadas en nodos administrados. La creación de plantillas en Ansible es una forma fácil y amigable de enviar configuraciones personalizadas a nodos administrados que ejecutan diferentes sistemas con una edición mínima de los archivos del libro de jugadas.
¿Qué es la creación de plantillas en Ansible?
Para tener una mejor idea de lo que es una plantilla, consideremos que un gerente de TI redacta un correo electrónico para invitar a su departamento a un cóctel. El correo electrónico se envía a cada uno de los miembros y también los invita a etiquetarse junto con sus cónyuges.
El correo electrónico se ha personalizado de manera que el cuerpo del correo electrónico sigue siendo el mismo, pero los destinatarios y los nombres de sus respectivos cónyuges varían. El correo electrónico se convierte en la plantilla. mientras que los destinatarios y los respectivos cónyuges son variables.
Ese fue un ejemplo genérico. Ansible utiliza Jinja2. que es un moderno motor de plantillas para marcos de Python que se utiliza para generar contenido o expresiones dinámicas. La creación de plantillas es extremadamente útil al crear archivos de configuración personalizados para varios servidores, pero únicos para cada uno de ellos.
Jinja2. usa las llaves dobles … para encerrar una variable que ha sido definido. Para comentarios, use {# # y para declaraciones condicionales use %…%.
freestar.config.enabled_slots.push
Supongamos que tiene un modelo de datos de VLAN. en su red con sistemas host que desea enviar a sus respectivas VLAN. como se muestra.
vlans:-id : 10 nombre: LB-id: 20 nombre: WB_01-id: 30 nombre: WB_02-id: 40 nombre: DB
Para representar esta configuración, la plantilla jinja2. correspondiente llamada vlans .j2. aparecería como se muestra. Como puede ver, las variables vlan.id. y vlan.name. se han encerrado entre llaves.
vlan vlan.id name vlan.name
Poniéndolo todo junto en un libro de jugadas que coloca diferentes máquinas host, esto aparecería como se muestra:
-tareas de hosts:-nombre: Plantilla de configuración de VLAN de representación: src: vlans.j2 dest: “vlan_configs/Inventory_hostname. conf”
Ejemplo 1: Configuración de servidores web en diferentes distribuciones
En este ejemplo, crearemos archivos index.html. que mostrar información sobre el nombre de host. y el sistema operativo de 2 servidores web que ejecutan CentOS y Ubuntu.
Configuración de Ubuntu 18-Dirección IP: 173.82.202.239 CentOS 7-Dirección IP : 173.82.115.165
El servidor web Apache ya se ha instalado en ambos servidores.
Para CentOS 7
Página web Apache en CentOS 7 para Ubuntu 18.04
Página web Apache en Ubuntu 18.04
Así que creemos un libro de jugadas test_server.yml. como se muestra:
—-hosts: todos se vuelven: sí tareas:-nombre: Instalar index.html template: src: index.html.j2 dest:/var/www/html/index.html mode: 0777
Nuestra plantilla de archivo Jinja. es index.html.j2. que se enviará al archivo index.html. en cada servidor web. Recuerde siempre poner la extensión .j2 al final para indicar que es un archivo jinja2.
Ahora creemos el archivo de plantilla index.html.j2.
El nombre de host de este servidor web es ansible_hostname
Se ejecuta en el ansible_os_family sistema
Esta plantilla es un archivo HTML básico en el que ansible_hostname. y ansible_os_family. son variables integradas que se sustituirán por los respectivos nombres de host y sistemas operativos de los servidores web individuales en el navegador. .
Ahora, ejecutemos el manual.
# ansible-playbook test_server.yml
Crear archivo de plantilla Ansible
Ahora volvamos a cargar las páginas web para CentOS 7. y servidores web Ubuntu.
Para CentOS 7
Verificar página web de Apache en CentOS 7 para Ubuntu 18.04
Verificar la página web Apache en Ubuntu 18.04
Como puede ver, hay información diferente sobre el nombre de host y la familia y de SO se ha mostrado en cada servidor. ¡Y así de genial es la plantilla Jinja2.
FILTROS:
A veces, puede decidir sustituir el valor de una variable con una cadena que aparece en un de cierta manera.
Ejemplo 1: Hacer que las cadenas aparezcan en mayúsculas/minúsculas
Por ejemplo, en el ejemplo anterior, podemos decidir hacer que las variables de Ansible aparezcan en mayúsculas. Para hacerlo, agregue el valor superior a la variable. De esta forma, el valor de la variable se convierte a formato de mayúsculas.
superior => CENTOS 7 upper => REDHAT
Make String Uppercase
De manera similar, puede convertir la s tring la salida a minúsculas agregando el argumento inferior.
inferior => centos 7 lower => redhat
Hacer una cadena en minúsculas Ejemplo 2: Reemplazar una cadena con una otro
Además, puede reemplazar una cadena por otra.
Por ejemplo:
El título de la película es movie_name => El título de la película es Ring.
Para reemplazar la salida con otra cadena, use el argumento de reemplazo como se muestra:
El título de la película es replace (“Ring”, “Heist”) => El título de la película es Heist.
Ejemplo 3: Listas y filtros de conjuntos
Para recuperar el valor más pequeño de una matriz, utilice el filtro min.
min => 2
De manera similar, para recuperar el número más grande, use el filtro max.
[2, 3, 4, 5, 6, 7] => 7
Para mostrar valores únicos, utilice el filtro único.
único => 2, 3
Utilice el filtro aleatorio. para obtener un número aleatorio entre 0 y el valor.
random => Algún número aleatorio
LOOPS:
Al igual que en los lenguajes de programación, tenemos bucles. en Ansible Jinja2.
Por ejemplo, para generar un archivo que contenga una lista de números, use el bucle for. como se muestra en el siguiente ejemplo:
Ejemplo 1: % para el número en [0, 1, 2, 3, 4, 5, 6, 7]% number % end for%
También puede combinar el ciclo for con declaraciones if-else. para filtrar y obtener ciertos valores.
Ejemplo 2: % para número en [0, 1, 2, 3, 4, 5, 6, 7]% % si número == 5% número % endif% % endfor%
Y eso es todo para esta conferencia. Únase a nosotros en el siguiente tema donde nos aventuraremos a trabajar con variables y hechos ansible.