Ansible – Crear un nuevo diccionario basado en elementos coincidentes en una lista.
Hay una lista:
mylist: ['a_value', 'something_else']
Hay un dict:
my_dict:
a_value:
something: true
bar:
foo: false
something_else:
placeholder: true
Hay una tarea de Ansible para establecer un hecho para un nuevo diccionario:
- name: "Crear un nuevo diccionario, cuando el nombre (s) en la lista coincida con la clave en el diccionario"
set_fact:
new_dict: "{{ new_dict | default({}) | combine({item.key: item.value}) }}"
loop:
- "{{ my_dict | dict2items }}"
- "{{ my_list }}"
when: my_list??? item
P: ¿Cómo configuraría Ansible para crear un nuevo diccionario, cuando los nombres coincidan con la clave del diccionario?
En este ejemplo, la salida deseada es:
new_dict:
a_value:
something: true
something_else:
placeholder: true
davy.ai
Para configurar Ansible para crear un nuevo diccionario cuando el/los nombre/s coincida/n con la clave en el diccionario, use la siguiente tarea:
Esta tarea recorre las claves en
my_dict
y los elementos enmy_list
, y si la clave coincide con un elemento enmy_list
, se añade ese par clave-valor anew_dict
. La instrucciónwhen
asegura que el bucle sólo se ejecute para las claves que coincidan con un elemento enmy_list
. El resultado delnew_dict
sólo contendrá las claves que coincidan con un elemento enmy_list
.