Korzystając z letniej promocji na CiscoPress zaopatrzyłem się w dwa tytuły związane z automatyzacją. Jedną z tych książek jest świeża, bo wydana ledwo 19 lipca, pozycja “Cisco DevNet Professional DEVCOR 350-901 Study Guide“. Jej autorem jest Constantin Mohorea. Podejście do egzaminu DEVCOR znajduje się w moich planach, ale nie najbliższych. Zapoznałem się jednak chętnie z tą książką by sprawdzić, na ile pomoże mi ona przygotować się w przyszłości do tego egzaminu.
Felieton
Czytaj dalej
Jak oceniam egzamin DEVASC 200-901
23 grudnia podszedłem do egzaminu Cisco DevNet Associate (DEVASC 200-901) i zdałem go uzyskując certyfikat. Długo się przed tym broniłem, ale powiedzmy, że presja otoczenia mnie zmusiła – kilku znajomych zdało ten egzamin też ostatnio. Poza tym skoro mam już “odznakę” DevNet Code Contributor, której oni nie mają, to mogę dołożyć do kolekcji DevNet Associate oraz DevNet Class of 2020. W dzisiejszym artykule podzielę się swoimi wrażeniami z samego egzaminu i przygotowań do niego.
Przez Piotr Wojciechowski, temu
Felieton
Certyfikacja Cisco DevNet
Nie będę ukrywał, że nadchodząca premiera nowej ścieżki certyfikacyjnej Cisco DevNet była jedną z motywacji do stworzenia Szkoły DevNet. Jednak nie jedyną. Program zaproponowany przez Cisco jest ciekawy, ale nie można powiedzieć, że wyczerpujący. Nie chodzi o to, że skupiony jest na produktach oferowanych przez Cisco, co jest dość naturalne. Po prostu skonstruowany jest wokół jednego z obszarów automatyzacji. W większości rzeczywistych projektów będzie to działka zbyt wąska, a co za tym idzie może skutkować porażką całego projektu. Certyfikacja Cisco DevNet jest jednak bardzo dobrym punktem, aby po poznaniu fundamentów swobodnie rozwijać swoje kompetencje na innych obszarach automatyzacji.
Cisco DevNet, czyli co musisz umieć
Certyfikacja Cisco DevNet podzielona jest na dwa poziomy – Associate oraz Professional. Na poziomie podstawowym musisz zdać jeden ogólny egzamin. Przystępując do certyfikacji Professional konieczne jest zdanie dwóch egzaminów – ogólnego oraz jednego ze specjalistycznych. Podział taki wydaje się ciekawy i sensowny. Osoba zainteresowana wiedzą z zakresu automatyzacji w Data Center powinna się skupić na specyficznych zagadnieniach z tej działki, a nie na sucho zgłębiać tajniki Collaboration czy IoT.
Oprócz ogólnej wiedzy sieciowej związanej z zasadami działania sieci komputerowych czy projektowania infrastruktury możemy wyróżnić kilka obszarów technologicznych, których nie tylko podstawy należy zgłębić
- GIT – infrastrukturę programujemy, a nie konfigurujemy. Zatem piszemy swego rodzaju programy czy algorytmy. Podstawą zarówno wydajnej pracy grupowej jak i bezpieczeństwa jest odpowiednie zarządzanie kodem.
- REST API – jest to preferowana metoda komunikacji Twojego skryptu z urządzeniem czy chmurą publiczną. Osoby tworzące własne skrypty muszą nie tylko rozumieć jak działa REST API, lecz także jak w sposób bezpieczny zaimplementować je w swoim kodzie. Nie należy przy tym zapominać o starszych mechanizmach jak RESTCONF.
- Docker – konteneryzacji poddawane są nie tylko aplikacje, lecz także urządzenia sieciowe. Wiele narządzi do monitoringu czy automatyzacji domyślnie działa w kontenerach. Nic więc dziwnego, że znajomość Dockera jest niezbędna. Jednak wiedza o samym Dockerze często jest już niewystarczająca. Warto znać co najmniej jeden z dwóch najbardziej popularnych mechanizmów orkiestracji jakimi są Docker Swarm oraz Kubernetes.
- Ansible – jest to narzędzie do provisioningu konfiguracji i dalszego zarządzania nie tylko urządzeniami.
- YANG/YAML/JSON/XML – języki opisu struktury, tak je zbiorczo nazwijmy na razie. Bez nich ani rusz.
Zostaniesz programistą
Nawet jeżeli nie będziesz developerem piszącym kod, to jednak musisz oswoić się z myślą, że wchodzisz w świat projektów programistycznych. Przestajesz tworzyć konfigurację, a element aplikacji. Zatem twoje podejście do pracy musi być takie samo, albo co najmniej zbliżone do tego, jakie programiści wykorzystują w swojej pracy. Zacznij od zrozumienia czym jest CI/CD (Continuous Integration / Continuous Deployment) i jak to co stworzysz będzie wkomponowane w ten proces. Koniecznie zapoznaj się z takimi narzędziami jak Jenkins, Terraform, Puppet, czy wspomniany już Ansible.
Nie zapominaj jednak o fundamentalnej wiedzy z zakresu routingu, switchingu czy security. Nie pozwól zakurzyć się swojej wiedzy o różnych produktach. Zmieniając swoją rolę z “wyklikiwacza” konfiguracji w programistę nie zapomnij, że samo urządzenie czy aplikacja nadal działa tak samo. Twój router nie zmienił sposobu routowania pakietów ponieważ konfigurację wprowadziłeś za pomocą RESTCONF a nie CLI. Zainstalowany w sieci FirePower Thread Defence nadal w ten sam sposób będzie analizował zawartość pakietów niezależnie, czy konfigurację wprowadzisz za pomocą REST API czy “staroświeckiego’ GUI.
Projektując zautomatyzowany proces tak na prawdę piszesz algorytm. Sekwencję kroków do wykonania, na którą mogą wpływać różne zmienne. To też jest programowanie, choć może nie wiązać się z napisaniem nawet jednej linii kodu. Często może zostać sprowadzone do poukładania klocków i odpowiedniego zarządzania parametrami, które są do nich przekazywane i z nich odbierane. Jednak nadal jest to programowanie, w którym musisz myśleć o tym jakimi parametrami operujesz i jak poszczególne elementy algorytmu będą wpływały na siebie nawzajem.
Postaraj się o dostęp do środowiska testowego, nigdy nie eksperymentuj na środowisku produkcyjnym.
Przez Piotr Wojciechowski, temu