pre-configuration provisioning script

Wszystko co nie mieści się w pozostałych kategoriach
Wiadomość
Autor
Awatar użytkownika
PatrykW
wannabe
wannabe
Posty: 1742
Rejestracja: 31 paź 2008, 16:05
Lokalizacja: UI.PL / Ubiquiti Polska.pl
Kontakt:

pre-configuration provisioning script

#1

#1 Post autor: PatrykW »

Dzien dobry,

Szukam jakiegos skryptu ktory by mi troche pomogl, mianowiscie wgrywanie konfiguracji na switche, routery etc..
Dotychczas odbywa sie to w ten sopsob ze mam template w notatniku i recznie na kazdy switch tak sobie copy&paste.

Pomyslalem ze fajnie by bylo chociaz troche zautomatyzować ten process :)

Jakies pomysly?

pzdr
.ılı..ılı.

http://www.linkedin.com/in/pwojtachnio
Potrzebujesz projektu na studia z zakresu Cisco Packet Tracer & GNS ? Just give me call :)

Integrujemy i wspieramy IT :)
https://www.ui.pl | https://facebook.com/UIPolska

Jedyne rozwiązania Ubiquiti Networks w Polsce!
https://ubiquitipolska.pl | https://www.facebook.com/groups/Ubiquiti.Polska

Awatar użytkownika
xal
CCIE
CCIE
Posty: 869
Rejestracja: 06 lip 2006, 21:04
Lokalizacja: Warszawa

Re: pre-configuration provisioning script

#2

#2 Post autor: xal »

Rozwiązań jest wiele, od skryptów w Pythonie/Perlu/Bashu po mechanizmy takie jak Puppet/Ansible. Wszystko zależy od skali, częstości zmian i konieczności integracji z innymi systemami/aplikacjami/bazami. Samych skryptów w sieci jest masa. Warto pomyśleć może nad rozwiązaniem DevOpsowym :-)

Awatar użytkownika
PatrykW
wannabe
wannabe
Posty: 1742
Rejestracja: 31 paź 2008, 16:05
Lokalizacja: UI.PL / Ubiquiti Polska.pl
Kontakt:

Re: pre-configuration provisioning script

#3

#3 Post autor: PatrykW »

xal pisze:Rozwiązań jest wiele, od skryptów w Pythonie/Perlu/Bashu po mechanizmy takie jak Puppet/Ansible. Wszystko zależy od skali, częstości zmian i konieczności integracji z innymi systemami/aplikacjami/bazami. Samych skryptów w sieci jest masa. Warto pomyśleć może nad rozwiązaniem DevOpsowym :-)
Programowac nie potrafie, potrzebuje cos do nowo przylaczanych switchy do sieci, nie chce tego robic z palucha i mysle nad automatyzacja tego procesu.

Czyli mam template dla modeli 2960G, i robi sie magic i robota done :)

Czy moglbys jakies konkretne linki podrzucic, bede bardzo wdzieczny :)
.ılı..ılı.

http://www.linkedin.com/in/pwojtachnio
Potrzebujesz projektu na studia z zakresu Cisco Packet Tracer & GNS ? Just give me call :)

Integrujemy i wspieramy IT :)
https://www.ui.pl | https://facebook.com/UIPolska

Jedyne rozwiązania Ubiquiti Networks w Polsce!
https://ubiquitipolska.pl | https://www.facebook.com/groups/Ubiquiti.Polska

rysic
wannabe
wannabe
Posty: 297
Rejestracja: 31 lip 2012, 09:16
Kontakt:

Re: pre-configuration provisioning script

#4

#4 Post autor: rysic »

Ja napisałem do tego własną stronę, która generuje mi adresy urządzeń i konfigurację na wszystkie lokalizacje. Jednak wcześniej używaliśmy zwykłego excela.
Dla tych co nie znają się na programowaniu jest to idealne rozwiązanie.
Wypełniasz zmienne pola a reszta się uzupełnia. Potem można już kopiować bezpośrednio z excela nawet do switcha.

