es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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”.

Tags:  ,

Answer

  1. Avatar for 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:

    - shell: "echo {{ item.value['some_key'] }}"
      register: exec_output
      loop: "{{ my_dict | dict2items }}"
    
    - set_fact:
        desired_output: "{{ item.key }}"
      loop: "{{ my_dict | dict2items }}"
      when: item.value.some_key == 'second_value'
    

    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”.

Comments are closed.