Salut,

Ta déclaration est bonne, le with_items est toujours pour le module,
cela signifie qu'il va appeler n fois le module avec chaque argument du
with_items.

Tu es vraiment dans le fonctionnement normal d'Ansible avec cette task là.

Si tu veux faire un seul commit, il faut arriver à préparer une variable
en amont qui te donnera toutes les commandes à passer au Juniper d'un
coup et ces commande seront appelées une seule fois par un seul
lancement de module junos_config.

Je n'ai pas trop testé les modules réseaux, peut être qu'ils ont un
autre mécanisme interne au module (comprendre d'autres variables propres
pour les faire boucler en dehors d'Ansible).

Je ne sais pas si junos_config le support mais préparer un fichier texte
à plat en local avec un template j2 où là tu peux faire toutes les
boucles et filtres que tu veux puis envoyer ce fichier à plat en une
fois à junos_config qui va te faire un seul commit.

A tester


Le 30/07/2018 à 16:14, gabriel corre a écrit :
> Hello la liste,
>
> Je cherche à automatiser une partie des tâches administratives réccurentes
> sur nos infras réseaux en utilisant Ansible.
> Pour ce faire, j'utilise les modules network fournit par Ansible (ici
> junos_config).
>
> Dans l'exemple ci-dessous, j'essaye de modifier la description de plusieurs
> interfaces.
> J'utilise donc une boucle pour modifier séquentiellement les interfaces
> avec le mot-clé "with-items".
> Ca marche plutôt bien, mais je suis obligé de le placer en dehors de mon
> module "junos_config".
> Je me retrouve donc avec un commit à chaque itération... Pour 2 interfaces,
> c'est pas très grave, mais ça peut rapidement devenir problèmatique.
>
> Comment faites vous pour boucler sans le commit à chaque itération ?
>
> Voici comment je procède :
> *********** Playbook *******************
> - name: Change interface description
>   host: 1.1.1.1
>   connection: local
>   vars:
>     int_name: ["ge-0/0/0", "ge-0/0/1"]
>     int_desc: "Deploy by Ansible"
>   roles:
>     - { role: "roles/manage-interface" }
>
> *********** Role *******************
> - name: Change interface description
>   junos_config:
>     provider:
>       username: toto
>       port: 2222
>     lines:
>       - set interfaces "{{ item }}" description {{ int_desc}}
>     confirm: 5
>   with_items: "{{ int_name }}" <<<<<<<<
>
>
> Evidemment, le mettre à l'intérieur du module junos_config ne fonctionne
> pas ;)
>
> Bonne journée,
>
> Gabriel
>
> ---------------------------
> Liste de diffusion du FRnOG
> http://www.frnog.org/


Attachment: signature.asc
Description: OpenPGP digital signature

Répondre à