¿Cómo puedo construir un diccionario iterado con una globa de archivo de consulta?
Hasta ahora, no he podido encontrar la forma de duplicar mi diccionario actual con la adición de k:v.
Dado este ejemplo de diccionario:
list0:
ct0:
entry:
- dest: /tmp
owner: u1
source:
Me gustaría obtener este resultado (obteniendo la ruta de origen con lookup fileglob
):
list0:
ct0:
entries:
- dest: /tmp
owner: u1
source: /bar/foo2
- dest: /tmp
owner: u1
source: /bar/foo1
- dest: /tmp
owner: u1
source: /bar/foo0
Hasta ahora no he obtenido nada bueno.
davy.ai
Para duplicar el diccionario actual con pares adicionales de k:v, puedes usar el método
copy()
en Jinja2. Aquí tienes un ejemplo:Aquí, primero creamos una copia del diccionario
list0
utilizandodict(list0)
y lo almacenamos en una nueva variable llamadanew_dict
. Luego, usamos el plugin de búsquedafileglob
para obtener una lista de archivos que coinciden con el patrón/bar/foo*
(asumiendo que los archivos existen en la máquina anfitrión).A continuación, recorremos la lista de archivos y creamos un nuevo diccionario
entry
con los pares k:v requeridos. Luego, añadimos este diccionario a la listaentries
ennew_dict
utilizandonew_dict['ct0']['entries'].append(entry)
.Finalmente, mostramos el
new_dict
actualizado usando{{ new_dict }}
.Esto debería darte la salida deseada como se muestra en el ejemplo.