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.
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 filtrohuman_readable
a cada elemento de la lista.