Dla tych co pogrzebią trochę w VBA excelowym to i można zrobić wodotryski z wybieraniem loakizacji/adresu itp.

freel4ncer
wannabe
wannabe
Posty: 581
Rejestracja: 27 wrz 2007, 01:13

Re: pre-configuration provisioning script

#5

#5 Post autor: freel4ncer »

To sie robi tak (w skrocie i uproszczeniu) :
tworzysz jakis source of truth (baza danych albo , json , yml co ci sie tam podoba) a w nim wpisujesz przykladowo : ipki ,subnety ,hostname, nazwy vlanow ( generalnei wszystkie zmienne potrzebne w skrocie do konfiguracji urzadzen. (oczywiscie trzeba to dobrze przemyslec w jakiej formie to zrobic)
Potem tworzysz template w django , jinja lub cokolwiek tam chcesz- gdzie wrzucasz konfig i podmieniasz te ipki vlany etc (to co sie zmienia ) zmiennymi.
Potem tworzysz skrypt np w pythonie ktory pobiera dane z source of truth moze jakies argumenty od uzytkownika operuje nimi przeksztalca tak by dac ci wlasnie te zmienne dla tego django template . Potem juz tylko wygenerowanie konfigu i jakas metoda by go pchanc na urzadzenie. Peace of cake ;)

Awatar użytkownika
PatrykW
wannabe
wannabe
Posty: 1742
Rejestracja: 31 paź 2008, 16:05
Lokalizacja: UI.PL / Ubiquiti Polska.pl
Kontakt:

Re: pre-configuration provisioning script

#6

#6 Post autor: PatrykW »

freel4ncer pisze:To sie robi tak (w skrocie i uproszczeniu) :
tworzysz jakis source of truth (baza danych albo , json , yml co ci sie tam podoba) a w nim wpisujesz przykladowo : ipki ,subnety ,hostname, nazwy vlanow ( generalnei wszystkie zmienne potrzebne w skrocie do konfiguracji urzadzen. (oczywiscie trzeba to dobrze przemyslec w jakiej formie to zrobic)
Potem tworzysz template w django , jinja lub cokolwiek tam chcesz- gdzie wrzucasz konfig i podmieniasz te ipki vlany etc (to co sie zmienia ) zmiennymi.
Potem tworzysz skrypt np w pythonie ktory pobiera dane z source of truth moze jakies argumenty od uzytkownika operuje nimi przeksztalca tak by dac ci wlasnie te zmienne dla tego django template . Potem juz tylko wygenerowanie konfigu i jakas metoda by go pchanc na urzadzenie. Peace of cake ;)

Czy masz taki skrypt skoro to takie proste ? :)
.ılı..ılı.

http://www.linkedin.com/in/pwojtachnio
Potrzebujesz projektu na studia z zakresu Cisco Packet Tracer & GNS ? Just give me call :)

Integrujemy i wspieramy IT :)
https://www.ui.pl | https://facebook.com/UIPolska

Jedyne rozwiązania Ubiquiti Networks w Polsce!
https://ubiquitipolska.pl | https://www.facebook.com/groups/Ubiquiti.Polska

freel4ncer
wannabe
wannabe
Posty: 581
Rejestracja: 27 wrz 2007, 01:13

Re: pre-configuration provisioning script

#7

#7 Post autor: freel4ncer »

Pisze takie skrypty na codzien ale to nie jest tak ze masz jeden skrypt i bam .
To musi byc zintegorwane z twoim srodowiskiem.
Kazdy bedzie mial inne source of truth .
Kazdy ma inna konfiguracje i inaczej musisz przetwazac te dane.

Na koniec masz roznice w tym jak aplikujesz konfigi , my mamy same junipery wiec prosta sprawa uzywamy bibliotek junipera pyez

