Bonjour,

Voici comment le faire pour JUNOS avec Ansible. Je n’ai pas eu l’occasion
de tester avec EOS, mais la meme approche s'applique au deux NOS sans gros
changement.



Comme il y deux NOS, je ne presente pas ci dessous l'approche qui a ete
développé specifiquement pour repondre a ce besoin dans un contexte Junos
only (Jsnapy).



My 2 cents.



Exécution de commandes show. Sauvegarde des outputs. Revue par un humain.
Il y a plusieurs outils.



Exemple : Ce playbook https://github.com/ksator/
junos-automation-with-ansible/blob/master/junos_cli/pb_
collect_cli_output.yml prend en input la liste des commandes show ici
https://github.com/ksator/junos-automation-with-ansible/
blob/master/junos_cli/cli.yml et l’exécute sur cet inventaire
https://github.com/ksator/junos-automation-with-ansible/blob/master/hosts
et sauve l’output ici  https://github.com/ksator/
junos-automation-with-ansible/tree/master/junos_cli/cli pour une revue par
un humain.

La meme chose peut etre faite avec un module ansible pour EOS.



Puis ajouter un push automatisé vers un server Git (Revue par un humain sur
le serveur Git via les fonctions « history »):



Exemple : on fait exactement la meme chose que dans la section précédente.
En plus, a la fin, on demande au contenu d’automatisation de faire un git
add/push/commit pour uploader le tout vers un repo git:
https://github.com/ksator/junos-automation-with-ansible/
blob/master/shell/pb_git.yml  Ainsi les data collectes sont sur le serveur
git en on voit les diff facilement.



Il y a aussi un autre workflow qui consiste a:   Exécution des commandes
show. Comparaison automatisée des output VS un état désiré décrit (par
exemple, l’état des session BGP doit être « Established »). La source of
Truth est l’état décrit, et non plus le réseau.  Ce n'est pas ce qui est
demande mais c'est une approche interressante aussi.  Il y a plusieurs
outils.



Exemple : Ce playbook https://github.com/ksator/
junos-automation-with-ansible/blob/master/junos_command/pb_
check_op_states.yml passe des commandes show et parse l‘output et vérifie
si la condition décrite est vraie. Dans cet exemple, le playbook vérifie
que les interfaces sont up, que les voisins LLDP sont ceux souhaites (pas
d’erreur de câblage), que les sessions BGP sont established, que des routes
sont apprises en BGP, et que les ping vers des routes apprises en BGP
repondent … L’inventaire est la https://github.com/ksator/
junos-automation-with-ansible/blob/master/hosts et les variables
(description de la liste de voisins BGP/LLDP …) sont la
https://github.com/ksator/junos-automation-with-ansible/
tree/master/host_vars



La meme chose peut etre faite avec un module ansible pour EOS.



Exemple, avec Napalm dans le cas ou un getter Napalm existe pour les deux
network operating system.



Ce fichier est un template qui décrit l’état désiré
https://github.com/ksator/junos-automation-with-NAPALM/
blob/master/validate.j2 sous la forme de l’output du getter.



Ce template est « renderisé » pour chaque device, et le getter est exécuté,
et la réponse du getter est comparée avec le template  « renderisé ». Ceci
peut se faire en python https://github.com/ksator/
junos-automation-with-NAPALM/blob/master/validator.py  ou ansible
https://github.com/ksator/junos-automation-with-NAPALM/
blob/master/pb.install-conf.yml#L33-L53



Bien cordialement,



Khelil







*From:* frnog-requ...@frnog.org [mailto:frnog-requ...@frnog.org
<frnog-requ...@frnog.org>] *On Behalf Of *marc celier
*Sent:* Monday, March 19, 2018 11:11 AM
*To:* frnog@frnog.org
*Subject:* [FRnOG] [TECH] Automatisation des comparaisons de "show ... blah
blah"





Bonjour,



Nous devons mener une maintenance sur l'ensemble du reseau, ce qui implique
un nombre important d'equipements. avant et apres la maintenance nous
devons executer un nombre important de commandes "show" et realiser des
comparaisons visuels pour detecter un eventuel changement ou
dysfonctionnement. c'est pas Top car on peut toujours manquer une info
critique a cause de la masse de donnees a comparer.



J'imagine qu'il y a des outils comme Ansible ou la commande diff qui
pourrait etre un debut de piste, mais n'ayant jamais travaille avec ces
outils je n'ai pas une claire vision de la solution globale. si vous avez
deja mis en place quelque chose de similaire pouvez vous s'il vous plait
partager votre experience et pistes en la matiere (environnement Juniper et
Arista)



- execution des commandes show

- comparaison des commandes show

-generation d'un rapport sur les differences



Je vous remercie par avance.

---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/

Répondre à