Jak określam założenia projektu automatyzacji

Jak określam założenia projektu automatyzacji

Jak określam założenia projektu automatyzacji

W najbliższych artykułach pokażę Wam proces budowania narzędzia do automatyzacji oraz jak korzystać z narzędzi do zarządzania kodem i pracy grupowej. Gdy rozpoczynam pracę nad nowym projektem, zawsze zaczynam od określenia kilku kluczowych jego parametrów. Jednym z nich jest oczywiście nazwa, którą zawsze mogę zmienić, dlatego początkowo nie musi ona porywać tłumów. Ciężej jednak odzyskać czas stracony na kodowanie niepotrzebnych funkcjonalności czy takich, które znajdziemy w publicznie dostępnych bibliotekach. Zamiast tego lepiej skupić się na esencjalnych dla tworzonego projektu elementach i pamiętać o nałożonych na projekt ograniczeniach. Tak, są one konieczne, a określając je, powinniśmy postępować zgodnie z zasadami, o których pisałem w poprzednim artykule. Dlatego na początek przedstawię Ci, jakie są moje założenia w tym projekcie.

Założenia projektu dotyczące funkcjonalności

W mojej głowie stworzyła się już wizja aplikacji z tyloma „ficzerami”, że CML 2.0 może się przy niej schować. I to oczywiście w pierwszej wersji, potem ma być tylko lepiej! Właśnie dlatego, aby nie ponieść się wodzom fantazji, a tym samym nie zaprzepaścić pomysłu na pomocny produkt, konieczne jest jasne określenie podstawowych celów. Zawsze określamy założenia projektu automatyzacji, zanim przystąpimy do jakichkolwiek prac. Podstawowe problemy, które chcę rozwiązać za pomocą swojej aplikacji to:

  1. Po ułożeniu topologii w ramach wyznaczonych przeze mnie podsieci chcę, aby moja aplikacja automatycznie zaadresowała:
    • Połączenia L3 pomiędzy urządzeniami
    • Wszystkie interfejsy Loopback0
    • Interfejsy służące do zarządzania
  2. Zmieniła konfigurację obiektów „External Connection” na Bridge 

Nie jest tego dużo. Można by się spytać, dlaczego tylko tyle? Na początku jest ich niewiele po to, by stworzyć aplikację, która rozwiąże moje najbardziej palące problemy. Wyręczy mnie w czynnościach, na których budując symulację, tracę najwięcej czasu. Gdy to się uda, mogę aplikację dalej rozwijać.

Ograniczenia i ramy

Aby stworzyć funkcjonalny produkt, założenia projektu muszą obejmować także listę ograniczeń i wyznaczyć ramy technologiczne, w jakich chcę się zmieścić. Są to minimalne funkcjonalności, które chcę zaimplementować i narzędzia, z których chcę korzystać. Moje ramy odnoszą się zarówno do elementów funkcjonalnych, jak i technicznych tworzonej aplikacji:

  1. W pierwszej wersji urządzenia, które będą obsługiwane, to IOS i IOS XE.
  2. Aplikacja ma jednak pozwalać w sposób prosty na dołączanie do obsługi pozostałych typów urządzeń dostępnych w CML 2.0. Oznacza to, że powinna być ona napisana z myślą pod przyszły jej rozwój.
  3. W możliwie największym zakresie aplikacja ma korzystać z API dostępnego w CML 2.0
  4. Językiem aplikacji będzie Python 3.7 i w miarę możliwości będę ograniczał liczbę wykorzystywanych bibliotek.
  5. Interfejs programu, jak i komentarze w kodzie, będą w języku angielskim.
  6. Będę programował obiektowo.
  7. Kod będę utrzymywał jako publiczny projekt na GitHub.

Dlaczego zdecydowałem się na programowanie obiektowe? Po wstępnej analizie dokumentacji API stwierdziłem, że stworzenie kodu obiektowego może przyszłościowo sprawić, że będzie on bardziej „przenaszalny”. Poza tym dzięki programowaniu w ramach projektu Ansible czuję się dość komfortowo, gdy piszę obiektowo w języku Python.

Być może powyższe ograniczenia będę musiał zweryfikować w trakcie projektu.

Możesz być częścią tego projektu! Napisz w komentarzu, poniżej jakie funkcjonalności uznajesz za kluczowe? Jakie narzędzia wybierzesz? W jakich ramach się zamkniesz? Czy przyjąłbyś inne założenia niż ja? Jeżeli tak to dlaczego?

Backup konfiguracji routera za pomocą Ansible

