14 minutes
How to Get Started With Network Automation
Εισαγωγή
Λένε πως το πιο δύσκολο πράγμα στην πτήση είναι η απογείωση.. Στην ενασχόληση με το network automation, αυτο ισχύει σίγουρα. Αν ψάξει κανείς στο internet θα βρει αρκετό περιεχόμενο που έχει σκοπό να αναδείξει κίνητρα, οφέλη, μια νέα φιλοσοφία. Οπωσδήποτε πρέπει κανείς να ανοίξει το μυαλό του σε νέο τρόπο σκέψης, εργασίας και συνεργασίας με αρκετά νέα εργαλεία και τεχνογνωσία. Αλλά το βασικό πρόβλημα δεν είναι η φιλοσοφία. Εντάξει, παίζει σημαντικό ρόλο. Αν όμως κάποιος έχει φτάσει μέχρι εδώ, σημαίνει ότι έχει ήδη πειστεί σε κάποιο βαθμό ότι κάτι πρέπει ή κάτι θέλει να κάνει. Αυτό που χρειάζεται είναι να του εξηγήσει κάποιος τί είναι αυτό το “κάτι”, τί συμβαίνει εκεί έξω και τί είναι διαθέσιμο και από που να αρχίσει.
Σκοπός
Ο σκοπός του κειμένου αυτού δεν είναι να υποδείξει τα use cases για κάθε εργαλείο για κάθε “network automation engineer”. Αυτό είναι αδύνατο. Ο βασικός σκοπός είναι ο καινούριος εκπαιδευόμενος να μάθει για τα εργαλεία και τις τεχνολογίες στη διάθεση του. Γνωρίζοντας αυτά, εκείνος ή εκείνη θα μπορέσει να αναγνωρίσει το τί ακριβώς ταιριάζει σαν λύση στα προβλήματα που μόνο εκείνος γνωρίζει για το περιβάλλον του.
Βασικά σημεία εκκίνησης
Υπάρχουν αρκετά blog posts στο internet πλέον για συγκεκριμένα use cases, όπως και ανοικτές κοινότητες, είτε οργανωμένες από network & system vendors (Cisco, Juniper, Vmware, Redhat, κλπ) είτε ανεξάρτητες ομάδες οργανωμένες γύρω από κάποιο εργαλείο. Σε κάποιες από αυτές θα βρείτε βάσεις δεδομένων με use cases. Συμμετέχοντας σε κάποιες κοινότητες (όπως αυτήν εδώ) ενδεχομένως θα σας δοθεί η ευκαιρία να μιλήσετε με κάποιους που έχουν κάνει ήδη κάτι κοντά σε αυτό που θέλετε να πετύχετε.
Όμως το πεδίο είναι ακόμα παρθένο. Υπάρχει αρκετός χώρος για καινοτομία. Οπότε, αν δεν βρίσκετε άμεσα αυτό ακριβώς που θέλετε, υπομονή. Από την άλλη ίσως σας δοθεί η ευκαιρία να αναπτύξετε κάτι κι εσείς!
“Κι αν θέλω οπωσδήποτε συμβουλές;"
Τότε θα πρέπει να αναζητήσετε blog posts σχετικά με το γιατί και το πως:
- Why automate
- How to get started
- Introduction Videos - Προτείνω τη σειρά NetDevOps Live
Δείτε και τις προτάσεις για What to read next στο τέλος του άρθρου.
Βασικά πάρτε απόφαση ότι δεν είναι δυνατό ξαφνικά να τα μάθετε όλα, όπως και δεν είναι δυνατό, αν θέλετε πρακτικά αποτελέσματα, να μάθετε πρώτα “τέλεια” ένα εργαλείο ή μια τεχνολογία και μετά να την εφαρμόσετε στην πράξη για να λύσετε κάποιο πρόβλημα που σας απασχολεί.
Κάντε μικρά βήματα, και μην φοβάστε το “πασάλειμμα”. Στην ουσία ακολουθήστε το μονοπάτι “learn by doing”. Θα μπορέσετε να έχετε σύντομα μικρές νίκες, οι οποίες θα σας δώσουν ενέργεια για να συνεχίσετε την προσπάθεια και να εμβαθύνετε. Και μετά αποφασίζετε για την τελική σας κατεύθυνση. Το βασικό ερώτημα, είναι αυτό που ακολουθεί:
To code or not to code
Πολλοί διαχωρίζουν τα τεχνολογικά εργαλεία για το network automation σε αυτά που απαιτούν γνώσεις γλώσσας προγραμματισμού και σε αυτά που χρησιμοποιούν περιγραφικές γλώσσες συγκεκριμένου πεδίου εφαρμογής, τις λεγόμενες DSL (Domain Specific Language). Με αυτό το σκεπτικό πολλές φορές διαλέγουν αυτό που θεωρούν κατάλληλο ανάλογα με το περιβάλλον της εφαρμογής του εργαλείου, π.χ. ανάλογα με τις προγραμματιστικές γνώσεις και ικανότητες αυτών που θα το χρησιμοποιήσουν.
To Code - Devices
Στην πρώτη περίπτωση μπορεί κανείς να χρησιμοποιήσει διάφορες γλώσσες για να “μιλήσει” με δικτυακό εξοπλισμό ή με REST APIs (API - Application Programming Interface, REST - REpresentational State Transfer) εργαλείων λογισμικού που συνήθως χρησιμοποιούνται για τη διαχείριση δικτυακών υπηρεσιών και συσκευών ή άλλους σκοπούς, όπως π.χ. Cisco Prime Infrastructure, ή Cisco DNA, Cisco SD-WAN, Cisco Meraki, Netbox, κλπ. Οι πιο διαδεδομένες επιλογές για την πρώτη περίπτωση είναι οι Python & Go, αλλα είναι δυνατό να χρησιμοποιήσει κανείς και άλλες, όπως Perl & TCL. Στο παρακάτω άρθρο, αναφέρονται 5 γλώσσες με την πέμπτη επιλογή να είναι η Ansible, εσφαλμένα κατά τη γνώμη μου καθώς δεν είναι γλώσσα προγραμματισμού: https://www.techrepublic.com/article/5-programming-languages-network-architects-should-learn/
To Code - (REST) APIs
Ο πιο απλός τρόπος να εξερευνήσει κάποιος ένα API είναι ή με ενσωματωμένο documentation όπως είναι το swagger interface, ή με εφαρμογές που μπορούν να κάνουν API requests χωρίς να χρησιμοποιούν προγραμματιστικό κώδικα. Τέτοιες εφαρμογές ονομάζονται REST Clients, και μια από τις πιο γνωστές είναι ο Postman
O Postman μπορεί να δημιουργήσει API calls συμπληρώνοντας απλώς URLs και επιλογές στο γραφικό του περιβάλλον και να μετατρέψει αυτό to request σε κώδικα για διάφορες γλώσσες, π.χ. python, java, javascript, C, C#, PHP, Ryby, Swift, κλπ. Έτσι μπορείτε άμεσα να δείτε πως θα μπορούσε να είναι ένα request στη γλώσσα προγραμματισμού που σας ενδιαφέρει.
Σε περίπτωση που θέλει κανείς να επενδύσει σε μια γλώσσα προγραμματισμού για να κάνει REST API calls, υπάρχουν περισσότερες επιλογές για γλώσσες, π.χ. python, java, javascript, κλπ αλλά θα ανταμοιφθεί αν επιλέξει τη γλώσσα Python για να το κάνει, καθώς του δίνεται αρκετή ευελιξία. Ο πιο διαδεδομένος τρόπος είναι με τη χρήση της βιβλιοθήκης requests, είτε χρησιμοποιώντας http/https sessions είτε μεμονωμένα requests. Υπάρχουν όμως κι άλλες επιλογές, όπως η βιβλιοθήκη httpx, η οποία γνωρίζει αρκετή εφαρμογή τελευταία.
- What is a REST API - https://youtu.be/lsMQRaeKNDk
- REST API concepts and examples - https://youtu.be/7YcW25PHnAA
Not to code?
Δεν σας αρέσει ο προγραμματισμός; Προσωπική μου άποψη, καλύτερα να αλλάξετε γνώμη αλλά αν επιμένετε υπάρχουν διάφορα εργαλεία που μπορείτε να χρησιμοποιήσετε. Θα πρέπει ωστόσο να επενδύσετε χρόνο να μάθετε την περιγραφική αυτή γλώσσα και ένα λεξιλόγιο που δεν θα είναι μεν γλώσσα προγραμματισμού αλλά θα έχει συντακτικό και γενικά δομή και κανόνες. Τέτοια εργαλεία είναι π.χ. το Ansible, το Cheff, το Puppet και άλλα. Το πιο εύκολο για να αρχίσετε να ασχολείστε είναι το Ansible αλλά είναι καθαρά θέμα προσωπικής επιλογής από ένα σημείο και μετά. To Ansible είναι εργαλείο που κατασκευάστηκε και αναπτύσσεται/συντηρείται από τη Redhat, χρησιμεύει για αυτοματισμό σε διάφορους τομείς, από servers και services, μέχρι http/rest API calls, μέχρι network devices & services και πολλά άλλα, ενώ μπορεί να εγκατασταθεί σε περιβάλλοντα Linux αλλά τελευταία είναι δυνατή και η εγκατάσταση του σε περιβάλλοντα Windows. Έχουμε ήδη ένα post σχετικά με το Ansible και θα υπάρξουν κι άλλα. Για να μάθετε περισσότερα κατευθυνθείτε αρχικά εδώ
και θα εμπλουτίσουμε το περιεχόμενο σιγά - σιγά γι αυτό. Το Ansible είναι free για εγκατάσταση και χρήση αλλά υπάρχει εταιρική έκδοση μιας πλατφόρμας διαχείρισης του από τη Redhat, γνωστή με το όνομα Ansible Tower
Cloud?
Δεν είμαι ειδικός. Υπάρχει μεγάλη δυνατότητα να αυτοματοποιήσετε τις λειτουργίες που χρησιμοποιείτε με cloud services ανάλογα με τις δυνατότητες που δίνει ο cloud provider, μην ξεχνάτε πως οτιδήποτε θεωρείτε ότι λειτουργεί στο cloud είναι στην ουσία software applications, ενδεχομένως ακόμα και βασικές δικτυακές λειτουργίες. Πολύ δημοφιλές εργαλείο είναι το Terraform της Hashicorp για το οποίο όλοι ελπίζουμε ο Ν.Κ. να μας μάθει λίγα πράγματα. Προς το παρόν κρατήστε τα παρακάτω:
- https://www.terraform.io/intro/index.html
- https://learn.hashicorp.com/tutorials/terraform/automate-terraform
Άγνωστες λέξεις - Buzz Words
Έχετε λοιπόν αποφασίσει να αρχίσετε να ασχολείστε με Network Automation και με την πρώτη φορά που αρχίζετε να διαβάζετε κάποιο κείμενο ή να δείτε κάποιο video, βομβαρδίζεστε με άγνωστες λέξεις:
Parsing
Όταν χρησιμοποιούμε εργαλεία για να επικοινωνήσουμε με συσκευές ή (REST) APIs, συνήθως λαμβάνουμε απαντήσεις στις εντολές μας ή στα API Calls μας οι οποίες είναι με μορφή STRING (σειρές χαρακτήρων), ή χρησιμοποιώντας πιο απλή ορολογία, κείμενο. Φανταστείτε το κείμενο που παίρνετε ως απάντηση σε μια κονσόλα δικτυακής συσκευής. Σαν μηχανικοί έχετε μάθει να το ερμηνεύετε. Για να είναι όμως αξιοποιήσημο προγραμματιστικά, ώστε πχ. να το συνδυάσετε με άλλα δεδομένα ή να το κάνετε δεδομένα εισαγωγής για άλλα εργαλεία ή να ελέγξετε αν ισχύει κάποιο ενδεχόμενο κλπ, πρέπει να περάσετε αυτό το κείμενο από ειδικά φίλτρα ώστε να απομονώσετε τις πληροφορίες που σας ενδιαφέρουν και τις οποίες ο κώδικας σας ή το DSL-based εργαλείο σας θα αναγνωρίσει και θα επεξεργαστεί. Σε αυτές τις περιπτώσεις έχει κανείς δύο επιλογές:
- Εφαρμογή Regular Expressions - γνωστό και ως RegEx, υπάρχει δυνατότητα χρήσης του και σε γλώσσες όπως η Python αλλά και σε DSL-Based εργαλεία, με πλεονέκτημα τη μεγάλη αποτελεσματικότητα και ακρίβεια (αν χρησιμοποιηθεί σωστά) και μεινονεκτήματα την πολυπλοκότητα στην εκμάθηση και τη χρήση.
- Χρήση προκατασκευασμένων φίλτρων γνωστών ως parsers, οι οποίοι έχουν προδιαγεγραμμένα πρότυπα ώστε να αναγνωρίζουν και να απομονώνουν δεδομένα ανάλογα με συγκεκριμένες εντολές και requests. Π.χ. μια εντολή
show ip interfaces
χρειάζεται parser ειδικά κατασκευασμένο γι αυτή ο οποίος θα δώσει αυτόματα τις απαντήσεις χωρισμένες σε συγκεκριμένα πεδία δεδομένων. Σας μπέρδεψα; Λογικό. Χρειάζεται να δείτε παραδείγματα. Σύντομα σε ξεχωριστό άρθρο. Προς το παρόν κρατήστε ότι η απάντηση από την παραπάνω εντολή μπορεί να μας ενδεχομένως να μας δώσει σε ξεχωριστές μεταβλητές το όνομα και τον τύπο του interface, την ip address και την network mask, το αν είναι ενεργό ή όχι, κλπ, ώστε να μπορούμε να τις επεξεργαστούμε για να εφαρμόσουμε την αυτοματοποιημένη λογική που επιθυμούμε. Γνωστοί parsers με τη μορφή βιβλιοθηκών python, είναι οι text-fsm/ntc, pyats/genie, ttp. Υπάρχει δυνατότητα χρήσης κάποιων από αυτούς και από DSL-based εργαλεία.
JSON, XML, Yang
Η χρήση σκέτων strings για την αποθήκευση δεδομένων προφανώς δεν είναι πρακτική και αξιόπιστη. Σε πολλές περιπτώσεις βολεύει να κωδικοποιήσουμε τα δεδομένα με συγκεκριμένο τρόπο, ώστε να είναι πιο πρακτική η αποθήκευση και η ανάκτηση τους και να μπορούμε με μονοσήμαντο και αποτελεσματικό τρόπο να φτάσουμε ακριβώς στα δεδομένα που μας ενδιαφέρουν. To JSON - Javascript Syntax Notation και το XML - eXtensible Markup Language είναι τρόποι κωδικοποίησης δεδομένων, ο καθένας με τα πλεονεκτήματα και μειονεκτήματα του. Η γλώσσα Yang χρησιμοποιείται για την αναπαράσταση μοντέλων δεδομένων (data models) με σκοπό να μπορούμε αποτελεσματικά να περιγράψουμε και να αποθηκεύσουμε δεδομένα σε ψηφιακή μορφή, όπου αποστολέας και παραλήπτης των δεδομένων έχουν ήδη κοινή γνώση για την αναμενόμενη μορφή των αποθηκευμένων δεδομένων και των κανόνων που τα διέπουν. Περισσότερα γι αυτά σε ξεχωριστό άρθρο, μαζί με τις επόμενες άγνωστες λέξεις
Netconf, Restconf
Πρωτόκολλα για την διαχείριση και ρύθμιση συσκευών/λογισμικών χρησιμοποιώντας συγκεκριμένα (Yang) data models που υποστηρίζουν αυτές ώστε να καθορίσουμε ακριβώς και με αποδοτικότερο τρόπο τις παραμέτρους λειτουργίας τους και να πάρουμε πληροφορίες σχετικά με την κατάσταση και την απόδοση τους. Κάθε ένα από αυτά υποστηρίζει συγκεκριμένους τρόπους κωδικοποίησης των δεδομένων και λειτουργεί με συγκεκριμένη τεχνολογία για την ασφαλή μεταφορά των δεδομένων μεταξύ πηγής και παραλήπτη.
Connection Providers
Συνήθως βιβλιοθήκες γλωσσών προγραμματισμού για τη σύνδεση με δικτυακές συσκευές ή άλλα συστήματα (π.χ. firewalls ή servers). Εφόσον μιλάμε για συσκευές σαν τις παραπάνω διακρίνονται
- σε αυτούς που χρησιμοποιούν legacy τρόπους σύνδεσης, π.χ. πάνω από SSH/Telnet. Γνωστότερες περιπτώσεις είναι τα netmiko, napalm, scrapli (και pyats, αναφέρεται ξεχωριστά για λόγους που θα αναφερθούν παρακάτω)
- σε αυτούς που χρησιμοποιούν τα γνωστά πρωτόκολλα Netconf/Restconf και Yang data models. Γνωστότερες περιπτώσεις είναι τα ncc, netconf-scrapli, http requests/httpx
Network Testing Framerworks
Αν και θα μπορούσαμε ενδεχομένως να μιλήσουμε γενικά για testing, εδώ κάνουμε ειδική αναφορά στο network testing framework, το οποίο η Cisco χρησιμοποιεί εσωτερικά εδώ και πάνω από 10 χρόνια, ενώ εδώ και 4 χρόνια το έχει ανοίξει για χρήση από όλους ως ανοικτό λογισμικό: Pyats/Genie
To PyATS έχει multi-layered αρχιτεκτονική όπου κάθε layer μπορεί να χρησιμοποιηθεί ανεξάρτητα από τα άλλα και διαθέτει και ικανότητες parsing με χιλιάδες parsers και μοντέλα για συσκευές από πολλούς διαφορετικούς κατασκευαστές πέραν της Cisco. Εδώ και μεγάλο διάστημα έχει ανακοινωθεί και διατεθεί και η πλατφόρμα διαχείρισης του με γραφικό τρόπο με πολλες έξτρα δυνατότητες, το XPRESSO το οποίο είναι στην ουσία ένα PyATS Dashboard
- https://xpresso-sjc-1.cisco.com/home
- https://developer.cisco.com/docs/pyats/#!pyats-dashboard-xpresso
Concurrency/Parallelism/Parallel Execution & Configuration
Χωρίς να μπούμε σε λεπτομέρειες που θα μας δώσουν με ακρίβεια τον ορισμό των παραπάνω, ας παραμείνουμε στην ουσία που είναι ότι μπορείτε με κάποια εργαλεία να εκτελέσετε ομάδες ενεργειών παράλληλα σε ένα μεγάλο αριθμό από συσκευές, αν ο αριθμός τους είναι τέτοιος ώστε να έχει νόημα να κερδίσετε αρκετό χρόνο με την “παράλληλη” εκτέλεση της ίδιας δέσμης ενεργειών σε όλες. Τέτοια frameworks που επιτρέπουν κάτι τέτοιο είναι τα
- Nornir (Python Based, μπορεί να χρησιμοποιήσει διάφορουης connection providers)
- PyATS (Python Based, own connection provider)
- Ansible
Και εδώ θα δούμε το αντικείμενο αυτό σε ξεχωριστό άρθρο. Κάποια links ειδικά για το Nornir:
- https://nornir.readthedocs.io/en/latest/
- https://nornir.readthedocs.io/en/latest/tutorial/overview.html
- https://github.com/nornir-automation/nornir/discussions
DevOps, NetDevOps, Containers, Docker, Kubernetes, Microservices, CI/CD, …
Ψυχραιμία. Σιγά - Σιγά. Τα παραπάνω είναι συστατικά μιας νέας κουλτούρας για ανάπτυξη εφαρμογών όσο αφορά στο network automation αλλά στον κόσμο των developpers δεν είναι τόσο καινούρια. Κρατήστε ότι όλα αυτά έχουν να κάνουν με Coding Methodologies και Development Projects από ομάδες συνεργατών, τα οποία θα εξετάσουμε σιγά - σιγά. Θα αποφύγουμε να μετατρέψουμε το συγκεκριμένο post σε Καζαμία του Automation και σας δίνουμε ραντεβού σε επόμενα post για περισσότερες εξηγήσεις για τα συγκεκριμένα. Δεν είναι σίγουρα κάτι που θα ασχοληθείτε τον πρώτο καιρό που θα κάνετε επαφή με το αντικείμενο.
“Τελειώσαμε;"
Με τίποτε. Απλώς αρχίζουμε. Είπαμε, υπομονή. Αν έχετε διαβάσει ως εδώ, είτε με την πρώτη, είτε γενικά, μάλλον έχετε υπομονή. Σας υπόσχομαι ότι αξίζει τον κόπο.
“Ωραία όλα αυτά.. Και τώρα τί κάνω εγώ;"
Είπαμε και στην αρχή κάποια πράγματα. Ακολουθούν προτάσεις:
Αναζητήστε κοινότητες και ενημέρωση
Άναρχα
Μπορείτε να ψάξετε σε μέσα δικτύωσης όπως το Twitter ή το LinkedIn για άτομα και groups που ασχολούνται με αυτά τα αντικείμενα ώστε να φτιάξετε σιγά-σιγά ένα κύκλο ενημέρωσης και συζήτησης. Παίρνει χρόνο αλλά αξίζει τον κόπο. Βοηθάει η χρήση των hashes (#) σε αυτη την περίπτωση. Κάντε σχετικές αναζητήσεις ή ρωτήστε και εμάς.
Οργανωμένα
Υπάρχουν αρκετές κοινότητες από απλούς μηχανικούς χωρίς δεσμεύσεις και προτιμήσεις (σαν και τη δικιά μας κοινότητα). Άλλες οργανώνονται γύρω από discussion sites/tools όπως το Slack, άλλες με εργαλεία σαν το discorde, άλλες με podcasts κλπ.
Blogs
Automate your Network - John Capobianco
Υπάρχουν blogs που είναι επικεντρωμένα στο automation. Θα ξεκινήσουμε με ένα που δεν είναι το πιο αντιπροσωπευτικό για όλα, ανήκει όμως σε έναν παθιασμένο automation μηχανικό που είναι φανατικός υποστηρικτής του Ansible και chief technologist στη Βουλή του Καναδά. Το ιδιαίτερο σε αυτή την περίπτωση έγκειται επίσης στο ότι έχει πολύ πρόσφατα συγκεντρώσει σε μία σελίδα links για blogs, github repos, community pages κλπ, όπου φιλοξενείται πλέον σύνδεσμος και για την δική μας κοινότητα:
Python for Network Engineers - Kirk Byers
https://pynet.twb-tech.com/ - Ο Kirk Byers είναι μηχανικός δικτύων με εξαιρετικές γνώσεις τόσο γύρω από Python όσο και το Ansible και εκτός από το περιεχόμενο στο site του, διαθέτει δωρεάν ένα email course για Python ειδικά για Network Engineers, όπου κάνει γρήγορη εισαγωγή στη γλώσσα και στη συνέχεια εξηγεί πως μπορεί κανείς να συνδεθεί προγραμματιστικά σε συσκευές χρησιμοποιώντας τη βιβλιοθήκη Netmiko για τη γλώσσα Python, η οποία υποστηρίζει συνδέσεις μέσω SSH & Telnet. To Netmiko υποστηρίζει και τη χρήση parsers για να παίρνετε δεδομένα σε δομημένη μορφή, είτε με τη χρήση textfsm/ntc είτε με χρήση PyATS/Genie. Το επόμενο free course αρχίζει στις 2 Μαρτίου, μπορείτε να γραφτείτε εδώ:
https://pynet.twb-tech.com/email-signup.html
Τα paid courses αφορούν Python (Advanced), Ansible & Nornir. Σας συμβουλεύω να γραφτείτε το στο email course το οποίο περιλαμβάνει κείμενο, παραδείγματα και video από την πλατφόρμα Vimeo.
NWMichl Blog
https://nwmichl.net/ - O Michael Shoen είναι ένας εξαιρετικός μηχανικός, χωρίς ίχνος ματαιοδοξίας, και πολύ καταρτισμένος σχεδόν σε κάθε τεχνικό πεδίο που αφορά τον αυτοματισμό.
TTL255 - Przemek Rogala’s blog
https://ttl255.com/ - Ο Przemek έχει ιδιαίτερο ταλέντο να συνδυάζει δικτυακά θέματα με κομμάτια automation υψηλών απαιτήσεων, όπως η σειρά του για jinja templates, ή για το Python SDK Pynetbox που χρησιμεύει για τη διευκόλυνση της διαχείρισης του API του Netbox.
Network to Code - NTC
https://blog.networktocode.com/ - Η εταιρεία που δημιουργήθηκε από ένα slack channel και κατέληξε να είναι ίσως η καλύτερη εταιρεία consulting για network automation.
Cisco Developer Blog
https://blogs.cisco.com/developer - Το κομμάτι των Cisco Blogs που αφορά στο NetDevOps και το Network Automation. Θα βρείτε εκεί και κάποια blog posts από μηχανικούς της κοινότητας μας ;)
Real Python Tutorials
https://realpython.com/ - Εξαιρετικό site όπου μπορείτε να βρείτε blog posts και videos οργανωμένα θεματικά για το πως να κάνετε συγκεκριμένα πράγματα με τον Python, πως να δουλέψετε με αρχεία, ή πως να δημιουργήσετε και να στείλετε emails, πως να διαβάσετε αρχεία κειμένου ή excel, κλπ. Έχει και δυνατότητα subscription για πιο προχωρημένα πράγματα.
Ψάξτε για εκπαίδευση
Vendor backed Sites
- Cisco Devnet - https://developer.cisco.com/ - Γραφτείτε στο πρόγραμμα στης Cisco για το δικτυακό αυτοματισμό και θα αποκτήσετε πρόσβαση σε μεγάλο αριθμό από resouces.
Τί είναι το Cisco Devnet; Δείτε αυτό https://youtu.be/YuCgIUORimU
- Cisco Devnet Learning Tracks - Περιεχόμενο για εκμάθηση οργανωμένο ανά περιοχή - https://developer.cisco.com/learning/tracks
- Cisco Devnet Learning Labs - Περιεχόμενο που λειτουργεί σε συνδυασμό με εργαστήρια στο Cloud της Cisco (Sandboxes) - https://developer.cisco.com/learning/labs
- Cisco Devnet Sandboxes - https://developer.cisco.com/site/sandbox/
- Cisco Devnet Sandbox Catalog - https://devnetsandbox.cisco.com/RM/Topology
- Cisco Learning Network - https://learningnetwork.cisco.com/s/
- Cisco Devnet Associate Prep Program - https://learningnetwork.cisco.com/s/learning-plan-detail-standard?ltui__urlRecordId=a1c3i0000007q9cAAA
- Cisco SDN Training Videos - https://learningnetwork.cisco.com/s/learning-plan-detail-standard?ltui__urlRecordId=a1c3i0000005hZzAAI
- Juniper - https://learningportal.juniper.net/juniper/user_activity_info.aspx?id=11478
- Redhat - https://www.redhat.com/en/blog/red-hat-provides-free-learning-opportunities
- Vmware Kubernetes Academy - https://kube.academy/
- Hashicorp - https://learn.hashicorp.com/
- Checkpoint - https://sc1.checkpoint.com/documents/latest/APIs/#introduction~v1.7%20
Learning Platforms
- Pluralsight - https://www.pluralsight.com/
- O’Reilly Online - https://www.oreilly.com/online-learning/
- Udemy - https://www.udemy.com/
- GNS3 Academy - https://gns3.teachable.com/
- Codemy - https://codemy.com/
- CBT Nuggets - https://www.cbtnuggets.com/
- LinkedIn - Η παλιά πλατφόρμα Linda.com - https://www.cbtnuggets.com/
- Pact - https://www.packtpub.com/free-learning
- IpSpace.net - Η πλατφόρμα του Ivan Pelpejnak - https://www.ipspace.net/Main_Page
Youtube
Αναζητήστε Use Cases
Special Websites/Search Engines
- Cisco Devnet Code Exchange - https://developer.cisco.com/codeexchange/
- Cisco Devnet Automation Exchange - https://developer.cisco.com/network-automation/
Github
What to read next
-
Πολύ καλή εισαγωγική παρουσίαση από τον Cisco Devnet Frontman Hank Preston από το Cisco Live On Demand Library (Cisco Live Barcelona 2020) εδώ
-
Ο Daniel Dibb είναι ένας πολύ γνωστός Network Architect, μέλος του CCIE Advisory Council, ο οποίος συντηρεί ένα εξαιρετικό και βραβευμένο blog site με τίτλο Lost in Transit
Ξεκίνησε φέτος μια προσπάθεια ως αρχάριος να προσεγγίσει το Network Automation και κατέγραψε την πορεία του μέχρι την απόκτηση του πρώτου του Network Automation Certification. Ξεκίνησε αρκετά επιφυλακτικά, και αυτό καταγράφεται στο πρώτο του blog, εδώ
-
How to get started with Network Automation, by Hank Preston - https://blogs.cisco.com/developer/learning-network-automation
-
A Development Team is more than the sum of its parts - Ένα blog post γραμμένο από τους Γ.Θ. και Κ.Δ. σχετικά με τον τρόπο και τα οφέλη της πραγματική συνεργασίας στο Development για Network Automation Projects - https://blogs.cisco.com/developer/team-more-than-sum