Musisz nauczyc sie np pythona . Zrob sobie jakis kurs online nie potrzebujesz duzo by zaczac robic takie rzeczy
ale podstawy musisz znac . Jesli kiedys sie zdecydujesz przysiasc do pythona i ogarniesz podstawy typu podstawowe data typy , jak importowac moduly , petle , flow control statements etc to z checia Ci pokaze jak robic takie generatory configow i jak je pchac do urzadzen



A tak na szybko to majac ten template jakie rzeczy musisz w nim zmieniac dla kazdego urzadzenia (rozumiem ze masz ilestam switchy i zmieniaja sie w nich tylko hostname , jakis lo adress etc ) wypisz wszystkie zmienne.

Awatar użytkownika
PatrykW
wannabe
wannabe
Posty: 1742
Rejestracja: 31 paź 2008, 16:05
Lokalizacja: UI.PL / Ubiquiti Polska.pl
Kontakt:

Re: pre-configuration provisioning script

#8

#8 Post autor: PatrykW »

freel4ncer pisze:Pisze takie skrypty na codzien ale to nie jest tak ze masz jeden skrypt i bam .
To musi byc zintegorwane z twoim srodowiskiem.
Kazdy bedzie mial inne source of truth .
Kazdy ma inna konfiguracje i inaczej musisz przetwazac te dane.

Na koniec masz roznice w tym jak aplikujesz konfigi , my mamy same junipery wiec prosta sprawa uzywamy bibliotek junipera pyez

Musisz nauczyc sie np pythona . Zrob sobie jakis kurs online nie potrzebujesz duzo by zaczac robic takie rzeczy
ale podstawy musisz znac . Jesli kiedys sie zdecydujesz przysiasc do pythona i ogarniesz podstawy typu podstawowe data typy , jak importowac moduly , petle , flow control statements etc to z checia Ci pokaze jak robic takie generatory configow i jak je pchac do urzadzen



A tak na szybko to majac ten template jakie rzeczy musisz w nim zmieniac dla kazdego urzadzenia (rozumiem ze masz ilestam switchy i zmieniaja sie w nich tylko hostname , jakis lo adress etc ) wypisz wszystkie zmienne.
hej,

Ze zmiennych to... :

1. hostname
2. MGMT SVI

I to wszystko
.ılı..ılı.

http://www.linkedin.com/in/pwojtachnio
Potrzebujesz projektu na studia z zakresu Cisco Packet Tracer & GNS ? Just give me call :)

Integrujemy i wspieramy IT :)
https://www.ui.pl | https://facebook.com/UIPolska

Jedyne rozwiązania Ubiquiti Networks w Polsce!
https://ubiquitipolska.pl | https://www.facebook.com/groups/Ubiquiti.Polska

freel4ncer
wannabe
wannabe
Posty: 581
Rejestracja: 27 wrz 2007, 01:13

Re: pre-configuration provisioning script

#9

#9 Post autor: freel4ncer »

ok to jeszcze mi powiedz jak wyglada u ciebie to wgrywanie konfigow ? robisz to po consoli ? czy masz juz je gdzies w sieci z jakims ipkiem , opisz proces ? (duzo tych switchy robisz na raz , jakie sa kroki np mam 20 switchy i po kolei stawiam na biurko podpinam konsole , wklepjam konfig do terminala , odpinam switcha wpinam kolejnego wklejam konfig etc )

Napisalem ci na szybko taki maly generatorek zebys zobaczyl mniej wiecej o czym mowilem
https://github.com/fr33l4ncer/ccie_pl.git
masz plik .yml w ktorym wrzucasz dane czyli np jaki hostname ma jaki ip i maske
w pliku .j2 masz przykladowy konfig cisco gdzie sa stale elementy jak i twoje zmienne (hostname ip maska )
skrypt confgen.py pobiera poprzez cmd argumenty nazwe switchy/a dla ktorego chcesz wygenerowac konfigi sprawdza czy istnieja dla niego dane w yml jesli tak to je pobiera i generuje na tej podstawie konfig.

