Nuk e di me çfarë ta krahasoj provisioning. Mund të jetë si me macen? Mund të jesh pa të, por është pak më mirë me të. Sidomos nëse funksionon ))
Vendosja e problemit:
- Dua të konfiguroj telefonat SIP shpejt, lehtë, në mënyrë të sigurt. Gjatë instalimit të telefonit dhe sidomos gjatë rikonfigurimit të tij.
- Shumë shitës kanë formate të tyre të konfiguarimeve, utilitetet e tyre për të gjeneruar konfiguraime, mënyrat e tyre të mbrojtjes së konfigurave. Dhe nuk është shumë këndshme të merresh me secilin prej tyre.
- Shumë zgjidhje për provisioning, a) janë të orientuara ndaj një shitësi ose një sistemi të telefonisë, b) implementohen mjaft ngatërruar, me një grusht skripta, parametra, brrr...
Për pikën 3 do të jap një koment, se ka sisteme të shkëlqyera provisioning , , , ku në akses të hapur ka shabllone për telefonat e shitësve të ndryshëm. Ka zgjidhje komerciale, ku gjithashtu mund të konfigurohet në modulin e provisioning për të punuar telefonat e prodhuesve të ndryshëm, për shembull, sistemet telefonike Yeastar.
Në Habr gjithashtu ka shumë receta si të konfigurohen pajisjet e shitësve të ndryshëm: , . Por siç thonë, të gjitha sistemet kanë një të meta fatale. Prandaj do të bëjmë biçikletën tonë.
formatin tonë
Siç thotĂ« nĂ« xkcd, nĂ«se nuk dĂ«shiron tĂ« merresh me 14 formate â . Prandaj ne pĂ«rdorim cilĂ«simet e zakonshme pĂ«r çdo telefon dhe do tĂ« bĂ«jmĂ« formatin tonĂ« json pĂ«r konfig.
Për shembull diçka e tillë:
{
"key": "sdgjdeu9443908",
"token": "590sfdsf8u984",
"model": "gxp1620",
"vendor": "grandstream",
"mac": "001565113af8",
"timezone_offset": "GMT+03",
"ntp_server": "pool.ntp.org",
"status": true,
"accounts": [
{
"name": "Mobilon",
"line": 1,
"sip_register": "sip.mobilonsip.ru",
"sip_name": "sip102",
"sip_user": "sip102",
"sip_password": "4321",
"sip_auth": "sip102"
}
]
}Pra, në çdo telefon është e nevojshme të konfigurohet koha lokale, linjat sip. Këtu është shumë e thjeshtë. Mund të shikosh edhe shembuj .
serverin tonë të provisioning
Në manualet e prodhuesit zakonisht ka një pikë, ku thuhet: merrni csv, shkruani aty emrin e përdoruesit, fjalëkalimin, adresën MAC, me skriptin tonë provojeni gjeneroni skedarët, vendosini nën serverin web Apache dhe do të jetë mirë.
Në pikën tjetër të manualit zakonisht flitet se gjithashtu mund të enkriptohet skedari i konfiguruar të gjeneruar.
Por këtë arsye, është klasik. Qasja moderne me smoothie dhe Twitter thotë se duhet të krijosh një server web që nuk është aq i fuqishëm sa Apache, por do të bëjë vetëm një punë të vogël. Të formojë dhe të dorëzojë konfigurime përmes lidhjes.
TĂ« ndalemi kĂ«tu dhe tĂ« kujtojmĂ« se pothuajse tĂ« gjithĂ« telefonĂ«t SIP tani mund tĂ« marrin konfigurime pĂ«rmes http/https, prandaj ne nuk shqyrtojmĂ« realizime tĂ« tjera (ftp, tftp, ftps). Pas kĂ«saj, çdo telefon e di adresĂ«n e tij mac. Prandaj, ne do tĂ« bĂ«jmĂ« dy lidhje: njĂ« personale â pĂ«rmes çelĂ«sit tĂ« pajisjes, dhe e dyta Ă«shtĂ« e pĂ«rgjithshme, e cila funksionon pĂ«rmes njĂ« tokeni tĂ« pĂ«rbashkĂ«t dhe adresĂ«s mac.
Po ashtu, nuk do të ndalem në zero-config, dmth. konfigurimi i telefonit "nga e para", dmth. ju e futni atë në rrjet dhe ai fillon të funksionojë. Jo, në skenarin tim, ju e futni në rrjet, bëni një konfigurim paraprak (e konfiguroni të marrë konfigurimin nga serveri i provizionimit), dhe pastaj pini një piña colada dhe e rikonfiguroni telefonin siç duhet përmes provizionimit. Shpërndarja e Opsionit 66 është përgjegjësi e serverit DHCP.
Për herë të parë, po ndjehem i lodhura duke thënë "provisioning", prandaj fjala u shkurtua në "provizion", ju lutem mos më goditni me këmbë.
Dhe gjithashtu: serveri ynë i provizionit nuk ka UI, dmth. ndërfaqe për përdoruesit. Ndoshta, për momentin, por nuk jam i sigurt, pasi nuk më nevojitet. Në vend të kësaj, ka një API për ruajtjen/fshirjen e konfigurimeve, marrjen e listës së ofruesve të mbështetur, modeleve, gjithçka është e përshkruar sipas kanoneve të specifikimit swagger.
Pse API dhe jo UI? Sepse unë tashmë kam sistemin tim telefonik, kështu që kam burimin e kredencialeve, ku mjafton të marr këto të dhëna, të kompozoj json-in e nevojshëm dhe ta publikoj në serverin e provizionit. Dhe, serveri i provizionimit në përputhje me rregullat e caktuara në skedarin json, do të japë pajisjes përkatëse konfigurimin e saj ose nuk do ta japë, nëse pajisja nuk është ajo, ose nuk përputhet me kriteret e përcaktuara gjithashtu në këtë json.

