Verificamos profundamente cada uno de los escritos de nuestra página web con la meta de mostrarte en todo momento información veraz y actualizada.
Solución:
Intentaría evitar esto, pero si la lista condicional es absolutamente necesaria, puedes usar este truco:
---
- hosts: localhost
gather_facts: no
vars:
a: 1
b: 1
c: 2
some_dictionary:
app: " '["something", "something else"' + (a + b == c) "
tasks:
- debug: var=some_dictionary.app
Formará un array-me gusta string (["item1","item2","item3"]
) y ansible variable templater lo convertirá en una lista antes de asignarlo a app
.
Puede filtrar todos falso valores con select(), pero recuerde aplicar el filtro list() después. Este parece un enfoque más fácil y más legible para mí:
- name: Test
hosts: localhost
gather_facts: no
vars:
mylist:
- " (true) "
- " ternary('b','') "
- " (true) "
tasks:
- debug:
var: mylist|select|list
Resultado:
TASK [debug] *****************************************************************************************************************************************************************************************************************
ok: [localhost] => list": [
"a",
"c"
]
Reemplazar (true)
y (false)
con la prueba que quieras.
¿Hay alguna razón por la que tienes que hacer todo de una vez?
Esto es bastante fácil si especifica los elementos adicionales para agregar en vars separados, ya que puede hacer list1 + list2.
---
- hosts: localhost
gather_facts: False
connection: local
vars:
mylist:
- one
- two
mycondition: False
myconditionalitem: foo
tasks:
- debug:
msg: " mylist + [myconditionalitem] if mycondition else mylist "
Recuerda compartir este tutorial si te fue de ayuda.