odpalasz to w ten sposob ./confgen.py -d switch1 -y switches.yml -t switch_template.j2
jesli chcesz wiecej konfigow na raz to ./confgen.py -d switch1 switch2 -y switches.yml -t switch_template.j2 etc

To jest oczywiscie super prosty przyklad ktory ma ci tylko pokazac mniej wiecej o czym mowilem w rzeczywistosci jest to bardziej skomplikowane , czesto musisc pewne zmienne wyliczyc lub jakos utworzyc na podstawie danych o sieci z roznych zrodel , pewnie sobie wyobrazasz ze nie poto sie tworzy automatyzacje i tego rodzaju provisioning i konfiguracje by wszystkie zmienne wprowadzac za kazdym razem z palca (czy do jakis plikow czy bazy ) mozesz np napisac kod ktory bedzie generowal acl-ki na podstawie ronzych danych z bazy a potem generowal konfig w ten sposob i pchal go automatycznie do urzadzen np raz w tygodniu ;) dzieki czemu bez kiwniecia palcem masz zawsze swieze acl wszedzie :) .


Podam Ci przyklad z zycia wziety jak taki skrypt moze zaoszczedzic mase czasu:
wdrazalem tacacsa w srodowisku paru tysiecy urzadzen gdzie dotychczasowo wszystko odbywalo sie za pomoca kluczy ssh
do tego rozni ludzie z roznych teamow mieli dostepy na roznych urzadzeniach . Napisalem taki skrypt ktory laczyl sie z urzadzeniem sprawdzal jaki dostep ma dany urzytkownik sprawdzal adres lo dla source do tacacsa a potem konifgurowal tacas wywalal userow i dodawal ich do konfiga na serverze tacacs . Zrobienie tego recznie przy np 3000 urzadzen spedzajac tylko 5 min na jedno urzadzenienie zajelo by mi 250 godzin (ciekawe ile razy bym sie pomylil przy tym) ! a tak napisalem skrypt odpalilem i poszeldem na lunch , jak wrocilem to juz bylo zrobione ;)

Co do pchania konfigow czekam na wiecej informacji od ciebie

Awatar użytkownika
PatrykW
wannabe
wannabe
Posty: 1742
Rejestracja: 31 paź 2008, 16:05
Lokalizacja: UI.PL / Ubiquiti Polska.pl
Kontakt:

Re: pre-configuration provisioning script

#10

#10 Post autor: PatrykW »

freel4ncer pisze:ok to jeszcze mi powiedz jak wyglada u ciebie to wgrywanie konfigow ? robisz to po consoli ? czy masz juz je gdzies w sieci z jakims ipkiem , opisz proces ? (duzo tych switchy robisz na raz , jakie sa kroki np mam 20 switchy i po kolei stawiam na biurko podpinam konsole , wklepjam konfig do terminala , odpinam switcha wpinam kolejnego wklejam konfig etc )

Napisalem ci na szybko taki maly generatorek zebys zobaczyl mniej wiecej o czym mowilem
https://github.com/fr33l4ncer/ccie_pl.git
masz plik .yml w ktorym wrzucasz dane czyli np jaki hostname ma jaki ip i maske
w pliku .j2 masz przykladowy konfig cisco gdzie sa stale elementy jak i twoje zmienne (hostname ip maska )
skrypt confgen.py pobiera poprzez cmd argumenty nazwe switchy/a dla ktorego chcesz wygenerowac konfigi sprawdza czy istnieja dla niego dane w yml jesli tak to je pobiera i generuje na tej podstawie konfig.

odpalasz to w ten sposob ./confgen.py -d switch1 -y switches.yml -t switch_template.j2
jesli chcesz wiecej konfigow na raz to ./confgen.py -d switch1 switch2 -y switches.yml -t switch_template.j2 etc

