{"id":34841,"date":"2019-10-31T22:00:43","date_gmt":"2019-10-31T19:00:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible\/"},"modified":"2019-10-31T22:00:43","modified_gmt":"2019-10-31T19:00:43","slug":"avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible","title":{"rendered":"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/c60a2326ab13e7766eafda3ae5ac39c5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve. Un\u00eb punoj si admini kryesor n\u00eb OK dhe p\u00ebrgjigjem p\u00ebr q\u00ebndrueshm\u00ebrin\u00eb e portalit. Dua t\u00eb flas p\u00ebr m\u00ebnyr\u00ebn si e nd\u00ebrtuam procesin e z\u00ebvend\u00ebsimit automatik t\u00eb disqeve, dhe m\u00eb pas, si e p\u00ebrjashtuam administratorin nga ky proces dhe e z\u00ebvend\u00ebsuam at\u00eb me nj\u00eb bot.<\/p>\n<p>Ky artikull \u00ebsht\u00eb nj\u00eb lloj transliterimi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=5WhbG3FQveE&amp;list=FLKN7KW1sxju7fWJvKuyKxEQ\">i fjal\u00ebs<\/a><\/noindex> n\u00eb HighLoad+ 2018<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Nd\u00ebrtimi i procesit p\u00ebr z\u00ebvend\u00ebsimin e disqeve<\/h2>\n<p><\/p>\n<h3>Fillimisht disa numra<\/h3>\n<p>\nOK \u00ebsht\u00eb nj\u00eb sh\u00ebrbim gjigant q\u00eb p\u00ebrdoret nga miliona njer\u00ebz. Ai mb\u00ebshtetet nga rreth 7,000 server\u00eb, t\u00eb vendosur n\u00eb 4 data-qendra t\u00eb ndryshme. N\u00eb server\u00eb ka m\u00eb shum\u00eb se 70,000 disqe. N\u00ebse i vendosim nj\u00eb mbi tjet\u00ebr, do t\u00eb formohet nj\u00eb kull\u00eb me lart\u00ebsi m\u00eb shum\u00eb se 1 km. <\/p>\n<p>Disqet e forta jan\u00eb komponenti i serverit q\u00eb prishet m\u00eb shpesh. Me k\u00ebto v\u00ebllime, na duhet t\u00eb z\u00ebvend\u00ebsojm\u00eb rreth 30 disqe n\u00eb jav\u00eb, dhe kjo procedur\u00eb \u00ebsht\u00eb b\u00ebr\u00eb nj\u00eb rutin\u00eb jo shum\u00eb e k\u00ebndshme.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/5e915e9077994efcc4e74a26fc6286fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Incidentet<\/h3>\n<p>\nN\u00eb kompanin\u00eb ton\u00eb \u00ebsht\u00eb vendosur nj\u00eb menaxhim i plot\u00eb i incidenteve. \u00c7do incident regjistrohet n\u00eb Jira dhe m\u00eb pas zgjidhet dhe analizohet. N\u00ebse ndodhi nj\u00eb incident me efekt p\u00ebr p\u00ebrdoruesit, ne patjet\u00ebr mblidhemi dhe mendojm\u00eb se si t\u00eb reagojm\u00eb m\u00eb shpejt n\u00eb raste t\u00eb tilla, si t\u00eb reduktoj\u00eb efektin dhe sigurisht si t\u00eb parandalojm\u00eb p\u00ebrs\u00ebritjen.<\/p>\n<p>Sistemet e ruajtjes nuk p\u00ebrb\u00ebjn\u00eb p\u00ebrjashtim. Gjendja e tyre monitorohet nga Zabbix. Ne monitorojm\u00eb mesazhet n\u00eb Syslog p\u00ebr gabime n\u00eb shkarkim\/shkarkim, analizojm\u00eb gjendjen e HW\/SW-raid-eve, monitorojm\u00eb SMART, p\u00ebr SSD llogarisim konsumimin. <\/p>\n<h3>Si jan\u00eb ndryshuar disqet m\u00eb par\u00eb<\/h3>\n<p>\nKur nj\u00eb tregues ndizet n\u00eb Zabbix, krijohet nj\u00eb incident n\u00eb Jira dhe autmatikisht caktohet p\u00ebr inxhinier\u00ebt p\u00ebrkat\u00ebs n\u00eb qendrat e t\u00eb dh\u00ebnave. Ne e b\u00ebjm\u00eb k\u00ebt\u00eb p\u00ebr t\u00eb gjith\u00eb incidentet HW, dometh\u00ebn\u00eb ato q\u00eb k\u00ebrkojn\u00eb ndonj\u00eb pun\u00eb fizike me pajisjet n\u00eb q\u00ebndrat e t\u00eb dh\u00ebnave. <br \/>\nInxhinieri i qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave \u00ebsht\u00eb personi q\u00eb zgjidh \u00e7\u00ebshtjet e lidhura me harduerin, p\u00ebrgjigjet p\u00ebr instalimin, mir\u00ebmbajtjen dhe heqjen e server\u00ebve. Kur merr nj\u00eb bilet\u00eb, inxhinieri fillon pun\u00ebn. Ai nd\u00ebrron disqet n\u00eb raftet e disqeve vet\u00eb. Por n\u00ebse nuk ka qasje n\u00eb pajisjen e nevojshme, inxhinieri k\u00ebrkon ndihm\u00ebn e administratoreve sistematik\u00eb n\u00eb detyr\u00eb. S\u00eb pari, duhet t\u00eb nxirret disku nga rotacioni. P\u00ebr k\u00ebt\u00eb, nevojiten ndryshime t\u00eb nevojshme n\u00eb server, ndalimi i aplikacioneve, dhe shk\u00ebputja e disku.<\/p>\n<p>Administratori sistematik n\u00eb detyr\u00eb p\u00ebrgjat\u00eb turnit t\u00eb pun\u00ebs merr p\u00ebrsip\u00ebr funksionimin e t\u00eb gjith\u00eb portalit. Ai heton incidentet, merret me riparime, ndihmon zhvilluesit t\u00eb realizojn\u00eb detyra t\u00eb vogla. Ai nuk merret vet\u00ebm me disqet e goditura.<\/p>\n<p>M\u00eb par\u00eb, inxhinier\u00ebt e qendr\u00ebs s\u00eb t\u00eb dh\u00ebnave komunikonin me administratorin e sistemit n\u00eb nj\u00eb bised\u00eb. Inxhinier\u00ebt d\u00ebrgonin lidhje p\u00ebr biletat e Jira, administratori i kalonte ato dhe mbante nj\u00eb regjist\u00ebr pune n\u00eb nj\u00eb sh\u00ebnim. Por p\u00ebr k\u00ebto detyra, bisedat jan\u00eb t\u00eb paefektshme: informacioni atje nuk \u00ebsht\u00eb i strukturuar dhe humbet shpejt. Po ashtu, administratori mund t\u00eb largohej nga kompjuteri dhe p\u00ebr nj\u00eb koh\u00eb t\u00eb caktuar t\u00eb mos p\u00ebrgjigjej, nd\u00ebrsa inxhinieri q\u00ebndronte pran\u00eb serverit me nj\u00eb paket\u00eb diskesh dhe prisje.<\/p>\n<p>Por m\u00eb e keqja ishte se administrator\u00ebt nuk e shihnin t\u00ebr\u00eb pamjen: cilat incidente diskesh ekzistojn\u00eb, ku mund t\u00eb ndodhte nj\u00eb problem. Kjo vjen si pasoj\u00eb q\u00eb ne i japim t\u00eb gjitha incidente HW inxhinier\u00ebve. Po, mund t\u00eb shfaqeshin t\u00eb gjitha incidentet n\u00eb tabel\u00ebn e administratorit. Por ato jan\u00eb shum\u00eb, dhe administratori angazhohej vet\u00ebm p\u00ebr disa prej tyre.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, inxhinieri nuk mund t\u00eb vendos\u00eb prioritetet n\u00eb m\u00ebnyr\u00eb t\u00eb sakt\u00eb, sepse ai nuk di asgj\u00eb p\u00ebr q\u00ebllimin e server\u00ebve t\u00eb caktuar, p\u00ebr shp\u00ebrndarjen e informacionit n\u00eb mbajt\u00ebs.<\/p>\n<h3>Procedura e re e z\u00ebvend\u00ebsimit<\/h3>\n<p>\nE para q\u00eb ne b\u00ebm\u00eb, ishte t\u00eb spostojm\u00eb t\u00eb gjitha incidentet e diskut n\u00eb nj\u00eb tip t\u00eb ve\u00e7ant\u00eb \"HW-disk\" dhe t\u00eb shtojm\u00eb fushat \"emri i bllokut t\u00eb pajisjes\", \"masa\" dhe \"tipi i diskut\", n\u00eb m\u00ebnyr\u00eb q\u00eb kjo informacion t\u00eb ruhet n\u00eb bilet\u00eb dhe t\u00eb mos jet\u00eb e nevojshme t\u00eb shk\u00ebmbehet vazhdimisht n\u00eb bised\u00eb. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/c4526bf668e31d90e0fbd061de44f1a7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPo ashtu, u ra dakord q\u00eb brenda nj\u00eb incidenti t\u00eb q\u00ebndrojm\u00eb vet\u00ebm me nj\u00eb disk. Kjo e thjeshtoi ndjesh\u00ebm procesin e automatizimit, mbledhjen e statistikave dhe pun\u00ebn m\u00eb von\u00eb. <\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, u shtua fusha \"administratori p\u00ebrgjegj\u00ebs\". Aty automatikisht vendoset administratori i turnit. Kjo \u00ebsht\u00eb shum\u00eb e p\u00ebrshtatshme, sepse tani inxhinieri gjithmon\u00eb sheh se kush \u00ebsht\u00eb p\u00ebrgjegj\u00ebs. Nuk \u00ebsht\u00eb e nevojshme t\u00eb shkohet n\u00eb kalendar dhe t\u00eb k\u00ebrkohet. Kjo fush\u00eb b\u00ebri t\u00eb mundur q\u00eb biletat ku mund t\u00eb nevojitet ndihma e tij t\u00eb dalin n\u00eb panelin e administratorit.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/5097e5dcca1fddd68d1e5f296c09f60a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nP\u00ebr t\u00eb siguruar q\u00eb t\u00eb gjith\u00eb pjes\u00ebmarr\u00ebsit t\u00eb p\u00ebrfitojn\u00eb sa m\u00eb shum\u00eb nga inovacionet, krijuam filtrat dhe panelin e kontrollit, dhe ua shpjeguam atyre. Kur njer\u00ebzit e kuptojn\u00eb ndryshimin, ata nuk e shohin at\u00eb si di\u00e7ka t\u00eb panevojshme. P\u00ebr inxhinierin \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb dij\u00eb numrin e stend\u00ebs ku ndodhet serveri, si dhe p\u00ebrmasat dhe tipin e diskut. Administratori duhet, n\u00eb radh\u00eb t\u00eb par\u00eb, t\u00eb kuptoj\u00eb se \u00e7far\u00eb grupi server\u00ebsh \u00ebsht\u00eb, dhe cilat mund t\u00eb jen\u00eb efektet e z\u00ebvend\u00ebsimit t\u00eb diskut.<\/p>\n<p>Prania e fushave dhe shfaqja e tyre \u00ebsht\u00eb e dobishme, por kjo nuk na liron nga nevoja p\u00ebr t\u00eb p\u00ebrdorur biseda. P\u00ebr k\u00ebt\u00eb, na duhej t\u00eb ndryshonim procesin e pun\u00ebs. <\/p>\n<p>M\u00eb par\u00eb, ai ishte k\u00ebshtu:<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/2b79cdb7ec88b5ae3d2917ad8b164c6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSot inxhinier\u00ebt vazhdojn\u00eb t\u00eb punojn\u00eb k\u00ebshtu, kur nuk u nevojitet ndihma e administratorit.<\/p>\n<p>E para q\u00eb b\u00ebm\u00eb ishte t\u00eb futnim nj\u00eb status t\u00eb ri <b>Investigate<\/b>. N\u00eb k\u00ebt\u00eb status, tiketi ndodhet kur inxhinieri ende nuk e ka vendosur n\u00ebse do t'i nevojitet ndihma e administratorit apo jo. N\u00ebp\u00ebrmjet k\u00ebtij statusi, inxhinieri mund t'i kaloj\u00eb tiket\u00ebn administratorit. P\u00ebrve\u00e7 k\u00ebsaj, me k\u00ebt\u00eb status i ndajm\u00eb tiket\u00ebt kur k\u00ebrkohet z\u00ebvend\u00ebsimi i diskut, por disku vet\u00eb nuk ndodhet n\u00eb vend. Kjo ndodh n\u00eb rastin e CDN-s\u00eb dhe vendeve t\u00eb larg\u00ebta.<\/p>\n<p>Gjithashtu, kemi shtuar nj\u00eb status <b>Gati<\/b>. B\u00ebhet fjal\u00eb p\u00ebr nj\u00eb tiket q\u00eb kalon pas shk\u00ebmbimit t\u00eb diskut. Kjo do t\u00eb thot\u00eb se gjith\u00e7ka \u00ebsht\u00eb b\u00ebr\u00eb, por n\u00eb server po sinkronizohet HW\/SW RAID. Kjo mund t\u00eb zgjas\u00eb mjaft gjat\u00eb.<\/p>\n<p>N\u00ebse p\u00ebr pun\u00eb angazhohet nj\u00eb administrator, skema paksa kompliktohet.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/5b6aacbb0d4049e62e7cb9ee28eb6498.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNga statusi <b>E hapur<\/b> tiket\u00eb mund t\u00eb kaloj\u00eb si administrator sistemi, ashtu edhe inxhinier. N\u00eb statusin <b>N\u00eb proces<\/b> administratori e nxjerr diskun nga rotacioni, n\u00eb m\u00ebnyr\u00eb q\u00eb inxhinieri t\u00eb mund ta nxjerr\u00eb leht\u00ebsisht: aktivizon ndri\u00e7imin, e demonton diskun, ndalon aplikacionet, var\u00ebsisht nga grupi konkret i server\u00ebve.<\/p>\n<p>Pastaj tiket\u00eb kalon n\u00eb <b>Gati p\u00ebr t\u00eb ndryshuar<\/b>: ky \u00ebsht\u00eb nj\u00eb sinjal p\u00ebr inxhinierin q\u00eb disku mund t\u00eb nxirret. T\u00eb gjitha fushat n\u00eb Jira tashm\u00eb jan\u00eb plot\u00ebsuar, inxhinieri di se \u00e7far\u00eb lloji dhe madh\u00ebsie disku \u00ebsht\u00eb. K\u00ebto t\u00eb dh\u00ebna plot\u00ebsohen automatikisht n\u00eb statusin e m\u00ebparsh\u00ebm ose nga administratori.<\/p>\n<p>Pas shk\u00ebmbimit t\u00eb diskut, tiket\u00eb kalon n\u00eb statusin <b>I ndryshuar<\/b>. Kontrollohet n\u00ebse \u00ebsht\u00eb vendosur disku i duhur, b\u00ebhet skanimi, aktivizohet aplikacioni dhe disa detyra p\u00ebr rikuperimin e t\u00eb dh\u00ebnave. Gjithashtu tiket\u00eb mund t\u00eb kaloj\u00eb n\u00eb statusin <b>Gati<\/b>, n\u00eb k\u00ebt\u00eb rast p\u00ebrgjegj\u00ebs do t\u00eb mbetet administratori, sepse ai e futi diskun n\u00eb rotacion. Skema e plot\u00eb duket k\u00ebshtu.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/32f8d488e2ff6a28a3341114b66de0a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nShtimi i fushave t\u00eb reja na e b\u00ebri jet\u00ebn shum\u00eb m\u00eb t\u00eb leht\u00eb. Djemt\u00eb filluan t\u00eb punojn\u00eb me informacion t\u00eb strukturuar, dhe u b\u00eb e qart\u00eb se \u00e7far\u00eb duhet b\u00ebr\u00eb dhe n\u00eb cilin hap. Prioritetet u b\u00ebn\u00eb shum\u00eb m\u00eb relevante, pasi tani ato caktohen nga administratori.<\/p>\n<p>Nuk ka m\u00eb nevoj\u00eb p\u00ebr biseda. Sigurisht, administratori mund t'i shkruaj\u00eb inxhinierit \"k\u00ebtu duhet ta vendos\u00ebsh m\u00eb shpejt\" ose \"\u00ebsht\u00eb mbr\u00ebmje, do t\u00eb arrish ta z\u00ebvend\u00ebsosh?\". Por nuk komunikojm\u00eb m\u00eb \u00e7do dit\u00eb n\u00eb biseda p\u00ebr k\u00ebto \u00e7\u00ebshtje.<\/p>\n<p>Disk\u00ebt filluan t\u00eb z\u00ebvend\u00ebsohen n\u00eb grupe. N\u00ebse administratori ka ardhur n\u00eb pun\u00eb pak m\u00eb her\u00ebt, ka pak koh\u00eb t\u00eb lir\u00eb, dhe asgj\u00eb nuk ka ndodhur, ai mund t\u00eb p\u00ebrgatis\u00eb nj\u00eb s\u00ebr\u00eb server\u00ebsh p\u00ebr z\u00ebvend\u00ebsim: t\u00eb vendos\u00eb fushat, t\u00eb nxjerr\u00eb disk\u00ebt nga rotacioni dhe t'i kaloj\u00eb detyr\u00ebn inxhinierit. Inxhinieri vjen m\u00eb von\u00eb n\u00eb qendr\u00ebn e t\u00eb dh\u00ebnave, sheh detyr\u00ebn, merr depozit\u00eb t\u00eb nevojshme dhe e z\u00ebvend\u00ebson menj\u00ebher\u00eb. Si rezultat, shpejt\u00ebsia e z\u00ebvend\u00ebsimit u rrit.<\/p>\n<h3>Eksperienca e nxjerr\u00eb nga nd\u00ebrtimi i Workflow.<\/h3>\n<p><\/p>\n<ul>\n<li><b>N\u00eb nd\u00ebrtimin e procedur\u00ebs, \u00ebsht\u00eb e nevojshme t\u00eb mblidhen informatat nga burime t\u00eb ndryshme.<\/b><br \/>\nDisa nga administrator\u00ebt tan\u00eb nuk e dinin se inxhinieri i nd\u00ebrron disqet vet\u00eb. Disa mendonin se inxhinier\u00ebt kujdeseshin p\u00ebr sinkronizimin e RAID MD, ndon\u00ebse disa prej tyre as kishin akses p\u00ebr k\u00ebt\u00eb. Disa inxhinier\u00eb t\u00eb kryesis\u00eb e b\u00ebnin k\u00ebt\u00eb, por jo gjithmon\u00eb, sepse procesi nuk ishte asgj\u00ebkund i p\u00ebrshkruar.<\/li>\n<li><b>Procedura duhet t\u00eb jet\u00eb e thjesht\u00eb dhe e kuptueshme.<\/b><br \/>\nNjeriu \u00ebsht\u00eb i v\u00ebshtir\u00eb t\u00eb mbaj\u00eb mend shum\u00eb hapa. Statuset m\u00eb t\u00eb r\u00ebnd\u00ebsishme q\u00eb jan\u00eb ngjitur n\u00eb Jira duhet t\u00eb shfaqen n\u00eb ekranin kryesor. Mund t'i rinovoni, p\u00ebr shembull, 'In progress' ne e quajm\u00eb 'Gati p\u00ebr ndryshim'. Statuset e tjera mund t\u00eb fshehen n\u00eb nj\u00eb men\u00fc t\u00eb r\u00ebn\u00eb, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos jen\u00eb penges\u00eb p\u00ebr syt\u00eb. Por \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb mos i kufizoni njer\u00ebzit, duhet t'u jepni mund\u00ebsin\u00eb t\u00eb b\u00ebjn\u00eb kalimin.<br \/>\nShpjegoni vler\u00ebn e inovacioneve. Kur njer\u00ebzit kuptojn\u00eb, ata e pranojn\u00eb m\u00eb mir\u00eb procedur\u00ebn e re. P\u00ebr ne ishte shum\u00eb e r\u00ebnd\u00ebsishme q\u00eb njer\u00ebzit t\u00eb mos kalonin n\u00ebp\u00ebr t\u00ebr\u00eb procesin, por t\u00eb ecin p\u00ebrmes tij. M\u00eb pas ne nd\u00ebrtuam automatizimin mbi k\u00ebt\u00eb.<\/li>\n<li><b>Prisni, analizoni, ndihmoni.<\/b><br \/>\nNa na u shkoi rreth nj\u00eb muaji p\u00ebr t\u00eb nd\u00ebrtuar procedur\u00ebn, implementimin teknik, takimet dhe diskutimet. Dhe p\u00ebr zbatimin \u2014 m\u00eb shum\u00eb se tre muaj. Kam par\u00eb si njer\u00ebzit filluan ngadal\u00eb t\u00eb p\u00ebrdorin novacionin. N\u00eb fazat e para kishte shum\u00eb negativiz\u00ebm. Por kjo nuk varej aspak nga procedura vet\u00eb, nga implementimi i saj teknik. P\u00ebr shembull, nj\u00eb administrator vinte n\u00eb p\u00ebrdorim jo Jira, por nj\u00eb plugin t\u00eb Jira n\u00eb Confluence, dhe disa gj\u00ebra nuk ishin t\u00eb disponueshme p\u00ebr t\u00eb. I treguam atij Jira, dhe produktiviteti i administratorit u rrit si n\u00eb detyrat e p\u00ebrgjithshme, ashtu edhe n\u00eb z\u00ebvend\u00ebsimet e disqeve.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve<\/h2>\n<p>\nP\u00ebr automatizimin e z\u00ebvend\u00ebsimit t\u00eb disqeve, ne kemi ardhur disa her\u00eb. Ne kishim tashm\u00eb zhvillime, skenar\u00eb, por t\u00eb gjitha ato punonin ose n\u00eb m\u00ebnyr\u00eb interaktive, ose n\u00eb manual, duke k\u00ebrkuar aktivizimin. Dhe vet\u00ebm pas implementimit t\u00eb procedur\u00ebs s\u00eb re, ne kuptuam se pik\u00ebrisht ajo na kishte munguar.<\/p>\n<p>Tani q\u00eb procesi i z\u00ebvend\u00ebsimit \u00ebsht\u00eb ndar\u00eb n\u00eb etapa, ku p\u00ebr secil\u00ebn \u00ebsht\u00eb caktuar nj\u00eb ekzekutor dhe nj\u00eb list\u00eb veprimesh, ne mund t\u00eb p\u00ebrfshijm\u00eb automatizimin gradualisht, dhe jo menj\u00ebher\u00eb. P\u00ebr shembull, etapa m\u00eb e thjesht\u00eb \u2014 Ready (kontrolli i sinkronizimit RAID\/ t\u00eb dh\u00ebnave) mund t\u00eb delegohet leht\u00eb tek nj\u00eb bot. Kur boti t\u00eb m\u00ebsoj\u00eb pak m\u00eb shum\u00eb, mund t'i japim nj\u00eb detyr\u00eb m\u00eb t\u00eb p\u00ebrgjegjshme \u2014 futjen e disqeve n\u00eb rotacion, etj.<\/p>\n<h3>Zoo e konfigurimeve<\/h3>\n<p>\nPara se t\u00eb flasim p\u00ebr botin, le t\u00eb b\u00ebjm\u00eb nj\u00eb ekskursion t\u00eb vog\u00ebl n\u00eb zoo-n\u00eb e instalimeve tona. S\u00eb pari, kjo lidhet me madh\u00ebsin\u00eb gjigande t\u00eb infrastruktur\u00ebs son\u00eb. S\u00eb dyti, p\u00ebr \u00e7do sh\u00ebrbim p\u00ebrpiqemi t\u00eb zgjedhim konfigurimin optimal t\u00eb pajisjes. Kemi rreth 20 modele t\u00eb RAID-it harduerik, kryesisht LSI dhe Adaptec, por ka edhe HP dhe DELL t\u00eb versioneve t\u00eb ndryshme. \u00c7do kontrollues RAID ka utilitarin e tij t\u00eb menaxhimit. Grupi i komandave dhe rezultati i tyre mund t\u00eb ndryshojn\u00eb nga versioni n\u00eb version p\u00ebr \u00e7do kontrollues RAID. Atje ku nuk p\u00ebrdoren HW-RAID, mund t\u00eb ket\u00eb mdraid.<\/p>\n<p>Praktikisht t\u00eb gjitha instalimet e reja i realizojm\u00eb pa rezervim diskesh. Ne p\u00ebrpiqemi t\u00eb mos p\u00ebrdorim m\u00eb RAID harduerik dhe softuerik, pasi q\u00eb rezervojm\u00eb sistemet tona n\u00eb nivelin e qendrave t\u00eb t\u00eb dh\u00ebnave dhe jo t\u00eb server\u00ebve. Por, natyrisht, ka shum\u00eb server\u00eb legacy q\u00eb duhen mb\u00ebshtetur.<\/p>\n<p>Diku disqet n\u00eb RAID-kontroller\u00ebt kalohen si pajisje raw, diku p\u00ebrdoren JBOD. Ka konfiguracione me nj\u00eb disk sistemik n\u00eb server, dhe n\u00ebse ai duhet t\u00eb z\u00ebvend\u00ebsohet, at\u00ebher\u00eb duhet t\u00eb riparosen serveri me instalimin e OS-s\u00eb dhe aplikacioneve, madje edhe versionet e tingjuara, pastaj t\u00eb shtohen skedar\u00ebt e konfigurimit dhe t\u00eb fillohen aplikacionet. Po ashtu, ka shum\u00eb grupe server\u00ebsh, ku rezervimi b\u00ebhet jo n\u00eb nivelin e sistemit t\u00eb diskut, por direkt n\u00eb vet\u00eb aplikacionet.<\/p>\n<p>N\u00eb total, ne kemi m\u00eb shum\u00eb se 400 grupe unike server\u00ebsh, ku punojn\u00eb rreth 100 aplikacione t\u00eb ndryshme. P\u00ebr t\u00eb mbuluar nj\u00eb num\u00ebr kaq t\u00eb madh opsionesh, na duhej nj\u00eb mjet shum\u00eb-funksional automatizimi. Preferohet nj\u00eb DSL i thjesht\u00eb, q\u00eb t\u00eb mb\u00ebshtes\u00eb jo vet\u00ebm ata q\u00eb e shkruan.<\/p>\n<p>Ne zgjodh\u00ebm Ansible sepse ai \u00ebsht\u00eb pa agjent: nuk ishte e nevojshme t\u00eb p\u00ebrgatitej infrastruktura, fillim i shpejt\u00eb. P\u00ebr m\u00eb tep\u00ebr, ai \u00ebsht\u00eb shkruar n\u00eb Python, i cili \u00ebsht\u00eb pranuar si standard n\u00eb ekip.<\/p>\n<h3>Schema e p\u00ebrgjithshme<\/h3>\n<p>\nLe t\u00eb shqyrtojm\u00eb skem\u00ebn e p\u00ebrgjithshme t\u00eb automatizimit p\u00ebrmes nj\u00eb incidenti t\u00eb vet\u00ebm. Zabbix e detecton se disku sdb ka d\u00ebshtuar, ndizet nj\u00eb trigger, krijohet nj\u00eb bilet\u00eb n\u00eb Jira. Administratorit e sheh at\u00eb, e kupton se nuk \u00ebsht\u00eb nj\u00eb dublikat dhe as nj\u00eb false positive, q\u00eb do t\u00eb thot\u00eb se duhet t\u00eb ndryshohet disku dhe e kalon bilet\u00ebn n\u00eb In progress.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/673df0fe9600bc65633841222f436d37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAplikacioni DiskoBot, i shkruar n\u00eb Python, pyet periodikisht Jira p\u00ebr bileta t\u00eb reja. Ai v\u00ebren se ka nj\u00eb bilet\u00eb t\u00eb re In progress, aktivizohet thread-i p\u00ebrkat\u00ebs, i cili nis playbook-un n\u00eb Ansible (kjo b\u00ebhet p\u00ebr \u00e7do status n\u00eb Jira). N\u00eb k\u00ebt\u00eb rast, niset Prepare2change.<\/p>\n<p>Ansible d\u00ebrgohet n\u00eb host, e nxjerr diskun nga rotacioni dhe raporton statusin aplikacionit p\u00ebrmes Callbacks. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/8bfc13129f8deca640eb63ea81f616c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00eb p\u00ebrfundim, boti automatikisht e kalon bilet\u00ebn n\u00eb Ready to change. Inxhinieri merr nj\u00eb njoftim dhe niset p\u00ebr ta nd\u00ebrruar disku, pas t\u00eb cilit e kalon bilet\u00ebn n\u00eb Changed. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/eeda06b6966f435e2172d3f9c61b341e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSipas skem\u00ebs s\u00eb p\u00ebrshkruar m\u00eb sip\u00ebr, tiketi kthehet p\u00ebrs\u00ebri te boti, i cili nis nj\u00eb playbook tjet\u00ebr, shkon n\u00eb host dhe fut diskun n\u00eb rotacion. Boti mbyll tiket\u00ebn. Hurrah!<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/51b8c7050b0c10c16ad6a6d4974c3ebf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTani le t\u00eb flasim p\u00ebr disa komponente t\u00eb sistemit.<\/p>\n<h3>Diskobot<\/h3>\n<p>\nKy aplikacion \u00ebsht\u00eb shkruar n\u00eb Python. Ai zgjedh tiket\u00eb nga Jira n\u00eb p\u00ebrputhje me JQL. N\u00eb var\u00ebsi t\u00eb statusit t\u00eb tiket\u00ebs, ajo kalon te p\u00ebrpunuesi p\u00ebrkat\u00ebs, i cili nga ana e tij nis playbook-un Ansible p\u00ebrkat\u00ebs.<\/p>\n<p>JQL dhe intervalet e sondazhit p\u00ebrcaktohen n\u00eb skedarin e konfigurimit t\u00eb aplikacionit.<\/p>\n<pre><code class=\"plaintext\">jira_states:\n  investigate:\n    jql: '\u2026 status = Open and \"Disk Size\" is EMPTY'\n    interval: 180\n\n  inprogress:\n    jql: '\u2026  and \"Disk Size\" is not EMPTY and \"Device Name\" is not EMPTY'\n \n  ready:\n    jql: '\u2026 and (labels not in (\"dbot_ignore\") or labels is EMPTY)'\n    interval: 7200\n<\/code><\/pre>\n<p>\nP\u00ebr shembull, midis tiket\u00ebve n\u00eb statusin In progress, zgjedhen vet\u00ebm ato p\u00ebr t\u00eb cilat jan\u00eb plot\u00ebsuar fushat Disk size dhe Device name. Device name \u2014 \u00ebsht\u00eb emri i pajisjes bllokuese, e nevojshme p\u00ebr ekzekutimin e playbook-it. Disk size nevojitet q\u00eb inxhinieri t\u00eb dij\u00eb se sa i madh \u00ebsht\u00eb disku q\u00eb k\u00ebrkohet.<\/p>\n<p>Dhe midis tiket\u00ebve me statusin Ready filtrohen tiket\u00ebt me etiket\u00ebn dbot_ignore. Duke folur, etiketat e Jira i p\u00ebrdorim si p\u00ebr filtrimin e till\u00eb, ashtu edhe p\u00ebr markimin e kopjeve t\u00eb tiket\u00ebve dhe p\u00ebr mbledhjen e statistikave.<\/p>\n<p>N\u00eb rast t\u00eb nj\u00eb d\u00ebshtimi t\u00eb playbook-it, Jira i jep etiket\u00ebn dbot_failed p\u00ebr t'u b\u00ebr\u00eb m\u00eb pas e mundur zgjidhja e problemit. <\/p>\n<h3>Interaksioni me Ansible<\/h3>\n<p>\nAplikacioni nd\u00ebrvepron me Ansible p\u00ebrmes <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/dev_guide\/developing_api.html\">Ansible Python API<\/a><\/noindex>. N\u00eb playbook_executor ne kalojm\u00eb emrin e skedarit dhe nj\u00eb grup variablash. Kjo lejon q\u00eb projekti Ansible t\u00eb mbahet si skedar\u00eb normal\u00eb yml dhe t\u00eb mos p\u00ebrshkruhet n\u00eb kodin Python. <\/p>\n<p>Gjithashtu n\u00eb Ansible p\u00ebrmes *extra_vars* kalohen emri i pajisjes bllokuese, statusi i bilet\u00ebs, si dhe callback_url, ku \u00ebsht\u00eb i koduar \u00e7el\u00ebsi i problemit \u2014 ai p\u00ebrdoret p\u00ebr callback n\u00eb HTTP.<\/p>\n<p>P\u00ebr \u00e7do ekzekutim krijohet nj\u00eb inventar i p\u00ebrkohsh\u00ebm, i p\u00ebrb\u00ebr\u00eb nga nj\u00eb host dhe grupi, n\u00eb t\u00eb cilin hyn ky host, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb aplikohen group_vars.<\/p>\n<p>Ja nj\u00eb shembull i nj\u00eb detyre, n\u00eb t\u00eb cil\u00ebn realizohet callback HTTP.<\/p>\n<p>Ne marrim rezultatet e ekzekutimit t\u00eb playbook-eve p\u00ebrmes callback(-eve). Ato jan\u00eb t\u00eb dy llojeve:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/plugins\/callback.html\">Ansible callback plugin<\/a><\/noindex>, ai ofron t\u00eb dh\u00ebna mbi rezultatet e ekzekutimit t\u00eb playbook-it. Atje p\u00ebrshkruhen detyrat q\u00eb jan\u00eb nisur, ekzekutuar me sukses ose jo. Ky callback thirret pas p\u00ebrfundimit t\u00eb ekzekutimit t\u00eb playbook-it.<\/li>\n<li>HTTP callback p\u00ebr t\u00eb marr\u00eb informacione gjat\u00eb ekzekutimit t\u00eb playbook-it. N\u00eb detyr\u00ebn Ansible kemi ekzekutuar nj\u00eb k\u00ebrkes\u00eb POST\/GET drejt aplikacionit ton\u00eb.<\/li>\n<\/ul>\n<p>\nP\u00ebrmes HTTP callback(-eve) transmetohen variablat q\u00eb jan\u00eb p\u00ebrcaktuar gjat\u00eb ekzekutimit t\u00eb playbook\u2019it dhe q\u00eb ne duam t\u2019i ruajm\u00eb dhe t\u00eb p\u00ebrdorim n\u00eb ekzekutimet e ardhshme. K\u00ebto t\u00eb dh\u00ebna i shkruajm\u00eb n\u00eb sqlite.<\/p>\n<p>Po ashtu p\u00ebrmes HTTP callback ne l\u00ebm\u00eb komente dhe ndryshojm\u00eb statusin e tiket\u00ebs.<\/p>\n<p><b class=\"spoiler_title\">HTTP callback<\/b><\/p>\n<pre><code class=\"plaintext\"># Make callback to Diskobot App\n# Variables:\n#    callback_post_body: # A dict with follow keys. All keys are optional\n#       msg: If exist it would be posted to Jira as comment\n#       data: If exist it would be saved in Incident.variables\n#       desire_state: Set desire_state for incident\n#       status: If exist Proceed issue to that status\n\n  - name: Callback to Diskobot app (jira comment\/status)\n    uri:\n      url: \"{{ callback_url }}\/{{ devname }}\"\n      user: \"{{ diskobot_user }}\"\n      password: \"{{ diskobot_pass }}\"\n      force_basic_auth: True\n      method: POST\n      body: \"{{ callback_post_body | to_json }}\"\n      body_format: json\n    delegate_to: 127.0.0.1\n<\/code><\/pre>\n<p>Si shum\u00eb detyra t\u00eb ngjashme, ne e nxorr\u00ebm k\u00ebt\u00eb n\u00eb nj\u00eb skedar t\u00eb p\u00ebrbashk\u00ebt dhe e p\u00ebrfshim\u00eb kur nevojitet, p\u00ebr t\u00eb mos e p\u00ebrs\u00ebritur vazhdimisht n\u00eb playbook. K\u00ebtu figuron callback_url, n\u00eb t\u00eb cilin jan\u00eb koduar \u00e7el\u00ebsi i problemit dhe emri i hostit. Kur Ansible ekzekuton k\u00ebt\u00eb POST k\u00ebrkes\u00eb, boti kupton q\u00eb ajo ka ardhur n\u00eb kuad\u00ebr t\u00eb nj\u00eb incidenti t\u00eb caktuar.<\/p>\n<p>Ja nj\u00eb shembull nga playbook, n\u00eb t\u00eb cilin ne nxorr\u00ebm diskun nga pajisja MD:<\/p>\n<pre><code class=\"plaintext\">  # Save mdadm configuration\n  - include: common\/callback.yml\n    vars:\n      callback_post_body:\n        status: 'Ready to change'\n        msg: \"Removed disk from mdraid {{ mdadm_remove_disk.msg | comment_jira }}\"\n        data:\n          mdadm_data: \"{{ mdadm_remove_disk.removed }}\"\n          parted_info: \"{{ parted_info | default() }}\"\n    when:\n      - mdadm_remove_disk | changed\n      - mdadm_remove_disk.removed\n<\/code><\/pre>\n<p>\nKjo detyr\u00eb e kalon tiket\u00ebn Jira n\u00eb statusin 'Ready to change' dhe shton nj\u00eb koment. Po ashtu n\u00eb variablen mdam_data ruhet lista e pajisjeve md nga t\u00eb cilat \u00ebsht\u00eb hequr disku, nd\u00ebrsa n\u00eb parted_info \u2013 dump-i i particionit nga parted. <\/p>\n<p>Kur inxhinieri t\u00eb vendos\u00eb nj\u00eb disk t\u00eb ri, ne do t\u00eb mund ta p\u00ebrdorim k\u00ebto variabla p\u00ebr t\u00eb rikthyer dump-in e particioneve, si dhe p\u00ebr ta regjistruar diskun n\u00eb ato pajisje md nga t\u00eb cilat \u00ebsht\u00eb hequr.<\/p>\n<h3>Reagimi i Ansible<\/h3>\n<p>\nIshte friksh\u00ebm t\u00eb aktivizohej automatizimi. Prandaj, ne vendos\u00ebm t\u00eb ekzekutonim t\u00eb gjitha playbook-et n\u00eb mod. <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_checkmode.html\">dry run<\/a><\/noindex>, n\u00eb t\u00eb cilin Ansible nuk b\u00ebn asnj\u00eb veprim n\u00eb servera, por vet\u00ebm i imiton ato. <\/p>\n<p>Nj\u00eb nisje e till\u00eb kalon p\u00ebrmes nj\u00eb moduli t\u00eb ve\u00e7ant\u00eb callback, dhe rezultati i ekzekutimit t\u00eb playbook-it ruhet n\u00eb Jira si nj\u00eb koment.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/b02d7f1dc428f2797ae8556cd496b115.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00eb pari, kjo e mund\u00ebsoi t\u00eb validonim pun\u00ebn e bot-it dhe t\u00eb playbook-eve. S\u00eb dyti, rriti besimin e administrator\u00ebve ndaj bot-it. <\/p>\n<p>Kur kaluam validimin dhe kuptuam se mund t\u00eb nisim Ansible jo vet\u00ebm n\u00eb modalitetin dry run, krijuam n\u00eb Jira nj\u00eb buton Run Diskobot p\u00ebr t\u00eb nisur t\u00eb nj\u00ebjtin playbook me t\u00eb nj\u00ebjtat variabla n\u00eb t\u00eb nj\u00ebjtin host, por n\u00eb modalitetin normal. <\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, butoni p\u00ebrdoret p\u00ebr t\u00eb rip\u00ebrs\u00ebritur nisjen e playbook-it n\u00eb rast t\u00eb d\u00ebshtimit t\u00eb tij.<\/p>\n<h3>Struktura e Playbook-eve<\/h3>\n<p>\nKisha p\u00ebrmendur tashm\u00eb se n\u00eb var\u00ebsi t\u00eb statusit t\u00eb tiket\u00ebs n\u00eb Jira, boti nis playbook-e t\u00eb ndryshme.<\/p>\n<p>S\u00eb pari, k\u00ebshtu \u00ebsht\u00eb shum\u00eb m\u00eb e leht\u00eb t\u00eb organizohet hyrja. <br \/>\nS\u00eb dyti, n\u00eb disa raste, kjo \u00ebsht\u00eb thjesht e nevojshme. <\/p>\n<p>P\u00ebr shembull, kur z\u00ebvend\u00ebsoni diskun e sistemit, s\u00eb pari duhet t\u00eb shkoni te sistemi i implementimit, t\u00eb krijoni nj\u00eb detyr\u00eb dhe pas implementimit t\u00eb suksessh\u00ebm, serveri do t\u00eb b\u00ebhet i aksesuesh\u00ebm p\u00ebrmes ssh, dhe mund t\u00eb instaloni aplikacionin atje. Po t\u00eb b\u00ebnim t\u00eb gjitha k\u00ebto n\u00eb nj\u00eb playbook, Ansible nuk do t\u00eb ishte n\u00eb gjendje ta ekzekutonte p\u00ebr shkak t\u00eb pap\u00ebrshtatshm\u00ebris\u00eb s\u00eb hostit.<\/p>\n<p>Ne p\u00ebrdorim role Ansible p\u00ebr \u00e7do grup serverash. K\u00ebtu tregohet si jan\u00eb organizuar playbook-et n\u00eb nj\u00eb nga to. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/7a14035392b33f01d3182d5fff779321.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKjo \u00ebsht\u00eb e p\u00ebrshtatshme, sepse menj\u00ebher\u00eb shihet ku jan\u00eb t\u00eb vendosura detyrat. N\u00eb main.yml, i cili \u00ebsht\u00eb hyrja p\u00ebr rolin Ansible, mund t\u00eb kemi thjesht p\u00ebrfshirje sipas statusit t\u00eb bilet\u00ebs ose detyrat e p\u00ebrgjithshme q\u00eb jan\u00eb t\u00eb nevojshme p\u00ebr t\u00eb gjith\u00eb, si identifikimi ose marrja e nj\u00eb tokeni.<\/p>\n<h4>Investigation.yml<\/h4>\n<p>\nNiset p\u00ebr biletat n\u00eb statusin Investigation dhe Open. E r\u00ebnd\u00ebsishmja p\u00ebr k\u00ebt\u00eb playbook \u00ebsht\u00eb emri i pajisjes bllokuese. Kjo informacion nuk \u00ebsht\u00eb gjithmon\u00eb e disponueshme. <\/p>\n<p>P\u00ebr ta marr\u00eb at\u00eb, analizojm\u00eb p\u00ebrmbledhjet e Jira-s dhe vler\u00ebn e fundit nga Zabbix-trigger. Aty mund t\u00eb ket\u00eb emrin e nj\u00eb pajisjeje bllokuese \u2014 me fat. Ose mund t\u00eb ket\u00eb nj\u00eb pik\u00eb bashk\u00ebngjitjeje, \u2014 at\u00ebher\u00eb duhet t\u00eb shkojm\u00eb n\u00eb server, t\u00eb analizojm\u00eb dhe t\u00eb llogarisim diskun e duhur. Gjithashtu, triggeri mund t\u00eb transmetoj\u00eb adres\u00ebn scsi ose ndonj\u00eb informacion tjet\u00ebr. Por ndonj\u00ebher\u00eb nuk ka asnj\u00eb gjurm\u00eb, dhe duhet t\u00eb b\u00ebjm\u00eb analiza.<\/p>\n<p>Pasi t\u00eb kemi zbuluar emrin e pajisjes bllokuese, mbledhim informacion rreth llojit dhe madh\u00ebsis\u00eb s\u00eb diskut p\u00ebr t\u00eb plot\u00ebsuar fushat n\u00eb Jira. Po ashtu, ne marrim informacion mbi prodhuesin, modelin, firmware, ID-n\u00eb, SMART, dhe gjith\u00eb k\u00ebt\u00eb e fusim n\u00eb komentin n\u00eb Jira-ticket. Administratorit dhe inxhinierit tani nuk u nevojitet t\u00eb k\u00ebrkojn\u00eb k\u00ebto t\u00eb dh\u00ebna. \ud83d\ude42<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/259bf8712c013ee00d238f111b4280fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>prepare2change.yml<\/h4>\n<p>\nNxjerrja e diskut nga rotacioni, p\u00ebrgatitja p\u00ebr z\u00ebvend\u00ebsim. \u00cbsht\u00eb faza m\u00eb e v\u00ebshtir\u00eb dhe m\u00eb e r\u00ebnd\u00ebsishme. K\u00ebtu mund t\u00eb ndaloni aplikacionin, kur nuk mund t\u00eb ndalet. Ose t\u00eb nxirrni diskun q\u00eb kishte munges\u00eb replikash, duke ndikuar k\u00ebshtu tek p\u00ebrdoruesit, duke humbur ndonj\u00eb t\u00eb dh\u00ebn\u00eb. K\u00ebtu kemi m\u00eb shum\u00eb verifikime dhe njoftime n\u00eb chat.<\/p>\n<p>N\u00eb rastin m\u00eb t\u00eb thjesht\u00eb, flitet p\u00ebr heqjen e diskut nga HW\/MD RAID. <\/p>\n<p>N\u00eb situata m\u00eb t\u00eb komplikuara (n\u00eb sistemet tona t\u00eb ruajtjes), kur rezervimi kryhet n\u00eb nivelin e aplikacionit, duhet t\u00eb hyjm\u00eb n\u00eb aplikacion p\u00ebrmes API-s\u00eb, t\u00eb raportojm\u00eb p\u00ebr daljen e diskut, ta deaktivizojm\u00eb dhe t\u00eb fillojm\u00eb rikuperimin.<\/p>\n<p>Ne tani po migrojm\u00eb masivisht n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/odnoklassniki\/blog\/346868\">re<\/a><\/noindex>, dhe n\u00ebse serveri \u00ebsht\u00eb n\u00eb cloud, at\u00ebher\u00eb Diskobot i drejtohet API-s\u00eb s\u00eb cloud-it, i thot\u00eb se do t\u00eb punoj\u00eb me k\u00ebt\u00eb mini- server, ku jan\u00eb t\u00eb hapura kontejner\u00ebt, dhe k\u00ebrkon \"migro gjith\u00eb kontejner\u00ebt nga ky mini-server\". Nj\u00ebher\u00ebsh aktivizon ndri\u00e7imin e diskut, n\u00eb m\u00ebnyr\u00eb q\u00eb inxhinieri t\u00eb shoh\u00eb menj\u00ebher\u00eb se cili duhet t\u00eb zgjidhet.<\/p>\n<h4>changed.yml<\/h4>\n<p>\nPas z\u00ebvend\u00ebsimit t\u00eb diskut, n\u00eb radh\u00eb t\u00eb par\u00eb kontrollojm\u00eb q\u00eb t\u00eb jet\u00eb i qassh\u00ebm. <\/p>\n<p>Inxhinier\u00ebt nuk i vendosin gjithmon\u00eb disk\u00ebt e rinj, prandaj ne shtuam nj\u00eb kontroll t\u00eb vlerave SMART q\u00eb na p\u00ebrmbushin.<\/p>\n<p><b class=\"spoiler_title\">Cilat atribute shikojm\u00eb<\/b>Reallocated Sectors Count (5) &lt; 100<br \/>\nCurrent Pending Sector Count (107) == 0<\/p>\n<p>N\u00ebse disku nuk kalon kontrollin, inxhinierit i njoftohet p\u00ebr nj\u00eb z\u00ebvend\u00ebsim t\u00eb dyt\u00eb. N\u00ebse gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull, ndri\u00e7imi fiket, shenjat vendosen dhe disku futet n\u00eb rotacion.<\/p>\n<h4>ready.yml<\/h4>\n<p>\nRasti m\u00eb i thjesht\u00eb: kontrollimi i sinkronizimit HW\/SW raid ose p\u00ebrfundimi i sinkronizimit t\u00eb t\u00eb dh\u00ebnave n\u00eb aplikacion.<\/p>\n<h3>API aplikacionesh<\/h3>\n<p>\nKam p\u00ebrmendur disa her\u00eb se boti shpesh i qaset API-ve t\u00eb aplikacioneve. Sigurisht, nuk e kan\u00eb t\u00eb gjitha aplikacionet metodat e k\u00ebrkuara, k\u00ebshtu q\u00eb duhej t\u00eb punonim p\u00ebr to. K\u00ebtu jan\u00eb metodat m\u00eb t\u00eb r\u00ebnd\u00ebsishme q\u00eb p\u00ebrdorim:<\/p>\n<ul>\n<li>Statusi. Statusi i klasit ose diskut, p\u00ebr t\u00eb kuptuar n\u00ebse mund t\u00eb punojm\u00eb me t\u00eb;\n<\/li>\n<li>Nis\/ndal. Aktivizimi-deaktivizimi i diskut;\n<\/li>\n<li>Migroj\/rikthe. Migrimi dhe rikthimi i t\u00eb dh\u00ebnave gjat\u00eb dhe pas z\u00ebvend\u00ebsimit.\n<\/li>\n<\/ul>\n<p><\/p>\n<h3>Eksperienc\u00eb e nxjerr\u00eb nga Ansible<\/h3>\n<p>\nE dua shum\u00eb Ansible. Por shpesh, kur shoh projekte t\u00eb ndryshme opensource dhe shoh si njer\u00ebzit shkruajn\u00eb playbook-e, m\u00eb b\u00ebn pak frik\u00eb. Nd\u00ebrthurje t\u00eb komplikuara logjike nga when\/loop, munges\u00eb fleksibiliteti dhe idempotence p\u00ebr shkak t\u00eb p\u00ebrdorimit t\u00eb shpesht\u00eb t\u00eb shell\/command.<\/p>\n<p>Ne vendos\u00ebm ta thjeshtojm\u00eb sa m\u00eb shum\u00eb, duke shfryt\u00ebzuar p\u00ebrpar\u00ebsit\u00eb e Ansible \u2014 modularitetin. N\u00eb nivelin m\u00eb t\u00eb lart\u00eb jan\u00eb playbook-et, t\u00eb cilat mund t'i shkruaj\u00eb \u00e7do administrator, zhvillues i jasht\u00ebm q\u00eb di pak p\u00ebr Ansible.<\/p>\n<pre><code class=\"plaintext\">- name: Blink disk\n  become: True\n  register: locate_action\n  disk_locate:\n      locate: '{{ locate }}'\n      devname: '{{ devname }}'\n      ids: '{{ locate_ids | default(pd_id) | default(omit) }}'\n<\/code><\/pre>\n<p>N\u00ebse ndonj\u00eb logjik\u00eb \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb implementohet n\u00eb playbook-a, ne e transferojm\u00eb at\u00eb n\u00eb nj\u00eb modul ose filtrin Ansible. Skriptet mund t\u00eb shkruhen si n\u00eb Python, ashtu edhe n\u00eb ndonj\u00eb gjuh\u00eb tjet\u00ebr. <\/p>\n<p>Ata jan\u00eb t\u00eb leht\u00eb dhe t\u00eb shpejt\u00eb p\u00ebr t'u shkruar. P\u00ebr shembull, moduli i ndri\u00e7imit t\u00eb diskut, nj\u00eb shembull p\u00ebrdorimi i t\u00eb cilit \u00ebsht\u00eb paraqitur m\u00eb sip\u00ebr, p\u00ebrb\u00ebhet nga 265 rreshta.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/08e0384bfad24f3ee61e0643ca087852.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb nivelin m\u00eb t\u00eb ul\u00ebt ndodhet biblioteka. P\u00ebr k\u00ebt\u00eb projekt ne shkruam nj\u00eb aplikacion t\u00eb ve\u00e7ant\u00eb, nj\u00eb lloj abstraksioni mbi RAID-in harduerik dhe softuerik, i cili realizon k\u00ebrkesat p\u00ebrkat\u00ebse. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible\" src=\"\/wp-content\/uploads\/2019\/06\/0edda3182026ce6279bd84c99613e3d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPikat m\u00eb t\u00eb forta t\u00eb Ansible jan\u00eb thjesht\u00ebsia dhe playbook-at e kuptuesh\u00ebm. Un\u00eb mendoj se duhet t\u00eb p\u00ebrfitoni prej tyre dhe t\u00eb mos gjeneroni skedar\u00eb yaml t\u00eb tmerrsh\u00ebm me nj\u00eb sasi t\u00eb madhe kushtesh, kodi shell dhe ciklesh.<\/p>\n<p>N\u00ebse d\u00ebshironi t\u00eb p\u00ebrs\u00ebrisni p\u00ebrvoj\u00ebn ton\u00eb me Ansible API, mbani parasysh dy gj\u00ebra:<\/p>\n<ul>\n<li>Playbook_executor dhe n\u00eb p\u00ebrgjith\u00ebsi playbook-ut nuk mund t'i kaloni nj\u00eb timeout. Ekziston nj\u00eb timeout n\u00eb sesionet ssh, por nuk ka timeout p\u00ebr playbook. N\u00ebse p\u00ebrpiqemi t\u00eb \u00e7montojm\u00eb nj\u00eb disk q\u00eb nuk ekziston m\u00eb n\u00eb sistem, playbook do t\u00eb ekzekutohet pafund\u00ebsisht, prandaj kemi dashur ta mb\u00ebshtjellim ekzekutimin e tij n\u00eb nj\u00eb wrapper t\u00eb ve\u00e7ant\u00eb dhe ta ndalojm\u00eb sipas timeout-it.\n<\/li>\n<li>Ansible funksionon mbi baz\u00ebn e proceseve fork, prandaj API i tij nuk \u00ebsht\u00eb i sigurt p\u00ebr p\u00ebrdorim n\u00eb m\u00ebnyr\u00eb t\u00eb shum\u00ebfisht\u00eb. Ne i ekzekutojm\u00eb t\u00eb gjitha playbook-t tona nj\u00ebkoh\u00ebsisht.\n<\/li>\n<\/ul>\n<p>\nN\u00eb fund arrit\u00ebm t\u00eb automatizojm\u00eb z\u00ebvend\u00ebsimin e rreth 80% t\u00eb disqeve. N\u00eb p\u00ebrgjith\u00ebsi, shpejt\u00ebsia e z\u00ebvend\u00ebsimit u rrit me dy her\u00eb. Sot administrator\u00ebt thjesht shikojn\u00eb incidentin dhe vendosin n\u00ebse duhet t\u00eb z\u00ebvend\u00ebsojn\u00eb diskun apo jo, dhe m\u00eb pas b\u00ebjn\u00eb nj\u00eb klik.<\/p>\n<p>Por tani po fillojm\u00eb t\u00eb p\u00ebrballim me nj\u00eb problem tjet\u00ebr: disa administrator\u00eb t\u00eb rinj nuk din\u00eb si t\u00eb z\u00ebvend\u00ebsojn\u00eb disk\u00ebt. \ud83d\ude42<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/odnoklassniki\/blog\/452110\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0432 \u041e\u041a \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e \u0437\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e\u0440\u0442\u0430\u043b\u0430. \u0425\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u0434\u0438\u0441\u043a\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u0442\u043e\u043c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 HighLoad+ 2018 \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e \u0437\u0430\u043c\u0435\u043d\u0435 \u0434\u0438\u0441\u043a\u043e\u0432 \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26233,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34841","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0432 \u041e\u041a \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e \u0437\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e\u0440\u0442\u0430\u043b\u0430. \u0425\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u0434\u0438\u0441\u043a\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u0442\u043e\u043c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 HighLoad+ 2018 \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e \u0437\u0430\u043c\u0435\u043d\u0435 \u0434\u0438\u0441\u043a\u043e\u0432 \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u0434\u0438\u0441\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ansible | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0432 \u041e\u041a \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e \u0437\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e\u0440\u0442\u0430\u043b\u0430. \u0425\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u0434\u0438\u0441\u043a\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u0442\u043e\u043c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 HighLoad+ 2018 \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e \u0437\u0430\u043c\u0435\u043d\u0435 \u0434\u0438\u0441\u043a\u043e\u0432 \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:43+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Automatizimi i z\u00ebvend\u00ebsimit t\u00eb disqeve me Ansible | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve. Un\u00eb jam nj\u00eb administrator sistemesh kryesor n\u00eb OK dhe jam p\u00ebrgjegj\u00ebs p\u00ebr funksionimin e q\u00ebndruesh\u00ebm t\u00eb portalit. D\u00ebshiroj t\u00eb flas p\u00ebr m\u00ebnyr\u00ebn se si e organizuam procesin e z\u00ebvend\u00ebsimit automatik t\u00eb disqeve dhe si e p\u00ebrjashtuam administratorin nga ky proces dhe e z\u00ebvend\u00ebsuam at\u00eb me nj\u00eb bot. Ky artikull \u00ebsht\u00eb nj\u00eb lloj transliterimi i nj\u00eb fjalimi n\u00eb HighLoad+ 2018 Nd\u00ebrtimi i procesit p\u00ebr z\u00ebvend\u00ebsimin e disqeve s\u00eb pari pak.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u0434\u0438\u0441\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ansible | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0432 \u041e\u041a \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e \u0437\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e\u0440\u0442\u0430\u043b\u0430. \u0425\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u0434\u0438\u0441\u043a\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u0442\u043e\u043c. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 HighLoad+ 2018 \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e \u0437\u0430\u043c\u0435\u043d\u0435 \u0434\u0438\u0441\u043a\u043e\u0432 \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:43+00:00","article:modified_time":"2019-10-31T19:00:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34841","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:05","updated":"2026-01-21 20:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=34841"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34841\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/26233"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=34841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=34841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=34841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}