web-dev-qa-db-fra.com

Ajouter une variable de liste à une autre liste dans Ansible

est-il possible d'ajouter une liste de variables à une liste statique en ansible?

Je peux définir la liste entière comme une variable:

my_list:
  - 1
  - 2
  - 3

puis l'utiliser dans un playbook comme

something: {{my_list}}

Mais je n'arrive pas à trouver comment faire cela (pseudo code):

list_to_append: 
  - 3
  - 4

puis dans le playbook:

something:
  - 1
  - 2
  - {{append: list_to_append}}

Si cela est en fait impossible, que suggéreriez-vous pour mon cas d'utilisation?

J'ai une liste d'éléments dans un paramètre, mais certains d'entre eux sont optional et devraient être modifiables à l'aide de variables.

En d'autres termes: j'ai default values + optional values pouvant ou non être ajouté via des variables.

Le optional values ne sont pas connus à l'avance, je pourrais en ajouter 1, 2 ou 100, donc ils ne sont pas statiques.

J'ai essentiellement une liste statique par défaut ++ une liste de variables configurables à ajouter.

edit: J'ai trouvé ça mais c'est seulement pour with_items et j'en ai besoin dans un paramètre normal:

  with_flattened:
   - "{{list1}}"
   - "{{list2}}"
24

Si vous voulez vraiment ajouter du contenu, vous devrez utiliser le set_fact module. Mais si vous souhaitez simplement utiliser les listes fusionnées, c'est aussi simple que cela:

{{ list1 + list2 }}

Avec set_fact cela ressemblerait à ceci:

- set_fact:
    list_merged: "{{ list1 + list2 }}"

REMARQUE: Si vous devez effectuer des opérations supplémentaires sur les listes concaténées, assurez-vous de les regrouper comme suit:

- set_fact:
    list_merged: "{{ (list1 + list2) | ... }}"
36
udondan

Les éléments suivants ont fonctionné pour moi avec Ansible 2.1.2.0:

- name: Define list of mappings
  set_facts:
    something:
      - name: bla
        mode: 1

- name: Append list with additional mapping
  set_facts:
    something: "{{ something + [{'name': 'blabla', 'mode': 1}] }}"
3
mdh