To jest oczywiscie super prosty przyklad ktory ma ci tylko pokazac mniej wiecej o czym mowilem w rzeczywistosci jest to bardziej skomplikowane , czesto musisc pewne zmienne wyliczyc lub jakos utworzyc na podstawie danych o sieci z roznych zrodel , pewnie sobie wyobrazasz ze nie poto sie tworzy automatyzacje i tego rodzaju provisioning i konfiguracje by wszystkie zmienne wprowadzac za kazdym razem z palca (czy do jakis plikow czy bazy ) mozesz np napisac kod ktory bedzie generowal acl-ki na podstawie ronzych danych z bazy a potem generowal konfig w ten sposob i pchal go automatycznie do urzadzen np raz w tygodniu ;) dzieki czemu bez kiwniecia palcem masz zawsze swieze acl wszedzie :) .


Podam Ci przyklad z zycia wziety jak taki skrypt moze zaoszczedzic mase czasu:
wdrazalem tacacsa w srodowisku paru tysiecy urzadzen gdzie dotychczasowo wszystko odbywalo sie za pomoca kluczy ssh
do tego rozni ludzie z roznych teamow mieli dostepy na roznych urzadzeniach . Napisalem taki skrypt ktory laczyl sie z urzadzeniem sprawdzal jaki dostep ma dany urzytkownik sprawdzal adres lo dla source do tacacsa a potem konifgurowal tacas wywalal userow i dodawal ich do konfiga na serverze tacacs . Zrobienie tego recznie przy np 3000 urzadzen spedzajac tylko 5 min na jedno urzadzenienie zajelo by mi 250 godzin (ciekawe ile razy bym sie pomylil przy tym) ! a tak napisalem skrypt odpalilem i poszeldem na lunch , jak wrocilem to juz bylo zrobione ;)

Co do pchania konfigow czekam na wiecej informacji od ciebie

Hej,

Sorka za delay :/

Powiedzmy mam 15 switchy, sa to te same modele, dla danego modelu sam stworzylem template na moim laptopie, wdrozenie: konfiguracji
- zmiana nazwy pliku o poprawny hostname oraz IP
- Podlaczenie sie po konsoli i wgranie konfiguracji
- wr
- sprawdzam porty (sh int status, show vtp, stop span...) czy wszystko jest ok
- przechodze do nastepnego pudelka

Takze suma sumarum, robie one by one, potem ludzie od data center przychodza, montuja, kabluja itp itd.

Teraz wymyslilem cos takiego ze zamiast na biurko, mam specjalna szafe w DC ze zdalnym KVM na RS-232 gdzie ludzie z dc po prostu tam mi podpinaja urzadzenie, ale dalej robie to copy&paste co zajmuje mi bardzo duzo czasu
.ılı..ılı.

http://www.linkedin.com/in/pwojtachnio
Potrzebujesz projektu na studia z zakresu Cisco Packet Tracer & GNS ? Just give me call :)

Integrujemy i wspieramy IT :)
https://www.ui.pl | https://facebook.com/UIPolska

Jedyne rozwiązania Ubiquiti Networks w Polsce!
https://ubiquitipolska.pl | https://www.facebook.com/groups/Ubiquiti.Polska

freel4ncer
wannabe
wannabe
Posty: 581
Rejestracja: 27 wrz 2007, 01:13

Re: pre-configuration provisioning script

#11

#11 Post autor: freel4ncer »

No ok czyli robisz sobie jakis console server. Masz kilka switchy podlaczonych do roznych portow i chcesz pchac konfigi.
Generalnie zazwyczaj trzeba to robic po kilka linii bo buffor sie zapycha. Tak wiec nalezy napisac skrypt ktory bedzie pchal np 3-4 linie potem pauzowal na kilkadziesiat ms i pchal znowu. Nie jest to cos skomplikowanego . Mozna skozystac z biblioteki pexpect pythona.
Mozna by wtedy to zintegrowac ze skryptem ktory ci pokazalem np dodajac numery portow z tego consol servera do pliku yml i wtedy mial bys generowanie configu i pchanie go po konsoli na urzadzenie podpiete do console server.
Zrob logowanie (zrzut calego outputu do pliku) w terminalu i zaloguj sie do takiego podpietego switcha a potem wyslij log zebym zobaczyl jak przebiega logowanie . jakich trzeba uzyc komend do switcha podpiedego do danego portu. Pytanie jest tez czy ten console server obsluguje kilka sesji z jednego source do roznych portow na raz czy trzeba pchac jeden po drugim

