ansible

¿Cómo puedo usar una condición para establecer un valor variable en Ansible?



(1)

Tengo dos variables: a , b .

Quiero asignar un valor a una variable c función de la cual: b contiene un valor numérico mayor.

Esto es lo que probé:

- set_fact: c: "test1" when: a <= b - set_fact: c: "test2" when: b <= a

Parece que siempre establece c en test1 no test2 .


  • Usando la expresión if-else :

    - set_fact: c: "{{ ''test1'' if (a >= b) else ''test2'' }}"

  • Usando operador ternario:

    - set_fact: c: "{{ (a >= b) | ternary (''test1'', ''test2'') }}"

  • Usando su propio código que es correcto (vea el aviso a continuación)

Cualquiera de los métodos anteriores requiere que ambas variables utilizadas en comparación sean del mismo tipo para dar resultados sensibles. Y para una comparación numérica, requieren que ambos valores sean enteros.

El código de la pregunta:

- set_fact: c: "test1" when: a <= b - set_fact: c: "test2" when: b <= a

funciona correctamente en dos casos:

  • ambos: a y b son enteros
  • ambos: a y b son cadenas que contienen valores numéricos con el mismo número de dígitos

Sin embargo, produce resultados inesperados cuando:

  • uno de los valores es string y el otro entero
  • los valores de cadena contienen valores numéricos con diferente número de dígitos