Ansible

Manipule datos de Ansible usando filtros Jinja

Manipule datos de Ansible usando filtros Jinja

En algunas ocasiones, cuando utiliza Ansible para automatizar varias tareas, es posible que deba transformar y manipular datos. En Ansible, puede utilizar un conjunto de filtros integrados o crear filtros personalizados para manipular, procesar y convertir datos. Ansible utiliza filtros de plantilla jinja2 en segundo plano para permitir a los usuarios crear filtros para datos específicos.

Es importante tener en cuenta que la creación de plantillas de filtro se lleva a cabo en el controlador Ansible y no en los hosts remotos especificados. Esto ayuda a reducir la cantidad de datos transferidos al host remoto después del procesamiento local. Si no está familiarizado con las plantillas jinja, Jinja es un lenguaje de plantillas simple, intuitivo, rápido y seguro para el lenguaje de programación Python desarrollado a partir de las populares plantillas Django del marco de trabajo de Python.

No entraremos en cómo funciona la plantilla jinja, aunque puede ser una ventaja adicional entender cómo funciona con las plantillas.

Consulte el recurso que se proporciona a continuación para obtener más información sobre Jinja.

https: // linkfy.a / jinjaDocs

Cómo funcionan los filtros Ansible

Como se mencionó, el motor de filtrado de Ansible se basa en el modelo de plantillas de Jinja. Esto permite a los usuarios usar estas plantillas para ingresar datos, procesarlos y proporcionar una salida basada en los filtros definidos.

Una vez que los datos se transforman y filtran usando la plantilla definida, puede usarlos para realizar otras tareas en Ansible. Puede obtener más información sobre los filtros en Ansible en el siguiente sitio web:

https: // linkfy.a / AnsibleFilters

Ansible tiene muchos filtros que son muy útiles y aplicables a muchos escenarios diferentes. Una vez que tenga la salida del filtro, puede usarla para realizar otras tareas, como depurar.

La sintaxis general para filtrar datos es la siguiente:

|

Usar filtros Ansible

Ahora veremos ejemplos de filtros Ansible que podemos usar para realizar varias tareas.

NOTA: Como se mencionó anteriormente, Ansible tiene muchos filtros, por lo que no podemos cubrirlos todos en este artículo. En cambio, este tutorial busca brindarle los conceptos básicos del uso de varios filtros Ansible.

Ejemplo 1: filtros de datos de formato Ansible

Los filtros de datos de formato Ansible toman una estructura de datos de salida en una plantilla y usan el filtro especificado para representarlo en el formato llamado en el filtro.

A continuación se muestra un filtro de ejemplo para convertir a JSON y YAML:

variable | to_json
variable | to_yaml

Por ejemplo, considere el siguiente libro de jugadas:

- hosts: todas las tareas:
- shell: gato / tmp / todos.json
registro: resultado
- depurar:
msg: "resultado.stdout | to_nice_yaml "

Ejecutar el libro de jugadas anterior producirá una salida para los datos JSON convertidos a YAML. El siguiente es un resultado de ejemplo:

También puede especificar otros filtros, como to_nice_yaml, para obtener la salida en un formato legible por humanos.

variable | to_nice_json
variable | to_nice_yaml

Con los filtros de formato de datos, puede transformar los datos en varios formatos y utilizarlos para diversas tareas.

Por ejemplo, puede pasar analizar cadenas YAML de varios documentos, como en el libro de jugadas a continuación:

- hosts: todas las tareas:
- shell: gato / tmp / todos.json
registro: resultado
- depurar:
msg: "resultado.stdout | to_yaml | lista"

Ejemplo 2: Filtro predeterminado de Ansible

El filtro predeterminado de Ansible ayuda a establecer valores predeterminados para variables indefinidas. La configuración predeterminada de Ansible falla en variables indefinidas. Por ejemplo, si tiene una variable indefinida, puede decirle a Ansible que establezca un valor predeterminado en lugar de generar un error.

La sintaxis general del filtro predeterminado es la siguiente:

| valor por defecto)

Por ejemplo:

- hosts: todos
vars:
Tareas:
set_fact:
undef_var: "0_var | predeterminado (5)"

El libro de jugadas anterior establecerá el valor de la variable '0_var' en 5 si no se define explícitamente, en lugar de arrojar un error.

Para definir una variable, puede utilizar el filtro obligatorio. Todo lo que necesita hacer es consultar el ejemplo anterior y reemplazar el predeterminado por el obligatorio:

0_var | obligatorio

Ejemplo 3: filtros de depuración de Ansible

Al depurar, puede utilizar el filtro type_debug para obtener información sobre el tipo de variable. El tipo de variable estará en Python, ya que el motor está basado en Python. La sintaxis general del filtro es la siguiente:

variable | type_debug

Ejemplo 4: filtros matemáticos

Los filtros matemáticos de Ansible le permiten realizar consultas relacionadas con las matemáticas. Estos filtros incluyen lo siguiente:

  1. Filtro de logaritmo - variable | log: especifica la base del logaritmo entre paréntesis como variable | log (2)
  2. Filtro de potencia - variable | pow (3): devuelve la variable elevada a la potencia especificada
  3. Filtro absoluto - variable | abs: devuelve el valor absoluto de la variable pasada
  4. Filtro raíz - variable | root: devuelve la raíz cuadrada de la variable. Para especificar explícitamente la raíz, pase el valor entre paréntesis; por ejemplo, raíz cúbica variable | raíz (3)

Estos filtros matemáticos pueden ser bastante útiles, especialmente cuando se trata de grandes cantidades de datos y operaciones matemáticas instantáneas.

Ejemplo 5: filtros hash

Los filtros hash de Ansible le permiten obtener el hash de una cadena o datos pasados. En la mayoría de los casos, no necesitará estos filtros, pero están disponibles para su uso si surge la necesidad. Estos filtros incluyen lo siguiente:

  1. Sha1 - var | hash ("sha1")
  2. Sha256 / sha512 - var | password_hash ("sha256 / 512")
  3. Md5 - var | hash ("md5")
  4. Suma de comprobación de cadena - var | suma de comprobación

Otros filtros útiles

Como habrás notado, Ansible tiene muchos filtros. Algunos filtros de Ansible que pueden resultarle útiles incluyen los siguientes:

  • Filtro de división de URL - “[Correo electrónico protegido]: // linuxhint.com: 8080 / index.html?query = linux ”| urlspilt ("nombre de host"), - devuelve "linuxhint.com ”
  • Unirse a la lista - lista | join: se usa para agregar una lista en una cadena var
  • Ruta de directorio - ruta | dirname
  • Expandir una tilde - ruta | expanduser

Conclusión

Los filtros Ansible son útiles cuando realiza tareas de depuración o necesita información específica sin escribir demasiado. Debido a que Ansible admite filtros personalizados, estos filtros pueden ser especialmente útiles en casos de uso específicos.

Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...