Saltar al contenido

Agregar un elemento a una lista dependiente de un condicional en ansible

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *