>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

Jak zorganizować infrastrukturę sieciową za pomocą NetBox

Logo NetBox

Każdy inżynier sieciowy lub administrator systemów prawdopodobnie ma smutną historię o arkuszu kalkulacyjnym Excel. Przez lata śledzili w nim dostępne adresy IP, aż ktoś przypadkowo przypisał ten sam adres zarówno do bramy, jak i do nowego serwera bazodanowego. Jeśli chodzi o fizyczne szafy w serwerowni, dokumentacja zwykle pozostaje w tyle za rzeczywistością o kilka miesięcy. Nikt nie pamięta dokładnie, do którego portu panelu krosowego podłączony jest ten niebieski kabel.

Projekt NetBox powstał w 2016 roku jako bezpośrednia odpowiedź na ten chaos. Zbudowany w Pythonie i Django, został pomyślany jako zastąpienie fragmentarycznych systemów zarządzania adresami IP (IPAM) i zarządzania zasobami centrum danych (DCIM). Dziś repozytorium zdobyło ponad 21 000 gwiazdek na GitHub i stało się de facto standardem utrzymywania autorytatywnego stanu sieci.

Pulpit NetBox

Czym jest Source of Truth i dlaczego go potrzebujesz

Główną zasadą stojącą za NetBox jest koncepcja Source of Truth — pojedynczego źródła autorytatywnych informacji. NetBox przechwytuje zamierzony stan sieci, a nie jej bieżący stan operacyjny.

To fundamentalne rozróżnienie. Program nie odpytuje przełączników przez SNMP ani nie skanuje portów. Opisuje, jak sieć powinna być skonfigurowana zgodnie z projektem inżyniera.

Architektura referencyjna automatyzacji sieci

Ta separacja zasadniczo zmienia podejście do automatyzacji. Zamiast ręcznie konfigurować urządzenia, a następnie tworzyć raporty, inżynier wprowadza zmiany bezpośrednio w bazie danych NetBox. Skrypty lub systemy orkiestracji, takie jak Ansible i Salt, pobierają następnie te parametry przez REST API, generują konfiguracje i wdrażają je na urządzeniach.

Główne funkcje

Deweloperzy celowo skupili się na wymaganiach specyficznych dla sieci, więc model danych jest gotowy do użycia natychmiast po instalacji.

1. Szczegółowe modelowanie fizyczne i logiczne

System może ujednolicać wszystkie warstwy infrastruktury:

  • Lokalizacje obiektów, serwerownie, szafy i konkretne jednostki
  • Typy urządzeń, moduły rozszerzeń, zasilacze i interfejsy sieciowe
  • Śledzenie trasy kabli od portów serwera do portów przełącznika rdzeniowego
  • Prefiksy IP, pule adresów, VLANy i VRFy

Interfejs może wizualizować szafy z zainstalowanym sprzętem i śledzić pełne trasy kabli przez panele krosowe.

Widok szafy

Śledzenie kabli

2. Generowanie konfiguracji za pomocą Jinja2

Szablony Jinja2 można przechowywać bezpośrednio w NetBox. Szablony te pobierają parametry z bazy danych i generują gotowe do użycia konfiguracje dla urządzeń Cisco, Juniper, Mikrotik lub serwerów Linux. Szablony można przesyłać przez interfejs webowy lub synchronizować z zewnętrznym repozytorium git.

3. Niestandardowe skrypty i webhooki

Operacje rutynowe, takie jak uruchomienie nowego oddziału, pochłaniają znaczną ilość czasu przy ręcznym wypełnianiu dziesiątek formularzy. NetBox zawiera wbudowaną obsługę niestandardowych skryptów Python. Piszesz skrypt z niezbędnymi polami wejściowymi, a inżynier uruchamia go bezpośrednio z przeglądarki. Skrypt automatycznie przydziela wymagane podsieci, tworzy urządzenia i przypisuje adresy zgodnie z zasadami firmy.

Webhooki umożliwiają integrację z innymi usługami. Gdy dodajesz nowy serwer, webhook natychmiast wysyła zdarzenie do systemu monitoringu lub aktualizuje rekord na serwerze DHCP.

4. Kontrola zmian i reguły walidacji

System prowadzi pełny dziennik audytu wszystkich działań. Możesz dokładnie zobaczyć, kto zmienił status portu, kiedy został przydzielony adres i jaki request był z tym powiązany.

Aby zapobiec naruszaniu przez pracowników standardów firmy, administratorzy mogą konfigurować niestandardowe reguły walidacji. Możesz na przykład zabronić usuwania urządzeń oznaczonych jako „Aktywne" lub wymagać obowiązkowych pól z numerami inwentarzowymi dla określonych modeli serwerów.

Lista prefiksów

Stos technologiczny i rozszerzalność

Pod maską NetBox działa na klasycznym, sprawdzonym stosie:

  • Python 3 i framework webowy Django
  • PostgreSQL jako główna baza danych
  • Redis dla kolejek zadań i cache'owania

Aplikacja udostępnia otwarty API oparty na REST i GraphQL, co znacznie upraszcza budowanie integracji.

Gdy standardowe encje nie są wystarczające, funkcjonalność można rozszerzać za pomocą wtyczek. Na przykład oficjalna wtyczka NetBox Branching wprowadza logikę branchowania podobną do Git do zarządzania danymi. Inżynier tworzy branch, wprowadza planowane zmiany topologii, uzyskuje akceptację od kolegów i scala się z główną bazą dopiero przed wdrożeniem do produkcji. Inne popularne wtyczki dodają zarządzanie strefami DNS i śledzenie sesji BGP.

Kto może skorzystać z tego projektu

Jeśli Twoja firma ma tylko kilka serwerów i jeden niezarządzany przełącznik, wdrażanie NetBox nie ma sensu. Nakład pracy związany z jego utrzymaniem przewyższyłby korzyści.

Jednak jeśli Twoja infrastruktura obejmuje dziesiątki przełączników, setki maszyn wirtualnych lub wiele lokalizacji oddziałów, projekt szybko zwraca czas wdrożenia. Przekształca rozproszoną wiedzę poszczególnych inżynierów w ustrukturyzowaną bazę danych gotową do automatyzacji.

Możesz eksplorować interfejs bez instalacji czegokolwiek lokalnie przez publiczne demo, a dokumentacja projektu zawiera szczegółowe instrukcje instalacji przez Docker lub bezpośrednio na hoście.

Powiązane projekty