ProHoster > Блог > Administrado > Aŭtomatigo de retservoj aŭ kiel konstrui virtualan laboratorion uzante OpenDaylight, Postman kaj Vrnetlab
Aŭtomatigo de retservoj aŭ kiel konstrui virtualan laboratorion uzante OpenDaylight, Postman kaj Vrnetlab
En ĉi tiu artikolo, mi montros al vi kiel agordi Malferma Taglumo labori kun retaj ekipaĵoj, kaj ankaŭ montri kiel uzi Poŝtisto kaj simpla RESTCONF petoj, ĉi tiu ekipaĵo povas esti kontrolita. Ni ne laboros kun aparataro, sed anstataŭe ni deplojos malgrandajn virtualajn laboratoriojn kun ununura enkursigilo uzanta Vrnetlab super Ubuntu 20.04 LTS.
Mi montros la detalajn agordojn unue uzante la ekzemplon de enkursigilo Juniper vMX 20.1R1.11, kaj tiam ni komparas ĝin kun la agordo Cisco xRV9000 7.0.2.
Enhavo
Bezonata scio
1-parto: diskuti mallonge OpenDaylight (ĉi-poste ODL), Poŝtisto и Vrnetlab kaj kial ni bezonas ilin
2-parto: priskribo de la virtuala laboratorio
3-parto: personecigi Malferma Taglumo
4-parto: personecigi Vrnetlab
5-parto: uzante Poŝtisto konekti virtualan enkursigilon (Juniper vMX) Al ODL
6-parto: akiru kaj ŝanĝu la agordon de la enkursigilo uzante Poŝtisto и ODL
7-parto: aldonu Cisco xRV9000
konkludo
PS
Bibliografio
Bezonata scio
Por ke la artikolo ne fariĝu folio, mi preterlasis kelkajn teknikajn detalojn (kun ligiloj al literaturo kie oni povas legi pri ili).
Ĉi-rilate mi proponas al vi temojn, kiujn estus bone (sed preskaŭ ne necese) scii antaŭ ol legi:
En nia kazo, ni interesiĝas pri ĝi kiel rimedo por sendi REST-petojn al la OpenDaylight API. Vi povas, kompreneble, sendi petojn permane, sed en Postman ĉio aspektas tre klara kaj perfekte konvenas al niaj celoj.
Por tiuj, kiuj volas fosi: multaj trejnmaterialoj estis skribitaj sur ĝi (ekzemple).
Ilo por disfaldi virtualajn enkursigilojn en Docker
Subtenoj: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, ktp.
Malferma Fonto
Tre interesa sed malmulte konata instrumento. En nia kazo, ni uzos ĝin por ruli Juniper vMX kaj Cisco xRV9000 sur regula Ubuntu 20.04 LTS.
En ĉi tiu lernilo, ni starigos la sekvan sistemon:
Kiel tio funkcias
Juniper vMX leviĝas en Docker ujo (per Vrnetlab) kaj funkcias kiel la plej ofta virtuala enkursigilo.
ODL konektita al la enkursigilo kaj permesas vin kontroli ĝin.
Poŝtisto lanĉita sur aparta maŝino kaj per ĝi ni sendas komandojn ODL: por konekti/forigi la enkursigilon, ŝanĝi la agordon ktp.
Komentario pri la aparato de la sistemo
Juniper vMX и ODL postulas sufiĉe multajn rimedojn por sia stabila funkciado. Unu nur vMX petas 6 Gb da RAM kaj 4 kernoj. Tial oni decidis movi ĉiujn "pezegojn" al aparta maŝino (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). La enkursigilo, kompreneble, ne "flugas" sur ĝi, sed la agado sufiĉas por malgrandaj eksperimentoj.
Parto 3: Agordu OpenDaylight
La nuna versio de ODL en la momento de ĉi tiu skribado estas Magnesium SR1
1) Instalu Java Open JDK 11 (por pli detala instalado tie)
ubuntu:~$ sudo apt install default-jdk
2) Trovu kaj elŝutu la plej novan konstruon ODLde ĉi tie
3) Malfermu la elŝutitan arkivon
4) Iru al la rezulta dosierujo
5) Lanĉo ./bin/karaf
Je ĉi tiu paŝo ODL devus komenci kaj ni trovos nin en la konzolo (Porto 8181 estas uzata por aliro de ekstere, kiun ni uzos poste).
Poste, instalu ODL-Trajtojdesegnita por labori kun protokoloj NETCONF и RESTCONF. Por fari tion en la konzolo ODL ni plenumas:
Ĉiu enkursigilo kiu estas subtenata Vrnetlab, havas sian propran unikan aranĝan proceduron. Kiam Juniper vMX ni nur bezonas alŝuti la arkivon .tgz per la enkursigilo (vi povas elŝuti ĝin de oficiala retejo) al la dosierujo vmx kaj rulu la komandon make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Konstruante bildon vMX daŭros ĉirkaŭ 10-20 minutojn. Estas tempo iri preni kafon!
"Ĉi tio estas ĉar la unuan fojon kiam la VCP (Kontrolaviadilo) estas komencita, ĝi legas agordosieron kiu determinas ĉu ĝi funkcios kiel VRR VCP en vMX. Antaŭe, ĉi tiu lanĉo estis farita dum Docker-komenco, sed tio signifis, ke la VCP. estis ĉiam rekomencita unufoje antaŭ ol la virtuala enkursigilo iĝis havebla, rezultigante longan ekfunkciigon (ĉirkaŭ 5 minutojn) Nun la unua funkciado de la VCP estas farita dum la konstruo de la Docker-bildo, kaj ĉar la Docker-konstruaĵo ne povas esti rulita kun la - -privilegia opcio, tio signifas, ke qemu funkcias sen akcelado de aparataro KVM kaj tiel la konstruo daŭras tre longan tempon.Dum ĉi tiu procezo multaj protokoloj estas eligitaj, do almenaŭ vi povas vidi kio okazas.Mi pensas, ke longa konstruo estas. ne tiom timiga ĉar ni kreas bildon unufoje, sed ni lanĉas multajn."
Post vi povas vidi la bildon de nia enkursigilo en Docker:
ubuntu:~$ sudo docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 3 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MB
Lanĉu vr-vmx-ujon
Ni komencu per la komando:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Poste, ni povas vidi informojn pri aktivaj ujoj:
ubuntu:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
120f882c8712 b1b2369b453c "/launch.py" 2 minutes ago Up 2 minutes (unhealthy) 22/tcp, 830/tcp, 5000/tcp, 10000-10099/tcp, 161/udp jun01
Konektante al la enkursigilo
La IP-adreso de la reto-interfaco de la enkursigilo povas esti akirita per la sekva komando:
Defaŭlta, Vrnetlab kreas uzanton sur la enkursigilo vrnetlab/VR-netlab9.
Konektante kun ssh:
ubuntu:~$ ssh [email protected]
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts.
Password:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
Model: vmx
Junos: 20.1R1.11
Ĉi tio kompletigas la enkursigilon.
Instalaj rekomendoj por enkursigiloj de diversaj vendistoj troveblas ĉe github-projekto en la respektivaj adresaroj.
Parto 5: Leterportisto - konektu la enkursigilon al OpenDaylight
Instalado de leterportisto
Por instali, simple elŝutu la aplikaĵon de ĉi tie.
Konekti enkursigilon al ODL
Ni kreu metu peto:
Demanda ĉeno:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ĉi tiuj estas internaj nomspacoj XML (XML-nomspaco) por ODL laŭ kiu ĝi kreas nodon.
Plue, respektive, la nomo de la enkursigilo estas nodo-id, enkursigilo-adreso - gastiganto kaj tiel plu.
La plej interesa linio estas la lasta. Skemo-kaŝmemoro-dosierujo kreas dosierujon kie ĉiuj dosieroj estas elŝutitaj YANG-Skemo konektita enkursigilo. Vi povas trovi ilin en $ODL_ROOT/cache/jun01_cache.
Kontrolante la konekton de la enkursigilo
Ni kreu GET peto:
Demanda ĉeno:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Ni sendas. Devus ricevi statuson de "200 OK" kaj liston de ĉiuj subtenataj de la aparato YANG-Skemo:
komento: Por vidi ĉi tiun lastan, en mia kazo necesis atendi ĉirkaŭ 10 minutojn post la ekzekuto metuĝis ĉiuj YANG-skemo malŝarĝi plu ODL. Ĝis ĉi tiu punkto, kiam vi faras ĉi tion GET demando montros la jenon:
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Parto 6: Ŝanĝu la agordon de la enkursigilo
Akiro de la agordo
Ni kreu GET peto:
Demanda ĉeno:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Ni sendas. Devus ricevi la statuson "200 OK" kaj la enkursigilo-konfiguracion:
Kreu agordon
Ekzemple, ni kreu la sekvan agordon kaj modifu ĝin:
protocols {
bgp {
disable;
shutdown;
}
}
Ni kreu POST peto:
Demanda ĉeno:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Sur la langeto Kapoj, vi devas aldoni du kapojn:
Akceptu aplikaĵon/xml
Enhavo-Tipa aplikaĵo/xml
Post sendo, ili devus ricevi la statuson "204 Neniu Enhavo"
Por kontroli, ke la agordo ŝanĝiĝis, vi povas uzi la antaŭan demandon. Sed ekzemple ni kreos alian, kiu montros informojn nur pri la protokoloj agorditaj sur la enkursigilo.
Ni kreu GET peto:
Demanda ĉeno:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Post plenumi la peton, ni vidos la jenon:
Ŝanĝu la agordon
Ni ŝanĝu la informojn pri la BGP-protokolo. Post niaj agoj, ĝi aspektos jene:
protocols {
bgp {
disable;
}
}
Ni kreu metu peto:
Demanda ĉeno:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
Ne forgesu ŝanĝi la kapliniojn sur la langeto Headers al:
Akceptu aplikaĵon/json
Enhavo-Tipa aplikaĵo/json
Post sendo, ni ricevos la sekvan rezulton (Ni rigardas la respondon uzante GET peto):
Parto 7: Aldono de Cisco xRV9000
Kion ni ĉiuj estas pri Junipero, jes Junipero? Ni parolu pri Cisco!
Mi trovis xRV9000 version 7.0.2 (besto kiu bezonas 8Gb RAM kaj 4 kernojn. Ĝi ne estas libere havebla, do kontaktu Cisco) - ni kuru ĝin.
Kurante ujon
La procezo krei Docker-ujon preskaŭ ne diferencas de Juniper. Simile, ni faligas la .qcow2-dosieron kun la enkursigilo en la dosierujon respondan al ĝia nomo (en ĉi tiu kazo, xrv9k) kaj plenumas la komandon make docker-image.
Post kelkaj minutoj, ni vidas, ke la bildo estas kreita:
ubuntu:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-xrv9k 7.0.2 54debc7973fc 4 hours ago 1.7GB
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 4 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MB
Ni komencas la ujon:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Post iom da tempo, ni rigardas, ke la ujo komenciĝis:
ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
058c5ecddae3 54debc7973fc "/launch.py" 4 hours ago Up 4 hours (healthy) 22/tcp, 830/tcp, 5000-5003/tcp, 10000-10099/tcp, 161/udp xrv01
Konekti per ssh:
ubuntu@ubuntu:~$ ssh [email protected]
Password:
RP/0/RP0/CPU0:ios#show version
Mon Jul 6 12:19:28.036 UTC
Cisco IOS XR Software, Version 7.0.2
Copyright (c) 2013-2020 by Cisco Systems, Inc.
Build Information:
Built By : ahoang
Built On : Fri Mar 13 22:27:54 PDT 2020
Built Host : iox-ucs-029
Workspace : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
Version : 7.0.2
Location : /opt/cisco/XR/packages/
Label : 7.0.2
cisco IOS-XRv 9000 () processor
System uptime is 3 hours 22 minutes
Konektante la enkursigilon al OpenDaylight
Aldono okazas en tute simila maniero kun vMX. Ni nur bezonas ŝanĝi la nomojn. metu peto:
Voku post iom da tempo GET demandu por kontroli, ke ĉio estas konektita:
Ŝanĝu la agordon
Ni agordu la sekvan agordon:
!
router ospf LAB
mpls ldp auto-config
!
Ni kreu POST peto:
Demanda ĉeno:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Sur la langeto Kapoj, vi devas aldoni du kapojn:
Akceptu aplikaĵon/json
Enhavo-Tipa aplikaĵo/json
Post ĝia ekzekuto, ili devus ricevi la statuson "204 Sen Enhavo".
Ni kontrolu, kion ni ricevis.
Por fari tion, ni kreos GET peto:
Demanda ĉeno:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
Sur la langeto Rajtigo, vi devas agordi la parametron Basic Auth kaj ensaluto/pasvorto: admin/admin.
konkludo
Entute, kiel vi eble rimarkis, la proceduroj por konekti Cisco kaj Juniper al OpenDaylight ne diferencas - ĉi tio malfermas sufiĉe larĝan amplekson por kreivo. Komencante de agorda administrado de ĉiuj retaj komponantoj kaj finiĝante kun la kreado de viaj propraj retaj politikoj.
En ĉi tiu lernilo, mi donis la plej simplajn ekzemplojn pri kiel vi povas interagi kun retaj ekipaĵoj uzante OpenDaylight. Sen dubo, la demandoj de la supraj ekzemploj povas fariĝi multe pli kompleksaj kaj agordi tutajn servojn per unu klako de la muso - ĉio estas limigita nur de via imago *
Daŭrigota…
PS
Se vi subite jam scias ĉion ĉi aŭ, male, trapasis kaj enprofundiĝis en la animon de ODL, tiam mi rekomendas rigardi por disvolvi aplikaĵojn sur la ODL-regilo. Vi povas komenci de ĉi tie.