Re: [FRnOG] [TECH] [ANSIBLE] Boucler sans Commit à chaque itération
Effectivement, la séparation des rôles avec un template J2 dans lequel je boucle pour ensuite pusher la config dans mon second rôle me parait bien. Le "set config" me paraissait plus simple pour commencer. Le problème c'est bien d'éviter de rester dans le POC infini quand on commence à vraiment pousser en prod... Merci à tous pour vos réponses ! Gabriel 2018-07-30 18:28 GMT+02:00 Thomas Quinot : > * gabriel corre, 2018-07-30 : > > > - name: Change interface description > > junos_config: > > provider: > > username: toto > > port: > > lines: > > - set interfaces "{{ item }}" description {{ int_desc}} > > confirm: 5 > > with_items: "{{ int_name }}" > > Tu peux faire la boucle dans un template Jinja2 : > > - name: Change interface description >junos_config: > provider: >username: toto >port: > lines: > >{%for item in int_name%} >set interfaces "{{ item }}" description {{ int_desc}} > >{%endfor%} > confirm: 5 > > Thomas. > > --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] [ANSIBLE] Boucler sans Commit à chaque itération
* gabriel corre, 2018-07-30 : > - name: Change interface description > junos_config: > provider: > username: toto > port: > lines: > - set interfaces "{{ item }}" description {{ int_desc}} > confirm: 5 > with_items: "{{ int_name }}" Tu peux faire la boucle dans un template Jinja2 : - name: Change interface description junos_config: provider: username: toto port: lines: > {%for item in int_name%} set interfaces "{{ item }}" description {{ int_desc}} {%endfor%} confirm: 5 Thomas. --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] [ANSIBLE] Boucler sans Commit à chaque itération
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: > 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/ signature.asc Description: OpenPGP digital signature
Re: [FRnOG] [TECH] [ANSIBLE] Boucler sans Commit à chaque itération
Hello, Le plus simple serait de séparer les roles : un role pour creer la config à pusher via un template en jinja2 avec loop et dictionnaire un role pour pusher la config créée perso plutot que d'utiliser du "set config" en junos, je prefere une config en yml et un load merge pour le role qui push le junos. Plus rapide, plus lisible et surtout je balance plus de 1000 lignes en une fois sans que ça prenne un temps fou à pusher. Montgomery 2018-07-30 16:14 GMT+02:00 gabriel corre : > 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: > 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/ > --- Liste de diffusion du FRnOG http://www.frnog.org/
[FRnOG] [TECH] [ANSIBLE] Boucler sans Commit à chaque itération
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: 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/