Ja si doli ky mikroshërbim provizion. Quhet , kodi burimor është në dispozicion në GitHub, gjithashtu ka , një shembull i përdorimit të docker-it .
Karakteristikat kryesore:
nĂ« çdo rast, qasje e kufizuar nĂ« konfigurim pĂ«rkohĂ«sisht, me defolt 10 minuta. NĂ«se dĂ«shironi ta bĂ«ni pĂ«rsĂ«ri konfigurimin tĂ« disponueshĂ«m â ribotoni konfigurimin pĂ«rsĂ«ri.
një format për të gjithë ofruesit, gjithë përshtatja është hequr në sonata, dërgon një json të standardizuar, rregullon çdo pajisje të disponueshme.
Të gjitha konfigurimet e dhëna pajisjeve regjistrohen, të gjitha vendet problematike mund të shihen në log dhe të shihen gabimet.
ĂshtĂ« e mundur pĂ«rdorimi i njĂ« lidhjeje tĂ« pĂ«rgjithshme me token, çdo telefon merr konfigurimin e vet duke specifikuar adresĂ«n mac. Ose njĂ« lidhje personale sipas çelĂ«sit.
API për menaxhimin dhe dhënien e konfigurimeve për telefonat është ndarë sipas porteve.
Testet. Për mua ishte shumë e rëndësishme të dokumentoja formatin e dhënë të konfigurimit dhe të mbuloja të gjitha situatat e zakonshme të dhënies së konfigurimin me teste. Që të funksionojë gjithçka qartë.
Disavantazhet:
Derimë tani, nuk po përdoret ndonjë enkriptim në kuadër të sonata. Domethënë, sigurisht, mund të filloni të përdorni https duke vendosur, për shembull, nginx para sonata. Por metodat e markës ende nuk janë angazhuar. Pse? Projekti është ende i ri, ka provizionuar sa më pak se njëqind pajisje. Dhe, sigurisht, jam duke mbledhur ide, reagime. Më pas, për të bërë gjithçka të sigurt, që konfigurimet të mos mund të përgjohet në rrjet, ndoshta është e nevojshme të merremi me çelësat e enkriptimit, tls dhe të tjera, por kjo do të jetë një vazhdim.
Mungesa e UI. Mund të jetë një disavantazh i rëndësishëm për përdoruesin final, por për administratorin e sistemit është më e rëndësishme një utilitar konsol që një aplikacion i plotë. Të krijoj një utilitar konsol ishte në planet, por nuk jam i sigurt nëse ajo është e nevojshme.
ĂfarĂ« nĂ« pĂ«rfundim?
Një server i vogël dhe i thjeshtë web për provizionimin e disa modeleve të telefonave me API për menaxhim.
Përsëri, si duhet të funksionojë kjo?
- Instalojmë sonata.
- Formojmë json-konfigurimin dhe e publikojmë atë në sonata.
- Pastaj marrim nga sonata lidhjen për provizionimin.
- Më pas e specifikojmë këtë lidhje në aparatin telefonik.
- Aparati tërheq konfigurimin.
Në përdorimin e mëvonshëm vetëm dy hapa:
- Formojmë json-konfigurimin dhe e publikojmë atë në sonata.
- Aparati tërheq konfigurimin.
Cilat telefona provizionohen?
Furnizuesit Grandstream, Fanvil, Yealink. Konfigurimet nĂ« kuadĂ«r tĂ« furnizuesit janĂ« mĂ« shumĂ«-mĂ« pak tĂ« njĂ«jta, por mund tĂ« ndryshojnĂ« nĂ« varĂ«si tĂ« shĂ«mbujve â ndoshta do tĂ« jetĂ« e nevojshme tĂ« testoni pĂ«rbashkĂ«.
Cilat rregulla mund të përcaktohen?
Sipër kohe. Ju mund të përcaktoni kohën deri në të cilën konfigurimi do të jetë i aksesueshëm.
Sipër adresës mac. Kur jepet konfigurimi me lidhje personale, adresa mac gjithashtu do të kontrollohet për pajisjet.
Sipër ip. Sipër adresës IP, nga e cila është bërë kërkesa.
Si të ndërveprojmë me sonata?
Përmes API, duke bërë kërkesa http. API do të jetë i disponueshëm në instalimin tuaj. Duke qenë se API mbështet specifikimin swagger, mund të përdorni për kërkesat testuese ndaj API-së.
Ok, shkëlqyeshëm. Si mund ta provoj atë?
Më lehtë është të çelni imazhin docker mbi bazën e depozitës . Në depozitë ndodhet një udhëzues për instalimin.
Đ Đ”ŃлО Đ·ĐœĐ°Ń node.js?
Nëse keni përvojë në përdorimin e JavaScript, do të kuptoni shpejt si funksionon gjithçka këtu.
A do të ketë zhvillim të sonata-s?
Pjesërisht kam arritur qëllimet e mia. Zhvillimi në vazhdim është një çështje për detyrat e mia lidhur me automatizimin e konfigurimit të telefonave. Ka gjithashtu mundësi për të zgjeruar konfigurimet për rregullimin e butonave të telefonit, për të shtuar adresat e provizionit të librit të adresave, ndoshta edhe diçka tjetër, shkruani në komentet.
Përmbledhje dhe falënderime
Do të jem i lumtur për propozime / kundërshtime / komente dhe pyetje, sepse mund të ketë diçka që nuk kam përshkruar qartë.
Gjithashtu, shpreh falënderime për të gjithë kolegët që ndihmuan, konsultuan, testuan, ofruan / dhuruan telefonat për testime. Realisht, shumë njerëz me të cilët kam biseduar për punë, në në çatat dhe emailet. Faleminderit për idetë dhe mendimet.
Burimi: habr.com
