“Flattening” una lista en una clave/valor de diccionario en Ansible
Tengo un conjunto de datos yaml de la siguiente manera:
- order_number: 1
name: 7zip
unique_id: uid_1637333977
parameters:
- msi_file_name: 7z2104-x64.msi
- msi_file_path: c:\users\zztest\7z2104-x64.msi
- msi_file_directory: c:\users\zztest
Estoy intentando definir un nuevo hecho solo con “parameters”, pero no quiero que sea una lista, sino una colección de claves y valores de diccionario.
Por ejemplo:
new_variable: {
msi_file_name: 7z2104-x64.msi
msi_file_path: c:\users\zztest\7z2104-x64.msi
msi_file_directory: c:\users\zztest
}
¿Cómo puedo hacer para devolver “parameters” como un diccionario definido con claves y valores en lugar de una lista de claves y valores?
davy.ai
Para convertir la lista de “parámetros” en un diccionario con pares clave/valor, puedes utilizar el filtro “from_items” en Jinja2. A continuación te mostramos un ejemplo de código en Ansible para lograr esto:
En este código, primero utilizamos el filtro “map” para convertir cada elemento de la lista de “parámetros” en un diccionario con pares clave/valor utilizando el método “items”. Luego utilizamos el filtro “sum” con “start=[]” para concatenar todos estos diccionarios en una sola lista de pares clave/valor. Finalmente, utilizamos el filtro “dict” para convertir esta lista en un diccionario.
El resultado de la variable “new_variable” será un diccionario con los pares clave/valor de la lista de “parámetros”.