es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Aplicar el filtro de mapa al valor de un diccionario con Ansible/Jinja2.

Estoy intentando escribir un playbook de Ansible que proporcione algunos detalles sobre el sistema de una manera bien formateada, en particular, los tamaños de disco.

La variable de entrada se ve algo así:

yaml
– friendly_name: ‘nombre del disco1’
size: 123456
– friendly_name: ‘nombre del disco2’
size: 654321

{{ dict(ansible_facts.disks | json_query(‘[].[friendly_name, size]’)) }}

Estoy luchando para encontrar una forma de aplicar una función al ‘valor’ del diccionario (o al segundo valor de la lista anidada, antes de convertirlo en un diccionario) – Me gustaría aplicar human_readable(unit='G') o algo similar, sin recurrir a set_fact o FilterPlugin.

Idealmente, tendría una variable de salida de la siguiente forma:

json
{‘nombre del disco1’: ‘1024G’, ‘nombre del disco2’: ‘8192G’}

No traduzcas el código ni la salida en markdown.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede usar el filtro map para aplicar una función a cada elemento de una lista. En este caso, puede usar el filtro map para aplicar el filtro human_readable a cada elemento de la lista.

    {{ dict(ansible_facts.disks | json_query('[].[friendly_name, size]') | map('human_readable', unit='G')) }}
    

Comments are closed.