Backup konfiguracji routera za pomocą Ansible

Backup konfiguracji routera za pomocą Ansible

Kolejne dni pracy z Cisco Modeling Labs 2.0. Przygotowywałem się do pierwszego wykorzystania go w większej topologii i scenariuszu w ramach webinaru. Ale tym razem nie będę pisał o CML 2.0. Przygotowując scenariusza laba chciałem mieć zapisane wzorcowe konfiguracje urządzeń z kolejnych etapów. Niestety CML 2.0 nie pozwala na łatwe zgranie konfiguracji z urządzeń biorących udział w symulacji. Napisanie playbooka wykonującego backup konfiguracji routera za pomocą Ansible jest przecież bardzo proste.

Czytaj dalej
Pierwsze kroki z Terraform

Pierwsze kroki z Terraform

Pierwsze kroki z Terraform

Od początku roku przygotowałem kilka labów typu PoC (Proof of Concept), webinariów oraz prezentacji, w ramach których używałem rozwiązań w chmurze Azure. Dema i testy mają jedną wspólną cechę – wykonuje się je z modyfikacjami wielokrotnie. W takich sytuacjach staram się korzystać ze zautomatyzowanych narzędzi do budowy infrastruktury. Do takich należy choćby Terraform. Zanim jednak pokażę Ci fragmenty konfiguracji budujących środowisko do wspomnianych projektów, zobacz, w jaki sposób Terraform zainstalować i uruchomić.

Czytaj dalej
Poznaj JSON

Poznaj JSON-a

Poznaj JSON

Konfigurując mechanizmy automatyzujące codzienne czynności, bardzo szybko spotkasz się z koniecznością przekazywania danych pomiędzy modułami, pomiędzy aplikacjami, czy pomiędzy Twoją aplikacją a interfejsem API. Zmienne systemu operacyjnego do takich zadań nie wystarczą, dlatego musisz skorzystać z jednej z dostępnych struktur danych. Znajomość dwóch z nich jest wręcz niezbędna – są to XML i JSON. Osobiście preferuję korzystanie z tego drugiego, gdzie tylko jest to możliwe. Przede wszystkim ze względu na lepszą czytelność informacji i prostotę użycia.

Czytaj dalej
Instalacja Dockera za pomocą Ansible

Instalacja Dockera za pomocą Ansible

Instalacja Dockera za pomocą Ansible

Ostatni artykuł, w którym pokazałem jak skonfigurować API Dockera za pomocą playbooka Ansible zaowocował przysłanym mi pytaniem, czy równie prosto da się zautomatyzować instalację samego Dockera. Oczywiście że się da! Pierwsze moduły do Ansible miały na celu ułatwić zarządzanie pakietami i konfigurację systemów typu Linux. Pokarzę Ci teraz fragmenty z mojego playbooka (poszczególne zadania), którego używam do instalacji Dockera na RaspberryPi i dystrybucji Raspbian. Instalacja Dockera za pomocą Ansible składa się jedynie z kilku zadań.

Czytaj dalej
Uruchamiamy API Dockera za pomocą Ansible

Uruchamiamy API Dockera za pomocą Ansible

Uruchamiamy API Dockera za pomocą Ansible

W artykule „API Dockera” opisywałem dlaczego warto aktywować API na interfejsach sieciowych maszyny, oraz pokazałem kilka metod jak to zrobić. W różnego rodzaju testach, które przeprowadzam, rozpoczynam je od instalacji systemu operacyjnego. Manualne wprowadzanie za każdym razem zmian w konfiguracji byłoby krótko mówiąc marnowaniem czasu. Pokarzę Ci teraz w jaki sposób zautomatyzować tą pojedynczą czynność za pomocą Ansible. 

Czytaj dalej
Ansible 2.10 - nadchodzą zmiany

Ansible 2.10 – nadchodzą zmiany

Ansible 2.10 - nadchodzą zmiany

Każdy rozwinięty projekt osiąga taki moment , w którym niezbędne jest wprowadzenie w nim pewnych zmian. Mają one zapewnić jego dalszy rozwój i jeszcze większy sukces. Do takiego punktu niewątpliwie doszedł Ansible. Wraz z wydaniem Ansible 2.10, prawdopodobnie w okolicach połowy tego roku, ujrzymy ten sam produkt, ale w nieco odmienionej formule budowy i zarządzania kodem. Dla mnie, jako jednego z programistów, którego kod i całe moduły są częścią Ansible, jest to ciekawe doświadczenie.

Czytaj dalej