Czym jest DevNet Code Exchange

Czym jest DevNet Code Exchange

Czym jest DevNet Code Exchange

Wśród wielu serwisów udostępniających skrypty automatyzacji warto zwrócić uwagę na Cisco DevNet Code Exchange. Jest to platforma, na której zebrane są stworzone przez Cisco oraz niezależnych developerów i entuzjastów skrypty ułatwiające automatyzację produktów z ekosystemu Cisco. Jeżeli więc pracujesz z urządzeniami tej firmy na co dzień, to powinieneś mieć ten serwis w swoich zakładkach. Mój projekt, CMLNetKit, także znajduje się w tym repozytorium.

Czytaj dalej
Pierwsza styczność z API na Fortigate

Pierwsza styczność z API na Fortigate

Pierwsza styczność z API na Fortigate

Trafił do mnie na jakiś czas firewall Fortigate 60E, więc postanowiłem skorzystać z okazji i zobaczyć co oferuje platforma od strony programowalnego zarządzania. Z urządzeniami Fortigate mam styczność co jakiś czas, wielu mniejszych klientów z nich korzysta. Nie miałem okazji jednak wykorzystywać ich interfejsu API czy programowalnych funkcjonalności. Opisane funkcje testowałem na najnowszym firmware 7.0.0.

Czytaj dalej
AdminDays - skrypt z warsztatów

AdminDays – skrypt z warsztatów

AdminDays - skrypt z warsztatów

W zeszłym tygodniu, 25 marca, w ramach eventu AdminDays miałem przyjemność poprowadzić warsztaty/prezentację związaną z automatyzacją w środowisku sieciowym. W czasie spotkania pokazałem proces tworzenia skryptu w języku Python, który wykonuje proste czynności administracyjne związane z odczytaniem i rekonfiguracją interfejsu Loopback. Z samym urządzeniem połączenie następuje za pomocą protokołu RESTCONF, a jeżeli ten jest niedostępny to za pomocą SSH z wykorzystaniem biblioteki Netmiko. Skrypt, wraz z zestawem linków do podstawowych bibliotek, które każdy programista sieciowy powinien znać, znajduje się w repozytorium GitHub Szkoły DevNet.

Czytaj dalej
Jak dodałem funkcjonalność MaxReplicas w docker-py i Ansible

Jak dodałem funkcjonalność MaxReplicas w docker-py i Ansible

Jak dodałem funkcjonalność MaxReplicas w docker-py i Ansible

W klastrach Docker Swarm możemy uruchamiać serwisy w dwóch trybach – global oraz replicated. Jeżeli wybierzemy pierwszy z nich, to na każdym węźle wchodzącym w skład klastra zostanie uruchomiona dokładnie jednak kopia serwisu. W trybie replicated wskazujemy, ile kopii serwisu chcemy mieć uruchomionych, ale to Swarm decyduje, na których węzłach zostaną one uruchomione. Możemy w pewnym stopniu na nie wpływać za pomocą tak zwanych placement constraints i placement preferencesJest też parametr MaxReplicas, którego wsparcie napisałem dla biblioteki docker-py oraz do modułu docker_swarm_service kolekcji community.docker w projekcie Ansible. Korzytanie z niego jest bardzo proste.

Czytaj dalej
Tajemnicze *args i **kwargs

Tajemnicze *args i **kwargs

Tajemnicze *args i **kwargs

Jak w każdym języku programowania także w Pythonie znajdziemy ciekawe i zastanawiające konstrukcje składni. Na przykład dziwnie wyglądające *args i **kwargs w języku Python. Dziś pokażę Ci w jaki sposób poradzić sobie w sytuacji, gdy wywołujemy funkcję, ale nie wiemy ile argumentów do niej zostanie przekazanych. Z taką sytuacją w świecie automatyzacji infrastruktury mamy do czynienia dość często. Rozwiązanie w tym przypadku jest banalnie proste.

Czytaj dalej
Skrypt Python w Jenkins

Uruchamiamy skypt Python w Jenkins

Skrypt Python w Jenkins

Jenkins to elastyczne narzędzie do tworzenia i wykonywania scenariuszy w modelu CI/CD. Scenariusz taki może składać się z przeróżnych kroków, w trakcie których wykorzystujemy zewnętrzne narzędzia takie jak skrypty Pythona. W dzisiejszym artykule zaprezentuję Ci trzy sposoby wywoływania skryptów Python w Jenkins w projektach opisywanych za pomocą zdefiniowanych akcji jak i jako pipeline.

Czytaj dalej
Numery telefonów

Numery telefonów

Numery telefonów

Gdy programujemy skrypty związaną z contact center, czy innymi aplikacjami z rodziny telefonii IP, bardzo szybko spotkamy się zadaniami, w których musimy przetworzyć numery telefonów. Z produktów związanych z telefonią numer uzyskujemy zazwyczaj w formacie E.164. Dane zapisane w różnego rodzaju bazach danych czy plikach tekstowych, które nasze skrypty będą przetwarzać, prawie na pewno nie będą zawsze zgodne z tym międzynarodowym standardem. Z takim problemem miałem do czynienia niedawno, gdy w projekcie dla mojego klienta pisałem dodatkowe skrypty do Amazon Connect, czyli call center w chmurze Amazona. W operowaniu różnego rodzaju formatami numerów telefonicznych pomogła mi biblioteka phonenumbers.

Czytaj dalej
O automatyzacji sieciach - wywiad z Przemkiem Rogalą

O automatyzacji w sieciach – wywiad z Przemkiem Rogalą (część II)

O automatyzacji sieciach - wywiad z Przemkiem Rogalą

W pierwszej części mojej rozmowy z Przemkiem Rogalą, twórcą bloga TTL255, rozmawialiśmy o egzaminie DEVASC i certyfikacji Cisco DevNet. Certyfikaty byłby jednak zbędne, gdyby nie rzeczywiste projekty, w których wiedzę i doświadczenie zamienia się na konkretne rozwiązania. Zarówno Przemek jak i ja realizujemy tego typu projekty, choć na innych rynkach. W drugiej części mojej rozmowy skupimy się właśnie na rzeczywistym wykorzystaniu automatyzacji, projektach, programowaniu i narzędziach, które wykorzystujemy.

Czytaj dalej
Podkreślenia w nazwach zmiennych i funkcji

Podkreślenia w nazwach zmiennych i funkcji

Podkreślenia w nazwach zmiennych i funkcji

Na pewno nie umknęło Twojej uwadze, że w języku Python nazwy niektórych obiektów, zmiennych czy funkcji składają się z podkreśleń umieszczanych na początku, na końcu lub po obu stronach. Jest to celowy zabieg, konwencja i standard, który ma na celu uporządkowanie kodu zarówno pod względem semantycznym, funkcjonalnym jak i optycznym, czyli ułatwić jego czytanie. W dzisiejszym artykule wyjaśnię Ci jakie znaczenie mają podkreślenia w tych konkretnych przypadkach.

Czytaj dalej