Norninr vs Ansible
Norninr vs Ansible
Hejka,
Przymierzam sie do nauki automatyzacji sieci. Z tego co czytam po forach zachodnich wszyscy polecaja nauke Nornir zamiast Ansible. Co bedzie lepsze w przypadku infrastruktury z mieszanymi vendorami? Liznalem troche Pythona i skalaniam sie w kierunku Norninr, a wy?
Przymierzam sie do nauki automatyzacji sieci. Z tego co czytam po forach zachodnich wszyscy polecaja nauke Nornir zamiast Ansible. Co bedzie lepsze w przypadku infrastruktury z mieszanymi vendorami? Liznalem troche Pythona i skalaniam sie w kierunku Norninr, a wy?
- peper
- CCIE / Site Admin
- Posty: 5005
- Rejestracja: 13 sie 2004, 12:19
- Lokalizacja: Warsaw, PL
- Kontakt:
Re: Norninr vs Ansible
Podobne narzędzia przy czym Nornir to czysty Python a Ansible to o wiele większy ekosystem. Pytanie po co i do czego chcesz się uczyć. Jeżeli zawodowo to produkt, który używa się u Ciebie w firmie, jeżeli ogólnorozwojowo zacznij od Ansible bo ma szersze zastosowanie niż sam Nornir. Pamiętaj, że automatyzujesz całą infrastrukturę a nie tylko sieć jako jej element.
Szkoła DevNet: https://szkoladevnet.pl
Facebook: https://www.facebook.com/Piotr.Wojciechowski.CCIE
LinkedIn: https://www.linkedin.com/in/peper
Twitter: https://www.twitter.com/PiotrW_CCIE
"Zapomniałem że od kilku lat wszyscy giną jakby nigdy ich nie miało być
w stu tysiącach jednakowych miast giną jak psy"
Facebook: https://www.facebook.com/Piotr.Wojciechowski.CCIE
LinkedIn: https://www.linkedin.com/in/peper
Twitter: https://www.twitter.com/PiotrW_CCIE
"Zapomniałem że od kilku lat wszyscy giną jakby nigdy ich nie miało być
w stu tysiącach jednakowych miast giną jak psy"
Re: Norninr vs Ansible
Dzieki, ogolnorozwojowo z zalozeniem na implementacje w firmie. Infra (serwery) jest w chmurze wiec ewentualnie chcialbym popchnac sama siec. Czytam ze Ansible jest idempotnenty a Nornir?
Re: Norninr vs Ansible
Pomysl nad Ansible bardziej przyszlosciowy, przynajmniej ja tak mysle. Dalej dzialaj z Pythonem - sluszny kierunek.
Re: Norninr vs Ansible
Ludzie niestety wciąż popełniają ten sam błąd. Podstawowa zasada to: najpierw zdefiniuj proces, później dobierz najlepsze narzędzie. Często zaczyna się to robić odwrotnie. Nie każde narzędzie nadaje się do wszystkiego. Nawet jak dojdziemy do nirwany i wdrożymy full-blown orkiestrator, to w tle, poszczególne komponenty często są pisane za pomocą: python, ansible, javascript, powershell, bash, itp, itd. Nie wszystko musimy znać perfekcyjnie, ale nie można się zamykać na jednym narzędziu. Wracając do pierwotnego pytania, moim zdaniem Ansible jest idealny do rozpoczęcia nauki automatyzacji, bo: 1) jest idempotentny (od razu uczymy się dbać o porządek), 2) pozwala powoływać pełne środowisko, a nie tylko "sieć", 3) jest mega granularny, (role, itp.), co pozwała łatwo zarządzać atomowymi zmianami, 4) jest napisany w pythonie, więc można pobawić się z własnymi modułami, 5) ma masę modułów, dzięki którym uczymy się szerokiego pojęcia automatyzacji (moduły producentów, template jinja2, raw, rest, itp)...
Pozdr,
xal
Re: Norninr vs Ansible
Dzieki za opdowiedzi. Proces jest okreslony - sredniej wielkosci siec Enterprise, 80% Cisco, 15% HP, Firewall Palo Alto, ktora chce emigrowac z notatnika do configow bardziej z unifikowanych
Czytam wlasnie o NAPALM i jego abstrakcyjnym API do wielu vendorow.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Re: Norninr vs Ansible
Pamiętaj, że w automatyzacji nie chodzi tylko o szybsze uruchomienie vlanu, a o uruchomienie kompleksowej "usługi" (sieć, firewalle, load-balancery, ipsy, maszyny wirtualne, kontenery, serwery www, bazy danych, itpe, itd...). Jak chcesz się bawić w (net)devops to musisz zacząć rozmawiać z innymi działami i powinniście używać wspólnych narzędzi i procesów do opisywania usług w sposób jednolity, jako całość. Generalnie chodzi o to, że jak powołasz usługę, a później z niej zrezygnujesz, to jesteś w stanie wycofać wszystkie zmiany "jednym" kliknięciem. Bez integracji wielopoziomowej automatyzacja jest niczym innym jak pisaniem silosowych skryptów. A później zostaje ci na SVI-u tysiąc ACLek i nikt nie wie co one robią.
Re: Norninr vs Ansible
Dziekuje jeszcze raz. Wszystko rozumiem i takze uwage o strategii implementacji automatyzacji. Chcialbym po prostu wybrac droge juz przetarta i nie wymyslac kola od nowa. Wiec zabieram sie za nauke Ansible!
Re: Norninr vs Ansible
Nie wszystkie moduly Ansible sa. Powinny byc (takie zalozenie), ale jesli autorzy nie trzymaja sie tego to musisz z tym uwazac.
Nornir bedzie jesli ty sam o to zadbasz (mozesz zbudowac taka "task", ktora bedzie gwarantowala idempotent ale to juz wiecej pracy nad kodem).
Trzeba zaznaczyc, ze przy Nornir musisz wiedziec co nieco o Python, a w Ansible w ogole nie musisz go znac.
Pamietaj, ze zalozene Ansible jest aby zagwarantowac wykonanie czynnosci (moduly!) a nie czas wykonania (naprawde mozesz poczekac te "minuty" na mala zmiane zamiast kilka sekund).
Ciekawostka: Nornir mozna podkrecic do niezlych rezultatow jesli chodzi o szybkosc wykonania prostych czynnosci.
Re: Norninr vs Ansible
samo porównywanie, który produkt potrafi więcej a który mniej to za mało....
Ja skłaniam się w kierunku Ansible/AWX (ewentualnie Tower )głównie dlatego, że:
- daje to w miarę do ogarnięcia interfejs graficzny, więc zadania (job'y), które tworzysz mogą być uruchamiane przez inne zespoły (sam zrobiłem już kilka takich i sa używane regularnie). Wydaje mi się, iż przykładowe zadanie przeszukujące przełączniki L2 i sprawdzające, na których interfejsach nie ma 802.1x powinno być także odpalane, np. przez Twojego kierownika, albo kogoś z bezpieki... (albo przynajmniej co jakiś czas zerkać na wynik zadania 'audytowego')
- czasem zadania, które będziesz chciał/musiał zautomatyzować będą częścią większego procesu (np. provisioning maszyny wirtualnej, albo on/off środowiska), więc nie do końca organizacja będzie się cieszyła, że im wystawiasz jakiś skrypcik z małoznanym modułem Norninr na jakimś linux'ie podbirkowym bez backupów (oczywiście tutaj trochę przesadzam - lubię Twojego linuxa)![Smile :)](./images/smilies/icon_smile.gif)
- masz możliwość wywołania za pomocą API zadań/skryptów, które tworzysz (czasem się przydaje)
- często masz ludzi, którzy zarządzają tym produktem, albo mogą Ci pomóc, więc Ty możesz skupić się na automatyzacji a nie administrowaniem narzędziami
- fakt, że z AWX/Ansible korzystają inne zespoły (w Twojej , lub innej firmie) daje Ci możliwość podglądania innych, uczenia się wdrażania prawdziwych rozwiązań devops (np. awx dev/test/prod, kontroli wersji git w dowolnym wydaniu, jira i ten cały grajdołek związany z ideologią działania). Żeby nie było, że sobie tam gdzieś tworzysz procesy i chwalisz się, że jesteś dev-net'owcem a przed Tobą w rzeczywistości daleka droga![Very Happy :D](./images/smilies/icon_biggrin.gif)
- Ansible zmusza Cię do utrzymania porządku i schematu działania (pliki i zmienne w swoich katalogach itp)
- w przypadku AWX masz ustandaryzowane i przejrzyste zasady przydzielania uprawnień, tworzenia harmonogramu, planowania zadań
- w przypadku AWX możesz trochę bezpieczniej zarządzać hasłami, ponieważ czysty ansible i vault to no nie wiem... ciekaw jestem jak to jest w Norninr
Ansible mnie jednak często wkurza - to jednak rozwiązanie do wszystkiego, więc można się spodziewać, że im dalej w las, tym więcej przeszkód.
Często tracę sporo czasu na doprowadzenie czegoś do działania na playbook'u, wiedząc, że zwykłym skryptem pythonowym bym to w godzinę ogarnął...(ale może dlatego, że jeszcze mało tych playbooków robiłem). Czasem robię tak, że niektóre taski ansiblowe są od przetwarzania danych (te robię w skryptach pythonowych) a inne sprowadzające Ansible do narzędzia pobierającego dane z urządzeń a potem wykonania zadań na tych urządzeniach (nie wiem czy to logicznie zabrzmiało).
Często chłopcy zarządzający AWX'em wrzucają patch'e/nowe wersje, więc trzeba powtarzać testy sprawdzające czy Twoje playbook'i dalej działają - to też często można automatyzować, jednak to dodatkowa praca dla Ciebie, bo to Ty jesteś odpowiedzialny za job'a.
Ja skłaniam się w kierunku Ansible/AWX (ewentualnie Tower )głównie dlatego, że:
- daje to w miarę do ogarnięcia interfejs graficzny, więc zadania (job'y), które tworzysz mogą być uruchamiane przez inne zespoły (sam zrobiłem już kilka takich i sa używane regularnie). Wydaje mi się, iż przykładowe zadanie przeszukujące przełączniki L2 i sprawdzające, na których interfejsach nie ma 802.1x powinno być także odpalane, np. przez Twojego kierownika, albo kogoś z bezpieki... (albo przynajmniej co jakiś czas zerkać na wynik zadania 'audytowego')
- czasem zadania, które będziesz chciał/musiał zautomatyzować będą częścią większego procesu (np. provisioning maszyny wirtualnej, albo on/off środowiska), więc nie do końca organizacja będzie się cieszyła, że im wystawiasz jakiś skrypcik z małoznanym modułem Norninr na jakimś linux'ie podbirkowym bez backupów (oczywiście tutaj trochę przesadzam - lubię Twojego linuxa)
![Smile :)](./images/smilies/icon_smile.gif)
- masz możliwość wywołania za pomocą API zadań/skryptów, które tworzysz (czasem się przydaje)
- często masz ludzi, którzy zarządzają tym produktem, albo mogą Ci pomóc, więc Ty możesz skupić się na automatyzacji a nie administrowaniem narzędziami
- fakt, że z AWX/Ansible korzystają inne zespoły (w Twojej , lub innej firmie) daje Ci możliwość podglądania innych, uczenia się wdrażania prawdziwych rozwiązań devops (np. awx dev/test/prod, kontroli wersji git w dowolnym wydaniu, jira i ten cały grajdołek związany z ideologią działania). Żeby nie było, że sobie tam gdzieś tworzysz procesy i chwalisz się, że jesteś dev-net'owcem a przed Tobą w rzeczywistości daleka droga
![Very Happy :D](./images/smilies/icon_biggrin.gif)
- Ansible zmusza Cię do utrzymania porządku i schematu działania (pliki i zmienne w swoich katalogach itp)
- w przypadku AWX masz ustandaryzowane i przejrzyste zasady przydzielania uprawnień, tworzenia harmonogramu, planowania zadań
- w przypadku AWX możesz trochę bezpieczniej zarządzać hasłami, ponieważ czysty ansible i vault to no nie wiem... ciekaw jestem jak to jest w Norninr
Ansible mnie jednak często wkurza - to jednak rozwiązanie do wszystkiego, więc można się spodziewać, że im dalej w las, tym więcej przeszkód.
Często tracę sporo czasu na doprowadzenie czegoś do działania na playbook'u, wiedząc, że zwykłym skryptem pythonowym bym to w godzinę ogarnął...(ale może dlatego, że jeszcze mało tych playbooków robiłem). Czasem robię tak, że niektóre taski ansiblowe są od przetwarzania danych (te robię w skryptach pythonowych) a inne sprowadzające Ansible do narzędzia pobierającego dane z urządzeń a potem wykonania zadań na tych urządzeniach (nie wiem czy to logicznie zabrzmiało).
Często chłopcy zarządzający AWX'em wrzucają patch'e/nowe wersje, więc trzeba powtarzać testy sprawdzające czy Twoje playbook'i dalej działają - to też często można automatyzować, jednak to dodatkowa praca dla Ciebie, bo to Ty jesteś odpowiedzialny za job'a.
Re: Norninr vs Ansible
Dzieki borekbp,
Wlasnie od paru tygodni bawie sie w Ansible i jestem pozytywnie zaskoczony tym narzedziem. Pytanko czy jest jakas przetarta droga do CI/CD dla nas sieciowcow, nie chcialbym wymyslac kola od nowa![Smile :)](./images/smilies/icon_smile.gif)
Wlasnie od paru tygodni bawie sie w Ansible i jestem pozytywnie zaskoczony tym narzedziem. Pytanko czy jest jakas przetarta droga do CI/CD dla nas sieciowcow, nie chcialbym wymyslac kola od nowa
![Smile :)](./images/smilies/icon_smile.gif)
Re: Norninr vs Ansible
Generalnie, tej "jedynej, słusznej" drogi to nie ma. Trzeba wypracować samemu we własnym środowisku. W sieciach jest dużo zależności i nie wszystko się da przepuścić przez CICD, tak jak w dev. Sporo testów możesz robić sam, na laptopie. YAML możesz puścić przez lint (choć jak używasz jakiegoś dobrego edytora, jak vscode, to lint masz już robiony, ale zawsze można coś przeoczyć), a dla samych playbooków zrobić unittesty z assert. To wszystko można odpalić z vagrantem w tle. Szersze testy (składnia CLI, częściowe działanie protokołów) to albo lokalnie z CML albo już przez jakiś gitlab/jenkins z CML czy EVE-NG. Produkcyjne testy są zawsze najtrudniejsze w sieciach, bo tu jak coś zwalisz to już możesz nie mieć szansy na rollback
![Smile :-)](./images/smilies/icon_smile.gif)