Manipulación de datos en Ansible – Transformación de listas
Necesito transformar una lista simple en una compleja.
La lista simple se ve así:
customers:
- customer01-node01.private.foo.it
- customer02-node01.private.foo.it
- customer04-node03.private.foo.it
- customer03-node02.private.foo.it
- customer05-node02.private.foo.it
- customer01-node04.private.foo.it
- customer02-node04.private.foo.it
- customer04-node06.private.foo.it
- customer03-node05.private.foo.it
- customer05-node05.private.foo.it
Estoy tratando de encontrar una forma de obtener una lista compleja, agrupando los nodos por cliente.
El resultado final que estoy buscando es el siguiente:
customers_list:
- customer: customer01
nodes:
- node01.private.foo.it
- node04.private.foo.it
- customer: customer02
nodes:
- node01.private.foo.it
- node04.private.foo.it
- customer: customer03
nodes:
- node02.private.foo.it
- node05.private.foo.it
- customer: customer04
nodes:
- node03.private.foo.it
- node06.private.foo.it
- customer: customer05
nodes:
- node02.private.foo.it
- node05.private.foo.it
davy.ai
Para transformar la lista simple en una más compleja, puedes utilizar Ansible y las plantillas Jinja2. Aquí están los pasos que puedes seguir:
template
en Ansible para renderizar la plantilla y guardarla como una variable:customers_result
contendrá la lista transformada en el campostdout
, que puedes utilizar en tu playbook según sea necesario. Por ejemplo, puedes imprimirlo utilizando el módulodebug
:¡Y eso es todo! Con este enfoque, puedes transformar fácilmente una lista simple en una más compleja utilizando Ansible y las plantillas Jinja2.