Dedykowane dla:
- administratorów IT, którzy pragną uzupełnić swoją wiedzę z zakresu programowania w jezyku Python i korzystania z pakietu Ansible w kontekście zarządzania środowiskiem IT
- inżynierów sieciowych, zainteresowanych rozszerzeniem swoich umiejętności i możliwości w zakresie automatyzacji zarządzania konfiguracją urządzeń sieciowych, zaawansowanego monitoringu i reakcji na zdarzenia
Wprowadzenie:
Podczas tego szkolenia uczestnicy zapoznają się ze współczesnym oprogramowaniem do automatyzacji zarządzania (Ansible) i poznają jego możliwości w zakresie zarządzania sprzętem sieciowym. Korzystając z języka programowania Python nauczą się zarówno korzystania z klasycznych metod automatyzacji takich jak skrypty expect, jak i nowoczesnych interfejsów zarządzania takich jak NX-API, Netconf/YANG czy RESTful, XML API. Kursanci zapoznają się także z możliwościami i metodami programowania urządzeń sieciowych przy wykorzystaniu natywnych pakietów deweloperskich SDK (Software Develpement Kit) takich jak onePK czy Cobra. Przetestują również możliwości języka programowania Python wbudowanego w niektóre sieciowe systemy operacyjne (np. NX-OS). Wszystkie omawiane zagadnienia zostaną zastosowane w praktyce poprzez odpowiednio dobrane ćwiczenia na sprzęcie firmy Cisco Systems.
Opis:
Szkolenie NetProg jest jednocześnie przyspieszonym kursem programowania w języku Python na poziomie średnio-zaawansowanym. Instruktor rozpocznie od wprowadzenia i omówienia wszystkich podstawowych konstrukcji języka wraz z praktycznymi ćwiczeniami. Omówi korzystanie z podstawowych, wbudowanych narzędzi, powłoki Pythona, środowiska IDLE, włącznie ze śledzeniem wykonywania kodu (trace) i usuwaniem błędów (debugging). Docelowo natomiast, kursanci zapoznają się z i będą korzystać z profesjonalych (acz darmowych) narzędzi IDE/RAD (Integrated Development Environment / Rapid Application Development). Poznają również podstawy korzystania z systemu kontroli wersji, po to aby przy wszystkich pozostałych ćwiczeniach z niego korzystać i nauczyć się pracy i rozwoju oprogramowania w grupie. Możliwość przeglądania różnic, przywołania poprzednich wersji kodu jest w pracy programisty niezwykle przydanta lub wręcz niezbędna.
Kolejnymi zadaniami programistycznymi będzie analiza gotowego programu, jego uzupełnienie i poprawienie. Następnie uczstnicy szkolenia przejdą do stworzenie własnego programu (netprog), którego celem będzie uzupełnienie możliwości pakietu Ansible o elementy tam nieosiągalne. Oprogramowanie będzie mogło być wykorzystywane we współpracy z Ansible lub niezależnie. Rozpoczną od najprostszych zadań, a w kolejnych ćwiczeniach będą dodawać coraz to bardziej wyrafinowane możliwości. Przy tej okazji zapoznają się z kolejnymi rozszerzonymi konstrukcjami języka oraz z możliwościami bogatego zestawu bibliotek standardowych i dodatkowych.
Wymagania:
- znajomość podstawowych technik programistycznych dowolnego języka programowania imperatywnego – np. umiejętność pisania prostych skryptów.
- przydatna również będzie znajomość podstawowych zagadnień sieciowych, podstawowych komend CLI na urządzeniach Cisco (np. poziom CCNA jest w zupełności wystarczający)
Tematyka:
Dzień 1
Sprawy organizacyjne
Przegląd metod programowania sprzętu sieciowego
- SNMP
- CLI
- Expect – CLI
- RPC
- Ansible
- Plan kursu
Wprowadzenie do Pythona
- Instalacja Pythona
- Python jako kalkulator
- Zmienne
- Zapis instrukcji do pliku, uruchamianie z pliku
- Trace, pdb, pudb
Python IDEs
- IDLE
- Profesjonalny pakiet IDE
Systemy kontroli wersji (VCS)
- Wprowadzenie, podstawowe operacje
- Git, github
- Obsługa VCS w IDE
Python – podstawowe konstrukcje
- Comments, variables, Strings, Data-structures
- Lab – struktury danych
- Conditional Expressions, Loops
- Lab – pętle
- Functions, Classes, Objects
- Lab – funkcje, obiekty
- Imports, Project structure
- Lab – import
- File operations
- Lab – pliki
Dzień 2
Python – analiza algorytmu
- Clone projektu Git
- Zrozumienie algorytmu, debuggowanie
- Moduł logowania – omówienie
- Modyfikacja algorytmu – z podziałem na grupy
- Wykorzystywanie gotowych funkcji – korzystanie z dokumentacji
Programowanie Sieci – rozpoczęcie projektu netprog
- Pyexpect – zasady, możliwości, pułapki
- Netmiko
- Lab – Testy netmiko w powłoce
- Lab – Program ‚netprog’ – zdalne wykonywanie poleceń i weryfikacja
- Lab – Program ‚netprog’ – wycofywanie konfiguracji
- Lab – Program ‚netprog’ – argumenty wejściowe, czytanie komend z pliku
Ansible
- Mechanizm działania
- Instalacja
- Zbiór urządzeń
- Komendy Ad-Hoc
- Lab – komendy Ad-Hoc
- Pliki konfiguracyjne
- Playbooks – podstawy
- Lab – playbooks
- Moduły
- Moduły do sieci
- Lab – Konfigurowanie przełączników z Ansible
- Lab – Współraca ‚netprog’ z Ansible
Dzień 3
NX-API
- Sposób działania
- Uruchamianie – feature, środowisko Sandbox
- Lab – założenie vlan-u, skonfigurowanie trunk-a, weryfikacja
- Lab – Opcja ‚-nxapi’ programu ‚netprog’
Netconf / YANG
- Sposób działania Netconf, RFC
- Możliwości, operacje
- YANG
- ncclient – możliwości, dokumentacja
- Lab – interaktywny shell
- Lab – ncclient
- Lab – Opcja ‚-netconf’ programu ‚netprog’
Python w NX-OS
- Wywoływanie, parametry
- Biblioteki dostępne
- Logging
- Lab – wywolanie skryptu
- Lab – EEM
RESTful API
- Sposób działania, transport
- Gdzie wspierane
- Przykłady użycia
- Lab – CSR1kv, shell
- Lab – użycie w programie w pythonie
Natywny Python SDK: onePK
- Sposób działania
- Przegląd dokumentacji
- Przykłady
- Lab – zrozumienie, uruchamianie i testowanie przykładów
Dzień 4
Ansible – zaawansowane konstrukcje i możliwości
- Jinja2, filtry
- Warunki
- Pętle
- Strategie
- Szyfrowane schowki
- Tagi
- Lab – ćwiczenia do powyższych
Python – zaawansowane konstrukcje i moduły – Integracja ‚netprog’ z Ansible
- Lab – Czytanie plików konfiguracyjnych
- Lab – Integracja konfiguracji z Ansible – hosts
- Lab – Bezpieczne wycofywanie komend
- Lab – Bezpieczne zapisanie hasła
- Lab – Możliwość tworzenia ciągu czynności przez Ansible dla ‚netprog’
- Lab – Commit przez Ansible dla ‚netprog’
- Lab – Korzystanie z szablonów dla ‚netprog’
- Lab – Budowanie topologii dla łączy L2, lint
- Lab – Dwustronne operacje na łączach L2 wg topologii
Dzień 5
Programowanie w ACI (Application Centric Infrastructure i Cisco Nexus 9000)
- RESTful interface
- Lab – obserwacja zdarzeń
- Lab – natywny SDK: cobra + arya
Programowanie UCS (Unified Computing System – Cisco blades)
- Natywny Python SDK – opis
- Lab – Tworzenie grupy obiektów
Python – zaawansowane techniki
- Udostępnianie RESTful / XML Northbound API
- Lab – korzystanie z gotowego API dla zarządzania aplikacją
- Testowanie – DocTests, UnitTests
- Lab – UnitTesting dla aplikacji ‚netprog’
- Multithreading / multiprocessing – podstawy
- Lab – Równoległe wykonanie zadań w aplikacji ‚netprog’