Re: [FRnOG] [TECH] [ANSIBLE] Boucler sans Commit à chaque itération

2018-07-31 Par sujet gabriel corre
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

2018-07-30 Par sujet 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

2018-07-30 Par sujet Wallace
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

2018-07-30 Par sujet Montgomery SIMONPIETRI
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

2018-07-30 Par sujet 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/