Awatar użytkownika
PatrykW
wannabe
wannabe
Posty: 1742
Rejestracja: 31 paź 2008, 16:05
Lokalizacja: UI.PL / Ubiquiti Polska.pl
Kontakt:

Re: pre-configuration provisioning script

#12

#12 Post autor: PatrykW »

Hej
Jutro dam znać, to jest zwykła MOXA gdzie mam 16 portów i po telnet wbijam się.


Sent from my iPhone using Tapatalk
.ılı..ılı.

http://www.linkedin.com/in/pwojtachnio
Potrzebujesz projektu na studia z zakresu Cisco Packet Tracer & GNS ? Just give me call :)

Integrujemy i wspieramy IT :)
https://www.ui.pl | https://facebook.com/UIPolska

Jedyne rozwiązania Ubiquiti Networks w Polsce!
https://ubiquitipolska.pl | https://www.facebook.com/groups/Ubiquiti.Polska

Awatar użytkownika
konradrz
CCIE
CCIE
Posty: 400
Rejestracja: 23 sty 2008, 14:21
Lokalizacja: Singapore, SG
Kontakt:

Re: pre-configuration provisioning script

#13

#13 Post autor: konradrz »

Wojtachinho pisze:Czy masz taki skrypt skoro to takie proste ? :)
Zainteresuj się też Netmiko, działa z ssh i telnetem, więc może i z tym Twoim agregatem konsolowym da radę (zakładam że każda konsola będzie miała własny port tcp)

mzb
wannabe
wannabe
Posty: 163
Rejestracja: 16 cze 2009, 14:14

Re: pre-configuration provisioning script

#14

#14 Post autor: mzb »

Jeśli już musisz mieć console-server, to osobiście ograniczyłbym z nim interakcję do minimum - możesz np. na poszczególnych portach jedynie konfigurować przez niego IP managementowe do zarządzania switch'em (możesz też nie używać RS232, wykorzystując automatycznie przez Express Setup itp, natomiast tutaj może dojść kwestia zrozumienia poleceń przez field-engineer'a, co będzie bardziej skomplikowane niż odpowiednie podpięcie kabli) - do tej części pexpect powinien w zupełności wystarczyć, najprostszych przykładów jest mnóstwo.

Do provisioningu konfiguracji po IP nie musisz nic pisać - możesz generować template'owane konfigi z Jinja2 via Ansible, gdzie masz już moduły do IOS'a i powinno Ci to w zupełności wystarczyć do wygenerowania i wrzucenia na urządzenie po IP.

-- M.

freel4ncer
wannabe
wannabe
Posty: 581
Rejestracja: 27 wrz 2007, 01:13

Re: pre-configuration provisioning script

#15

#15 Post autor: freel4ncer »

Tak tak wszystko robmy ansible ;) oczywiscie ze mozna zrobic sporo z ansible ale ansible nigdy nie zastapi umiejetnosci kodzenia . Za pomoca ansible zrobisz sporo - za pomoca pythona wszytsko co chcesz i jak chcesz :D

Staram sie tutaj kolege pchnac w strone pythona a ty tu na latwize ;)
Wlasnie pisanie takich rzeczy to najlepsza okazja do nauki ! Problem ludzi uczacych sie kodowania jest taki ze pisza hello world po 100 razy bo nie maja real life problemow do rozwiazania a tutaj jest problem jak znalazl

Jesli juz podajesz inne rozwiazanie problemu to mysle ze wypadaloby podac koledze przyklad a nie rzucic nazwa ansible i czesc .


P.S nawet przy ansible warto znac sie troche na kodzeniu (jesli chcesz robic "ciekawsze" playbooki)

ODPOWIEDZ