¿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
yb
son enteros -
ambos:
a
yb
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