Ansible – establecer un hecho para la clave de un diccionario basado en el valor de la subclave
Traducción:
Pfoef, describir mi problema es bastante difícil. Por favor, tenga paciencia conmigo.
Tengo este diccionario:
yaml
my_dict:
FIRST:
some_key: first_value
SECOND:
some_key: second_value
Mi tarea de Ansible es:
- shell: "echo {{ item.value['some_key'] }}"
register: exec_output
loop: "{{ my_dict | dict2items }}"
Esto es algo en lo que no sé qué hacer
- set_fact:
desired_output: ???
when:
Cuando Ansible se ejecuta, ejecutará el comando shell dos veces, ya que hay 2 elementos en el diccionario.
P: ¿Cómo puedo configurar Ansible para que establezca un hecho y agregue la clave (FIRST o SECOND) si el valor de some_key es por ejemplo ‘second_value’? En este caso de ejemplo, el hecho contendrá “SECOND”.
davy.ai
Para lograr esto, puedes usar la declaración condicional “when” en la tarea set_fact para comprobar si el valor “some_key” es igual a “second_value”. Si es así, configura el hecho “desired_output” con el valor de clave correspondiente (es decir, “FIRST” o “SECOND”).
Aquí hay una solución de ejemplo:
En esta solución, la tarea set_fact recorre cada elemento del diccionario “my_dict” utilizando el filtro dict2items. Luego verifica si el valor “some_key” en ese elemento es igual a “second_value” usando la declaración condicional “when”. Si es así, establece el hecho “desired_output” con el valor de clave correspondiente (es decir, “FIRST” o “SECOND”).
Observa el uso de la notación de punto para acceder al valor “some_key” en el diccionario. Esto es necesario porque la variable “value” en el bucle es en realidad un objeto de diccionario que contiene los pares clave-valor para cada elemento en el diccionario “my_dict”.