13 minutes
Introduction_to_PyATS
Εισαγωγή
Το PyATS είναι ένα software framework για την κατασκευή αυτόματων διαδικασιών ελέγχου για δικτυακές συσκευές, ή όπως λέει η Cisco, ένα ολοκληρωμένο οικοσύστημα αυτοματισμού και δοκιμών, προσφέροντας όλα τα εργαλεία για τις καθημερινές DevOps εργασίες των μηχανικών δικτύων, δίνοντας εργαλεία είτε για τη γραμμή εντολών, είτε με τη χρήση libraries, είτε μέσω ενός σύγχρονου GUI Dashboard.
Είναι εσωτερικό εργαλείο της Cisco εδώ και 10 χρόνια (2012) για την δοκιμή των προϊόντων και συστημάτων τους, το οποίο αποφάσισαν να διαθέσουν στο ευρύ κοινό από το 2017. Είναι φτιαγμένο σε Python και αποτελείται από διάφορα layers, τα οποία μπορούν να λειτουργούν είτε σε συνδυασμό είτε ανεξάρτητα.
Στο παρόν post θα εξηγήσουμε σύντομα τί είναι το PyATS και από τί αποτελείται, ποιοι είναι οι βασικοί τρόποι χρήσης του και θα σας δώσουμε κατευθύνσεις για το που μπορείτε να μάθετε περισσότερα. Το πρώτο που πρέπει να αναφέρουμε, είναι: προσοχή πως θα το προφέρετε:
Δεν μπορώ όμως να σκεφτώ καλύτερη εισαγωγή από την παρουσίαση του μέχρι πρότινος PyATS team leader, Siming Yuan:
Εδώ σχετικό post του στο Cisco Developer Blog - https://blogs.cisco.com/developer/pyats-genie-transform
Κι εδώ το Getting Started από το Devnet Documentation - https://developer.cisco.com/docs/pyats-getting-started/
Η ομάδα του Cisco PyATS αποτελείται από εξαιρετικούς μηχανικούς οι οποίοι είναι πάντα πρόθυμοι να προσφέρουν βοήθεια αρκεί να τους στείλετε ένα email στο pyats-support-ext@cisco.com Επίσης, μπορείτε να κάνετε join στο σχετικό webex channel εδώ: https://eurl.io/#r18UzrQVr ή να το βρείτε από τη λίστα εδώ: https://eurl.io/
Framework Layers
Όπως αναφέραμε το PyATS αποτελείται από πολλά κομμάτια τα οποία μπορείτε να θεωρήσετε πως λειτουργούν σε ανεξάρτητα στρώματα, όπως παρακάτω:
Τα βασικά layers λοιπόν είναι:
- PyATS Core Toolbox
- PyATS SDK (π.χ. Genie)
- Business Logic Tools
Μπορείτε να χρησιμοποιήσετε μόνο το core toolbox, ή τα libraries ή όλα μαζί με το business logic, είτε από τη γραμμή εντολής (Genie CLI), είτε μέσω CI/CD pipelines είτε φτιάχνοντας τη δική σας business logic ενσωματώνοντας όλα σε python scripts.
Πως να το εγκαταστήσετε:
To PyATS είναι διαθέσιμο:
- Ως python package - https://pypi.org/project/pyats/
- Σε διάφορα flavors από docker containers - https://hub.docker.com/r/ciscotestautomation/pyats/
- Ως ολοκληρωμένο πακέτο με GUI - Xpresso
Μπορείτε να τρέξετε το python package σε Linux & Mac αλλά όχι σε Windows. Αν θέλετε να τρέξετε το PyATS σε Windows, θα πρέπει να χρησιμοποιήσετε το WSL (Windows Subsystem for Linux) ή να το τρέξετε μέσω Docker (τότε όμως στην ουσία δεν το τρέχετε σε Windows).
PyATS Features
Γενικά
Τα features του PyATS είναι πραγματικά ατελείωτα. Αξίζει να επενδύσει κανείς χρόνο για να τα εντάξει ως “βέλη” στη “φαρέτρα” του.
Platform Agnostic Models
Οι μηχανικοί του PyATS έχουν κατασκευάσει μοντέλα δεδομένων για τις δικτυακές συσκευές που δεν είναι δεμένα με συγκεκριμενους κατασκευαστές και μοντέλα και μόνο. Π.χ. το ospf routing model δεν είναι ειδικά για Cisco ή Juniper κλπ. Έτσι μπορείτε να χρησιμοποιήσετε το PyATS με εξοπλισμό που δεν είναι cisco, ακόμα και linux hosts.
Ωστόσο για να μπορέσετε να κάνετε interface με τις συσκευές και να αλληλεπιδράσετε μαζί τους και με τα μοντέλα, χρειάζεται να υπάρχει και το ενδιάμεσο layer που μιλάει με τις συσκευές. Αυτό πρέπει είτε να είναι ήδη διαθέσιμο (parse, learn, config) ή μπορείτε να το κατασκευάσετε!
Device connection
To PyATS χρησιμοποιεί το Unicon library (https://developer.cisco.com/docs/unicon/) για να “μιλήσει” με τις συσκευές μέσω SSH & Telnet. Μπορείτε να καθορίσετε τις παραμέτρους σύνδεσης ανάλογα με το τί υποστηρίζεται από τις συσκευές.
Η σύνδεση προς τις συσκευές γίνεται σειριακά, αλλά μπορεί να γίνει και παράλληλα υπό προϋποθέσεις (pyats pcall - https://pubhub.devnetcloud.com/media/pyats/docs/async/pcall.html) για γρηγορότερη εκτέλεση και λήψη αποτελεσμάτων.
Device Inventory - Testbed
Το PyATS χρησιμοποιεί μια δομή που ονομάζει testbed για την καταχώρηση των συσκευών, η οποία εφόσον φορτωθεί από αρχείο, πρέπει να είναι YAML αρχείο (.yml) με συγκεκριμένη δομή https://pubhub.devnetcloud.com/media/pyats/docs/topology/creation.html
Εναλλακτικά μπορείτε είτε να παράγετε το testbed μόνο απαντώντας με ερωτήσεις στο cli ή από ένα αρχείο excel ή ακόμα και δυναμικά στη μνήμη μέσω python. Υπάρχουν κι άλλες δυνατότητες εισάγοντας δεδομένα από άλλα εργαλεία ή frameworks.
Δείτε ένα παράδειγμα κατασκευής pyats testbed σε αρχείο διαβάζοντας δεδομένα από το Cisco Prime Infrastructure εδώ: https://github.com/itheodoridis/itheodoridis-createtestbedsfromPI
Φυσικά ένα testbed είναι κάτι περισσότερο από ένα κατάλογο συσκευών. Μπορεί να ορίζει ένα πλήρες network topology:
Genie CLI vs Python Library
Μπορείτε να εκτελέσετε τις λειτουργίες που υποστηρίζει το PyATS είτε μέσω CLI (περιορισμένες λειτουργίες, π.χ. genie parse, genie learn, genie diff) είτε μέσω python, όπου μπορείτε να σχηματίσετε τη δική σας λογική και να ελέγξετε απόλυτα την εισαγωγή και εξαγωγή δεδομένων.
Στην περίπτωση χρήσης του Genie CLI, τα αποτελέσματα αποθηκεύονται ως αρχεία κειμένου στο δίσκο σε ξεχωριστά directories (ορίζονται κατά την εκτέλεση).
Μπορείτε να χρησιμοποιήσετε το ίδιο directory εκτελώντας πολλαπλές λειτουργίες για όλα τα devices, όπου θα αποθηκεύονται δύο αρχεία ανά συσκευή και λειτουργία, ένα δομημένο και ένα με την raw μορφή που θα τα παίρνατε από τη γραμμή εντολής αν είχατε συνδεθεί οι ίδιοι στη συσκευή και είχατε εκτελέσει τις συγκεκριμένες λειτουργίες.
- Για να δείτε συνολικά τις επιλογές που έχετε για το Genie CLI δείτε εδώ: https://pubhub.devnetcloud.com/media/genie-docs/docs/cli/index.html
- Αν θέλετε να δείτε τις δυνατότητες που έχετε για να χρησιμοποιήσετε το PyATS γενικότερα μέσω CLI δείτε εδώ: https://pubhub.devnetcloud.com/media/pyats/docs/cli/index.html
Genie Parse & Parsers
Με το Genie μπορείτε να εκτελέσετε εντολές συλλογής δεδομένων στις δικτυακές συσκευές (π.χ. Cisco show commands) και να επεξεργαστείτε τα δεδεμένα που επιστρέφονται, ώστε να προκύψουν συγκεκριμένες δομές που μπορείτε να αξιοποιήσετε για να παράγετε αυτοματοποιημένη λογική ή να τα επεξεργαστείτε περαιτέρω.
Οι Genie parsers ερμηνεύουν αυτά τα δεδομένα και απομονώνουν τα πεδία δεδομένων σε αυτά, ενώ τα επιστρέφουν πίσω σε δομημένη μορφή (multi-level dictionaries, αν χρησιμοποιείτε python).
# using Python
bash$ pyats shell --testbed-file testbed.yaml
>>> testbed.devices['nx-osv-1'].connect()
>>> output = testbed.devices['nx-osv-1'].parse('show interfaces')
# using CLI
bash$ pyats parse "show interfaces" --testbed-file testbed.yaml
Μπορείτε να δείτε ποιοι είναι διαθέσιμοι parsers μέχρι στιγμής στο παρακάτω link: https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/parsers
Μπορείτε επίσης να κατασκευάσετε τους δικούς σας, δείτε τα παρακάτω δύο videos:
- How to write a Genie parser for Cisco! by Juhi Mahajan - https://www.youtube.com/watch?v=ibLNilSfdTc
- Creating a pyATS | Genie Parser from SCRATCH by Knoxx Hutchinson - https://www.youtube.com/watch?v=knxkbWTamBY
Μπορείτε βέβαια να ακολουθήσετε και το επίσημο documentation που περιέχει αρκετά στοιχεία σε γραπτή μορφή για το πως να μάθετε να το κάνετε: https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/writeparser/writeparser.html
Genie Learn & Models
Eίτε εκτελείτε το genie learn μέσω cli, είτε μαζεύετε τα στοιχεία μέσω python, στην ουσία συλλέγετε δεδομένα αντίστοιχα με τα μοντέλα που έχει κατασκευάσει η ομάδα του PyATS. Πρακτικά είναι σαν να τρέχετε πολλές εντολές μαζί, οι οποίες συμπληρώνουν την εικόνα.
Μπορείτε να δείτε τα διαθέσιμα μοντέλα στο link https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/models
Genie Conf
Μπορείτε να δώσετε εντολές ρυθμίσεων προς συσκευές με το PyATS (αντίστοιχα με τα Cisco configuration commands). Αυτό έχει μεγαλύτερο νόημα μέσω Python. Μπορείτε αυτό να το κάνετε είτε αυτόνομα για να περάσετε configuration στις συσκευές με δομημένο τρόπο ή ακόμα και να κάνετε μικρές αλλαγές στο δίκτυο ώστε να προκαλέσετε μικρά failures και να ελέγξετε πως ανταποκρίνεται στα πλαίσια PyATS triggers/test cases.
Genie Diff
Είτε έχετε εκτελέσει εντολές Genie Parse/Learn μέσω CLI είτε μέσω Python, μπορείτε να χρησιμοποιήσετε το PyATS για να εντοπίσετε διαφορές μεταξύ δύο διαφορετικών καταστάσεων του δικτύου. Π.χ. πριν και μετά από μια μεγάλη αλλαγή. Στην περίπτωση αυτή το PyATS επεξεργάζεται τα δεδομένα με αστραπιαία ταχύτητα και παράγει τα αποτελέσματα εντοπίζοντας και την παραμικρή διαφορά, είτε είναι κάτι που αναμένατε είτε όχι. Προφανώς αυτό εξαρτάται από τις εντολές που επιλέξατε να τρέξετε (parse) ή τα μοντέλα που επιλέξατε να μάθετε (learn).
Το εξαιρετικό genie diff βρίσκει όλες τις διαφορές μεταξύ των αντίστοιχων outputs στα δύο directories που αντιστοιχούν στις δύο καταστάσεις για το πριν και το μετά και δέχεται ότι εξαιρέσεις θέλει κανείς, π.χ. αν δεν ενδιαφέρουν interface counters για packets, bytes, κλπ.
Αν θέλετε να δείτε το σχετικό documentation για CLI δείτε εδώ: https://pubhub.devnetcloud.com/media/genie-docs/docs/cli/genie_diff.html
Αν θέλετε να διαβάσετε για μια περίπτωση χρήσης αυτού και μόνο του feature (CLI/Python) μπορείτε να διαβάσετε το παρακάτω άρθρο ή να ρίξετε μια ματιά στο παρακάτω git repo.
- https://blogs.cisco.com/developer/datacenter-core-migration
- https://github.com/itheodoridis/check-config-changes
Testing (Cases)
Αυτό είναι ίσως το πιο ουσιαστικό κομμάτι της χρήσης του PyATS, παρότι κανείς δεν μπορεί να σας πει τί μπορεί να είναι χρήσιμο για σας από ένα εργαλείο.
Μπορείτε να ορίσετε σετ από δοκιμές που που πρέπει να γίνουν ορίζοντας ένα σενάριο, είτε για μεμονωμένες συσκευές είτε για ολόκληρο το δίκτυο (testbed), ώστε να δώσετε αναφορές για το αν ανταποκρίνεται σε αλλαγές σύμφωνα με το αναμενόμενο ή όχι, ορίζοντας οι ίδιοι τί αντιστοιχεί σε επιτυχία (pass) ή αποτυχία (failure).
Μπορεί κάποιος να κάνει script απίθανα πράγματα για να κάνει δοκιμές. Π.χ. έστησα το δίκτυο μου ρίχνω ένα λινκ, πως συμπεριφέρεται το routing; Πόσοι neighbors υπάρχουν; Υπάρχει το τάδε route; Φτιάχνεις τα test σου, τρέχεις το script και βλέπεις που έχεις pass ή fail σε ωραία reports.
Μπορείτε να χρησιμοποιήσετε έτοιμα ήδη δημιουργημένα tests, γνωστά ως triggers.
- Εδώ μπορείτε να βρείτε τη λίστα με τα ήδη διαθέσιμα triggers - https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/triggers
- Εδώ μπορείτε να βρείτε πως να φτιάξετε δικά σας - https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/writetrigger/writetrigger.html
- Εδώ μπορείτε να δείτε πως να τα εκτελέσετε - https://pubhub.devnetcloud.com/media/pyats-getting-started/docs/quickstart/runtestcase.html#run-a-test-case
- Τα triggers ελέγχονται με verifications.
- Εδώ είναι μια λίστα με τα έτοιμα verifications - https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/verifications
- Εδώ είναι ένα παράδειγμα για triggers & verifications - https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/writetrigger/writetrigger.html#example-of-a-trigger-with-verifications
Μπορείτε όμως να ορίσετε τα test σας και ως test cases, δηλαδή συλλογές από μικρότερα tests:
- Δείτε εδώ σχετικό documentation - https://pubhub.devnetcloud.com/media/pyats/docs/aetest/structure.html#testcases
- Video από το PyCon 2020 με τον Hank Preston - https://www.conferencecast.tv/talk-33233-introduction-to-writing-network-tests-with-pyats#.talkPage-header
- Slide Deck από Cisco Live 2018 Barcelona - https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2018/pdf/DEVNET-1480.pdf
Μην ξεχνάτε ότι μπορείτε να πάρετε τα αποτελέσματα
- είτε ως αντικείμενα (python, https://pubhub.devnetcloud.com/media/pyats/docs/results/objects.html),
- είτε μέσω του logging (https://pubhub.devnetcloud.com/media/pyats/docs/cli/pyats_logs.html#pyats-logs),
- είτε ως αρχεία yaml (https://pubhub.devnetcloud.com/media/pyats/docs/reporter/overview.html),
- είτε ως html reports στο Xpresso.
Αν θέλετε όμως μπορείτε να ακολουθήσετε και τη δομή που περιέγραψε ο Julio Gomez (Cisco Developer Lead EMEAR) σε πέντε post από την καταπληκτική σειρά του για το DevOps:
PyATS Logger
Μπορείτε να οδηγήσετε το logging στα pyats tests/cases μέσω python, αλλά υπάρχει η δυνατότητα να το κάνετε και μέσω CLI, μέσω του PyATS log viewer https://pubhub.devnetcloud.com/media/pyats/docs/cli/pyats_logs.html
Αν τρέχετε το pyats σε Linux Desktop που διαθέτει GUI μπορείτε να προβάλλετε το log σε μορφή HTML σε browser. Όμως είναι πλέον δυνατό το PyATS να σηκώσει ένα webserver όπου μπορείτε να δείτε το Log. Φυσικά αν τρέχετε Xpresso, όλα αυτά είναι πιο εύκολα.
Δείτε γενικότερα για το logging στο PyATS εδώ: https://pubhub.devnetcloud.com/media/pyats/docs/log/index.html
Xpresso
To Xpresso είναι ένα ολοκληρωμένο γραφικό περιβάλλον βασισμένο σε web για τη χρήση του PyATS και τη δημιουργία HTML reports. Έχει πάρα πολλά χαρακτηριστικά και δυνατότητες, ξεφεύγει κατά πολύ από ένα απλό πακέτο λογισμικού.
Δείτε εδώ για ένα overview https://developer.cisco.com/docs/xpresso/#!overview Μπορείτε να το εγκαταστήσετε είτε ως συλλογή πακέτων λογισμικού είτε μέσω docker
- https://developer.cisco.com/docs/xpresso/#!setting-up-your-test-environment-overview/setting-up-your-test-environment
- https://github.com/CiscoTestAutomation/xpresso
- https://developer.cisco.com/docs/xpresso/#docker-images
Έχει σημαντικές απαιτήσεις σε πόρους (σε αντίθεση με το απλό pyats), οπότε φροντίστε να έχετε αρκετούς αν σκοπεύετε να το τρέξετε:
Operational Requirements and Constraints
Mock devices
Τα Mock Devices δεν είναι πραγματικά devices αλλά pre-recorded sets από commands & responses. Βασίζονται στο playback feature του Unicon library και δίνουν τη δυνατότητα να κάνει κάποιος practice με το PyATS χωρίς να έχει κανονικές συσκευές στη διάθεση του, άλλωστε το PyATS tutorial χρησιμοποιεί mock device:
To documentation για το πως δουλεύει το playback στο Unicon μπορείτε να το δείτε εδώ:
- Create a mock device - https://pubhub.devnetcloud.com/media/unicon/docs/developer_guide/unittests.html#mock
- Playback - https://pubhub.devnetcloud.com/media/unicon/docs/playback/index.html#
Αν θέλετε μπορείτε να δείτε κι αυτό το άρθρο από τον Gary Woodward:
Parsing for other python libraries (Netmiko, Scrapli, Ansible)
Netmiko
To γνωστό Python library του Kirk Byers προβλέπει τη χρήση network parsers για να παίρνει κανείς δεδομένα από τα sessions με τα network devices με δομημένο τρόπο. Όπως υποστηρίζεται το Text-FSM (NTC-Templates), υποστηρίζονται οι genie parsers με το option use_genie = True. Μπορείτε να διαβάσετε περισσότερα εδώ:
- Παράδειγμα - https://github.com/ktbyers/netmiko/blob/develop/EXAMPLES.md#using-genie
- Documentation - https://ktbyers.github.io/netmiko/docs/netmiko/index.html#netmiko.BaseConnection.send_command
- Post - https://networkautomationlane.in/how-to-install-and-parse-data-with-netmiko-genie-plugin/
Scrapli
Με το Scrapli τo parsing των device responses γίνεται σε δεύτερο χρόνο. Η διαφορά είναι μικρή στην ουσία. Μπορείτε να διαβάσετε περισσότερα εδώ:
- https://carlmontanari.github.io/scrapli/user_guide/basic_usage/#cisco-genie-integration
- https://0x2142.com/automating-the-cli-using-scrapli/
Ansible
To Ansible extension για να μπορεί κανείς να χρησιμοποιήσει το PyATS με το Ansible το έχει δημιουργήσει ο Clay Curtis. Περισσότερα μπορείτε να διαβάσετε εδώ:
PyATS Libraries (Dq, Clean)
Δεν σταματάνε όμως εδώ τα features του PyATS. Παρακάτω αναφέρονται δύο εξαιρετικά χρήσιμα από αυτά, τα οποία μπορούν να χρησιμοποιηθούν μαζί με το PyATS ή ξεχωριστά. Γενικά για τα χρήσιμα libraries του PyATS/Genie: https://pubhub.devnetcloud.com/media/genie-docs/docs/userguide/utils/index.html
Dq
To Dq είναι βιβλιοθήκη που βοηθάει στον εντοπισμό δεδομένων σε μια εμφωλευμένη δομή χωρίς κάποιος να χρειάζεται να ξέρει ακριβώς όλη τη δομή που πρέπει να “διασχίσει” μέχρι να φτάσει στο dictionary που τον ενδιαφέρει.
- Documentation: https://pubhub.devnetcloud.com/media/genie-docs/docs/userguide/utils/index.html#dq
- Παράδειγμα: https://twitter.com/jeaubin5/status/1232668555658874881?s=09
- Παράδειγμα: https://twitter.com/tahigash3/status/1233382956359507969?s=09
- Παράδειγμα: https://twitter.com/tahigash3/status/1233384445173850113?s=09
- Post: https://www.packetcoders.io/simplify-parsing-with-ciscos-genie-dq/
- Video: https://youtu.be/XNdlvlbHMUI
PyATS Clean
To PyATS clean επιτρέπει να επαναφέρουμε τη συσκευή σε μια συγκεκριμένη κατάσταση με συγκεκριμένο λογισμικό, ανεξάρτητα από το λογισμικό και την κατάσταση που είχε πριν την επαναφορά.
- Documentation - https://pubhub.devnetcloud.com/media/genie-docs/docs/clean/index.html
- Παράδειγμα - https://github.com/CiscoTestAutomation/examples/tree/master/clean
Use Cases
Τα Use Cases του PyATS περιορίζονται μόνο από τη φαντασία αλλά τα βασικότερα περιγράφονται παρακάτω:
- Data Collection - Συλλογή στοιχείων από τις συσκευές του δικτύου για να πάρουμε ακριβή εικόνα του Network State. Μπορεί να έχει απλή μορφή, όπως output στο CLI, ή ακόμα και σε εργαλεία reporting, p.x. pyats -> prometheus pushgateway -> prometheus -> grafana. Σε αυτό το concept πρέπει κανείς να δει τί έχει φτιάξει ο John Cappobianco με το Merlin project.
- Configuration - Αυτοματοποιημένο Configuration των συσκευών σειριακά ή παράλληλα, μόνο με το PyATS ή σε συνδυασμό με άλλα εργαλεία και βιβλιοθήκες.
- Capturing changes χωρίς να μας ξέρουμε εκ των προτέρων ακριβώς το τί άλλαξε.
- Testing (Chaos Monkey/Validation) - Μπορούμε να ελέγξουμε αν οι συσκευές μας ή το δίκτυο μας ανταποκρίνεται όπως πρέπει σε αλλαγές ή βλάβες. Σε αυτό το concept το PyATS μπορεί να χρησιμοποιηθεί και σε CI/CD pipelines για εφαρμογή Network Configuration As Code.
Learn about PyATS
- Devnet Getting started - https://developer.cisco.com/pyats/
- Learning Labs
- Cisco Live Workshops
- Cisco Live! DEVWKS-2595: Stateful Network Validation using pyATS/Genie - https://github.com/CiscoTestAutomation/CL-DevNet-2595
- CL-DevNet-2595 Workshop - https://github.com/CiscoTestAutomation/CL-DevNet-2595/blob/master/workshop.md
- Cisco Live! DEVWKS-2808 - https://github.com/CiscoTestAutomation/CL-DEVWKS-2808/blob/master/workshop.md
- Training
- CBT Nuggets, John McGovern - https://www.cbtnuggets.com/learn/it-training/automate-network-testing-with-pyats
- Packet Coders, Rick Donato - https://www.packetcoders.io/network-testing-with-cisco-pyats/
- Devnet Expert
- Devnet Expert Presentation - https://blogs.cisco.com/learning/cisco-devnet-expert-your-career-changing-certification
- Denvet Expert Summary - https://www.cisco.com/c/en/us/training-events/training-certifications/certifications/expert/devnet-expert.html?ccid=devnetexpert&dtid=blog&oid=blog-cisco-par
- Lab Topics - https://learningnetwork.cisco.com/s/devnet-expert-exam-topics-lab
Projects & Posts
Πολλά projects θα βρείτε σχετικά με το PyATS. Εδώ θα αναφέρουμε μόνο ένα, το Merlin, από τον John Cappobianco, ο οποίος έβαλε σκοπό να συνδυάσει το PyATS με ένα σωρό διαφορετικές τεχνολογίες (Jinja Templates, Django, Celery, Docker, Kubernetes, κλπ) και δυνατότητες:
- Search as Code
- 3D representation of network state
- ChatOps
- TextToSpeech
- Automated Calling
- Mind Maps
- Scheduled Tasks
- κλπ
Σχετικά links:
- To site του John - https://www.automateyournetwork.ca/
- To κανάλι του στο Youtube - https://www.youtube.com/channel/UCYE2gcN4wWewmriAP2QlT2A
- To profil του στο Github όπου θα βρείτε τα διάφορα flavors του Merlin - https://github.com/automateyournetwork
- O John στους packet pushers - https://www.youtube.com/watch?v=NA4B_MqzVIM
- O John στο Art of Network Engineering - https://artofnetworkengineering.com/2021/12/01/ep-71-merlin-the-auto-magician/
- Κάντε εγγραφή στo webex channel του Merlin - https://eurl.io/#Yc-8-BgSD
Περισσότερα για άλλα projects & integrations στα Links & Sources
Links - Sources
- Cisco Developer Blog posts - https://blogs.cisco.com/tag/pyats
- Use PyATS on your Laptop - https://developer.cisco.com/docs/pyats/#!hands-on-learning/diy-on-your-laptop
- Podcasts & Videos - https://developer.cisco.com/docs/pyats/#!hands-on-learning/podcasts--videos
- Integrations
- Documentation - https://developer.cisco.com/docs/genie-docs/
- Configuration - https://pubhub.devnetcloud.com/media/genie-docs/docs/userguide/Conf/index.html
- NetDevOps validation using Cisco pyATS | Genie for network engineers: no coding necessary - https://developer.cisco.com/network-automation/detail/1355627332691844/
- Automating OS migration pre-checks and post-checks with pyATS - https://developer.cisco.com/network-automation/detail/5a7288c9-411b-11eb-b9d4-ae71b9e1fe30/
- Development Guide - https://developer.cisco.com/docs/pyats-development-guide/
- LAB by Stuart Traynor - https://github.com/sttrayno/pyATS-Lab-Guide
- https://pubhub.devnetcloud.com/media/pyats-getting-started/docs/bestpractices/intro.html
- Creating pyATS | Genie Parsers and Unicon Connection Plugins - https://youtu.be/0WvizVReKLs
- Genie Feature Browser - https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/
- Use TextFSM with PyATS - https://twitter.com/tahigash3/status/1281247080913072129?s=09
- Network Automation with pyATS, Genie and Cisco DNA Center - https://www.brighttalk.com/webcast/17628/367044
- The Unicon Connection Library - https://developer.cisco.com/docs/unicon/
- Connection User Guide - https://pubhub.devnetcloud.com/media/unicon/docs/user_guide/connection.html
- Exploring Genie Conf for Pythonic Device Configuration - https://youtu.be/2C-Y-DJhIdk
- Cisco Live! DEVWKS-2595: Stateful Network Validation using pyATS/Genie - https://github.com/CiscoTestAutomation/CL-DevNet-2595
- CL-DevNet-2595 Workshop - https://github.com/CiscoTestAutomation/CL-DevNet-2595/blob/master/workshop.md
- Εισαγωγικό video από τον μακαρίτη Kevin Corbin - https://www.youtube.com/watch?v=LxiBHPMves8&t=611s
- pyATS CLI Demonstration by Hank Preston - https://github.com/hpreston/netdevops_demos/blob/master/genie-cli-1/README.md
- pyATS series by Antoine Orsoni - Install and use pyATS - https://xrdocs.io/programmability/tutorials/pyats-series-install-and-use-pyats/
- Unit Testing Network Infrastructure w/ pyATS - https://routedefault.wordpress.com/2021/12/20/unit-testing-network-infrastructure-w-pyats/
- PyATS Dockerfile and Scripts - https://github.com/CiscoTestAutomation/pyats-docker
- PyATS Devnet SE hour (Antoine Orsoni Github) - https://github.com/AntoineOrsoni/pyats-devnet-se-hour
- Genie Development in a container with VS Code - https://twitter.com/simingy/status/1146844441816305665
- AETest Infrastructure - https://pubhub.devnetcloud.com/media/pyats/docs/aetest/index.html
- Use the q function - https://twitter.com/host_bits/status/1316052483089854464?s=09
- PyATS Pcall - https://pubhub.devnetcloud.com/media/pyats/docs/async/pcall.html
- Use PyATS with Jinja templates - https://twitter.com/jeaubin5/status/1313183366087311366
- PyATS example with Rich - https://github.com/sclayton1006/pyATS/blob/main/IP_Int_Brief_Emoji.py
- Intro to PyATS with Claudia De Luna - https://github.com/cldeluna/interop2020_pyats_intro
- PyATS Secret Strings - https://pubhub.devnetcloud.com/media/pyats/docs/utilities/secret_strings.html
- PyATS and Genie Intro by Mike Guy - https://thetwistedpair.co.uk/2020/03/pyats_and_genie_intro/
- PyATS as Nornir Task example - https://twitter.com/gp_ifconfig/status/1233782963478855680?s=09
- Offline Parser - https://twitter.com/jeaubin5/status/1233133522451410947?s=09
- PyATS Examples - https://pypi.org/project/pyats.examples/
- PyATS Coding 101 by Siming Yuan - https://github.com/CiscoDevNet/pyats-coding-101/tree/master/coding-101-python
- Send emails at the end of PyATS test report - https://twitter.com/simingy/status/1184203882060304384?s=09
- PyATS to Netbox by Hank Preston (beware it’s not new, not sure it works with newer versions) - https://github.com/hpreston/netdevops_demos/tree/master/pyats-to-netbox
- Learn why pyATS is used by thousands of network engineers and developers world-wide. DevNet Snack Minute Episode 36 - https://video.cisco.com/video/6271298878001?ccid=pyats-page&dtid=twitter&oid=videosnackminute-fy22-q1-0000-grazianosnackminuteep36-ww