Cisco NX-OS Network Automation med Python
Nätverksautomation
- Processen för att använda programvara för att automatisera nätverksprovisionering, testning, distribution och nätverkshantering
- För att hjälpa till att maximera nätverkets effektivitet och funktionalitet
- Nätverk är komplexa och skrymmande till sin natur
- Manuella operationer – fler förseningar
- Automatisering gör nätverken mer smidiga och lyhörda för förändringar
- Fördelar:
- Förbättrad operativ effektivitet
- Minskade fel
Nätverksautomationsarkitektur
Nätverksprogrammerbarhet
- Det är en uppsättning verktyg för att distribuera, hantera och felsöka en nätverksenhet
- Nätverksingenjörsperspektiv – interagerar med en enhet eller grupp av enheter
- Mjukvaruutvecklarperspektiv – abstrahera nätverket. Att se hela nätverket som en enda enhet och manipulera det med mjukvara
Fördelar med nätverksprogrammerbarhet
- Minskad OPEX
- Anpassning
- Minskade mänskliga fel
- Operativ flexibilitet
- Ökad möjlighet till innovation
Application Programming Interface (API)
- API:er är mekanismer som används för att kommunicera med applikationer och annan programvara.
- Ett API kan utföra olika funktioner baserat på var de finns i flödet
- Används för att kommunicera med olika komponenter i nätverket genom mjukvara
- API:er är vanligtvis RESTful API:er
Representational State Transfer (REST) API:er
- Ett API som använder REST hänvisas ofta till ett RESTful API
- RESTful API:er använder Hypertext Transfer Protocol (HTTP)-metoder för att samla in och manipulera data.
HTTP-funktion | Handling |
FÅ | Läsa |
POSTA | Skapa |
LAPPA | Uppdatera/Ändra |
SÄTTA | Uppdatera / Ersätt |
RADERA | Radera |
HTTP-statuskoder
HTTP-STATUS
KODA |
RESULTAT | VANLIG ANLEDNING |
200 | Ok | Använder GET eller POST för att utbyta data med
ett API |
201 | Skapad | Skapa resurser genom att använda ett REST API-anrop |
400 | Dålig begäran | Begäran misslyckades på grund av problem på klientsidan |
401 | Obehörig | Klienten är inte autentiserad för att komma åt webbplatsen eller
API-anrop |
403 | Förbjuden | Tillträde beviljas inte baserat på tillhandahållet
referenser |
404 | Hittade inte | Sida på HTTP URL plats finns inte
eller är dold |
Netmiko överview
- Netmiko – Python-biblioteket används flitigt för att interagera med nätverksenheter
- Bibliotek med flera leverantörer
- Cisco IOS/IOS-XE, NX-OS, brandväggar, etc.
- Utökat stöd för Paramiko-bibliotekets SSH-funktionalitet
- Går in i konfigurationslägen
- Skickar kommandon
- Hämtar utgångar
- Ta hand om ja/nej-uppmaningar
NAPALM överview
- NAPALM – Abstraktionslager för nätverksautomation och programmerbarhet med stöd för flera leverantörer
- Tillhandahåller funktioner som tillåter:
- Konfigurationsåtgärder (commit eller rollback)
- Hämta tillståndsdata från nätverksenheter
- Innehåller metoder för att upprätta anslutning till nätverksenheter
- Kan arbeta tillsammans med automationsverktyg – Ansible
- Har stöd för olika nätverksoperativsystem:
- IOS, IOS-XR, NX-OS, JunOS, EOS, etc.
NAPALM Operations
- Ersätt – Tillåter användare att ersätta den befintliga konfigurationen som körs med en helt ny konfiguration.
- Sammanfoga – Tillåter användare att slå samman konfigurationsändringar från en file till den körande konfigurationen på enheten.
- Jämför – Jämför den nyligen föreslagna konfigurationen med den befintliga. Gäller endast utbytesdrift och inte sammanfogningsdrift.
- Kasta – Återställer sammanfogningskonfigurationen file till en tom file. Således tillåter inte den nya konfigurationen att tillämpas på enheten.
- Commit – Överför den föreslagna konfigurationen till nätverksenheten. Med andra ord, används för att distribuera somtaged konfiguration.
- Rollback – Återställ (återställ) den pågående konfigurationen till den sparade konfigurerade före den senaste commit.
Mallar med Jinja2
- Jinja är ett modernt mallspråk för Python – modellerat efter Django-mallar
- Tillåter användaren att enkelt interagera med Python-programmet
- Använd data för att snabbt generera dynamiskt innehåll
- Fördelar:
- Mallarv
- Optimal just-in-time sammanställning
- Enkel felsökning
- Konfigurerbar syntax
- Används ofta med web ramar som Flask
- Konfigurationshanteringsverktyg – Ansible, Nornir, etc.
Avgränsare
Nornir överview
- Python-baserat automationsramverk
- Hantera nätverks- och värdinventering och tillhandahåll ett gemensamt ramverk att skriva plugins för nätverksenheter och värdar
- Kräver minst Python version 3.6.2
- Flertrådig – Standard till 20 arbetartrådar
- Initialiserad med config file – refererar par andra files
- Värdinventering file
- Grupp file
- Alla dessa files är skrivna i YAML-format
Nornir Advantages
- Python eller Golang (Gornir)
- Återanvänd befintliga bibliotek – napalm, netmiko
- Snabb värdfiltrering baserat på alla attribut eller kombinationer av attribut
- Mycket snabb på grund av användning av trådar
- Kan användas för att bygga mycket flexibla och utbyggbara automationsverktyg med hjälp av Flask, Django, etc.
- Utför automatiskt cachning och stänger öppna anslutningar
Extra resurser och referenser
Cisco Press News
Grundläggande information om nätverksprogrammerbarhet och automatisering [Läs mer] CCNP och CCIE Security Core SCOR 350-701 Official Cert Guide
https://www.ciscopress.com/store/ccnp-and-ccie-security-core-scor-350-701-official-cert-9780135971970
Cisco DevNet Professional DEVCOR 350-901 Studieguide
https://www.ciscopress.com/store/cisco-devnet-professional-devcor-350-901-study-guide-9780137500048
Andra användbara resurser:
Interview med Vinit Jain, Ciscos främsta evenemangsbidragsgivare
https://community.cisco.com/t5/networking-documents/interview-with-vinit-jain-cisco-s-top-events-contributor/ta-p/3156059
Vinits publikationer
http://www.ciscopress.com/authors/bio/255ee209-1418-4938-9a42-d3bece2b46c6
Dokument/resurser
![]() |
Cisco NX-OS Network Automation med Python [pdf] Användarmanual NX-OS Network Automation med Python, Network Automation med Python, med Python |