{"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\/hu\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible","title":{"rendered":"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/c60a2326ab13e7766eafda3ae5ac39c5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHell\u00f3 mindenkinek. Vezet\u0151 rendszergazdak\u00e9nt dolgozom az OK-n\u00e1l, \u00e9s \u00e9n vagyok felel\u0151s a port\u00e1l stabil m\u0171k\u00f6d\u00e9s\u00e9\u00e9rt. Szeretn\u00e9m elmondani, hogyan \u00e9p\u00edtett\u00fck ki a lemezek automatikus cser\u00e9j\u00e9nek folyamat\u00e1t, majd hogyan z\u00e1rtuk ki ebb\u0151l a folyamatb\u00f3l az adminisztr\u00e1tort, \u00e9s cser\u00e9lt\u00fck le egy bottal.<\/p>\n<p>Ez a cikk egyfajta transliter\u00e1ci\u00f3. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=5WhbG3FQveE&amp;list=FLKN7KW1sxju7fWJvKuyKxEQ\">besz\u00e9d sor\u00e1n<\/a><\/noindex> a HighLoad+ 2018-on.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Lemezcser\u00e9l\u00e9si folyamat ki\u00e9p\u00edt\u00e9se.<\/h2>\n<p><\/p>\n<h3>El\u0151sz\u00f6r is n\u00e9h\u00e1ny sz\u00e1m.<\/h3>\n<p>\nAz OK egy hatalmas szolg\u00e1ltat\u00e1s, amelyet milli\u00f3k haszn\u00e1lnak. K\u00f6r\u00fclbel\u00fcl 7 ezer szerver szolg\u00e1lja ki, amelyek 4 k\u00fcl\u00f6nb\u00f6z\u0151 adatk\u00f6zpontban tal\u00e1lhat\u00f3k. A szerverekben t\u00f6bb mint 70 ezer lemez tal\u00e1lhat\u00f3. Ha egym\u00e1sra helyezz\u00fck \u0151ket, akkor egy t\u00f6bb mint 1 km magas torony j\u00f6nne l\u00e9tre. <\/p>\n<p>A merevlemezek a szerver egyik leggyakrabban meghib\u00e1sod\u00f3 alkatr\u00e9szei. Ezekben a mennyis\u00e9gekben k\u00f6r\u00fclbel\u00fcl 30 lemezt kell cser\u00e9ln\u00fcnk hetente, \u00e9s ez a folyamat nem v\u00e1lik \u00e9ppen kellemes rutinn\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/5e915e9077994efcc4e74a26fc6286fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Incidensek<\/h3>\n<p>\nC\u00e9g\u00fcnkn\u00e9l teljes k\u00f6r\u0171 incidensmenedzsment van bevezetve. Minden incidens\u00fcnket r\u00f6gz\u00edtj\u00fck a Jir\u00e1ban, majd megoldjuk \u00e9s \u00e1tbesz\u00e9lj\u00fck. Ha az incidens hat\u00e1ssal volt a felhaszn\u00e1l\u00f3kra, akkor felt\u00e9tlen\u00fcl \u00f6ssze\u00fcl\u00fcnk \u00e9s azon gondolkodunk, hogyan lehet gyorsabban reag\u00e1lni az ilyen esetekben, hogyan cs\u00f6kkenthet\u0151 a hat\u00e1s, \u00e9s term\u00e9szetesen hogyan lehetne megakad\u00e1lyozni a megism\u00e9tl\u0151d\u00e9s\u00e9t.<\/p>\n<p>A t\u00e1rol\u00f3k sem kiv\u00e9telek. \u00c1llapotukra a Zabbix figyel. Figyelj\u00fck a Syslog \u00fczeneteket \u00edr\u00e1si\/olvas\u00e1si hib\u00e1k miatt, elemezz\u00fck a HW\/SW RAID-ek \u00e1llapot\u00e1t, nyomon k\u00f6vetj\u00fck a SMART-jelent\u00e9seket, SSD eset\u00e9n sz\u00e1moljuk a kop\u00e1st. <\/p>\n<h3>Hogyan zajlott a lemezek cser\u00e9je kor\u00e1bban.<\/h3>\n<p>\nAmikor a Zabbixban valamelyik trigger vil\u00e1g\u00edtani kezd, a Jir\u00e1ban egy incidens j\u00f6n l\u00e9tre, \u00e9s automatikusan hozz\u00e1rendel\u0151dik a megfelel\u0151 m\u00e9rn\u00f6k\u00f6kh\u00f6z az adatk\u00f6zpontokban. Ezt minden HW-incidens eset\u00e9n megteszik, azaz azok eset\u00e9ben, amelyek fizikai munk\u00e1t ig\u00e9nyelnek a hardverrel az adatk\u00f6zpontban. <br \/>\nAz adatk\u00f6zpont m\u00e9rn\u00f6ke az a szem\u00e9ly, aki a hardverrel kapcsolatos probl\u00e9m\u00e1kat megoldja, felel\u0151s a szerverek telep\u00edt\u00e9s\u00e9\u00e9rt, karbantart\u00e1s\u00e1\u00e9rt \u00e9s leszerel\u00e9s\u00e9\u00e9rt. Ha megkap egy jegyet, a m\u00e9rn\u00f6k elkezdi a munk\u00e1t. A lemezt\u00e1rakban \u00f6n\u00e1ll\u00f3an cser\u00e9li a lemezeket. De ha nincs hozz\u00e1f\u00e9r\u00e9se a megfelel\u0151 eszk\u00f6zh\u00f6z, a m\u00e9rn\u00f6k a \u00fcgyeletes rendszergazd\u00e1t\u00f3l k\u00e9r seg\u00edts\u00e9get. El\u0151sz\u00f6r ki kell venni a lemezt a rot\u00e1ci\u00f3b\u00f3l. Ehhez sz\u00fcks\u00e9ges v\u00e1ltoztat\u00e1sokat kell v\u00e9gezni a szerveren, le\u00e1ll\u00edtani az alkalmaz\u00e1sokat, \u00e9s lev\u00e1lasztani a lemezt.<\/p>\n<p>A fel\u00fcgyeleti rendszeradminisztr\u00e1tor a munkanap sor\u00e1n felel\u0151s az eg\u00e9sz port\u00e1l m\u0171k\u00f6d\u00e9s\u00e9\u00e9rt. Vizsg\u00e1lja az esem\u00e9nyeket, jav\u00edtja a probl\u00e9m\u00e1kat, seg\u00edt a fejleszt\u0151knek kisebb feladatokat ell\u00e1tni. Csak a merevlemezekkel nem foglalkozik.<\/p>\n<p>Kor\u00e1bban a datak\u00f6zpont m\u00e9rn\u00f6kei cseveg\u00e9sen kereszt\u00fcl kommunik\u00e1ltak a rendszeradminisztr\u00e1torral. A m\u00e9rn\u00f6k\u00f6k linkeket k\u00fcldtek a Jira-jegyekhez, az adminisztr\u00e1tor v\u00e9gigment rajtuk, \u00e9s valamilyen jegyzetf\u00fczetbe vezette a munk\u00e1t. De az ilyen feladatokhoz a cseveg\u00e9sek k\u00e9nyelmetlenek: az inform\u00e1ci\u00f3 ott nem struktur\u00e1lt \u00e9s gyorsan elveszik. R\u00e1ad\u00e1sul az adminisztr\u00e1tor ak\u00e1r el is t\u00e1volodhatott a sz\u00e1m\u00edt\u00f3g\u00e9pt\u0151l, \u00e9s egy id\u0151re nem v\u00e1laszolt a megkeres\u00e9sekre, m\u00edg a m\u00e9rn\u00f6k ott \u00e1llt a szerver mellett egy halom lemezzel \u00e9s v\u00e1rakozott.<\/p>\n<p>De a legrosszabb az volt, hogy az adminisztr\u00e1torok nem l\u00e1tt\u00e1k az eg\u00e9sz k\u00e9pet: milyen lemezes incidensek l\u00e9teznek, hol mer\u00fclhet fel potenci\u00e1lis probl\u00e9ma. Ez azzal \u00e1ll \u00f6sszef\u00fcgg\u00e9sben, hogy az \u00f6sszes hardveresi incidenshez a m\u00e9rn\u00f6k\u00f6ket adjuk. Igen, meg lehetett volna jelen\u00edteni az \u00f6sszes incidenst az adminisztr\u00e1tor ir\u00e1ny\u00edt\u00f3pultj\u00e1n. De nagyon sokan vannak, \u00e9s az adminisztr\u00e1tor csak n\u00e9h\u00e1ny esetben von\u00f3dott be.<\/p>\n<p>Ezen k\u00edv\u00fcl a m\u00e9rn\u00f6k nem tudta helyesen rangsorolni a priorit\u00e1sokat, mert semmit sem tudott a konkr\u00e9t szerverek rendeltet\u00e9s\u00e9r\u0151l, az inform\u00e1ci\u00f3k t\u00e1rol\u00f3kra val\u00f3 eloszt\u00e1s\u00e1r\u00f3l.<\/p>\n<h3>\u00daj csereelj\u00e1r\u00e1s<\/h3>\n<p>\nEls\u0151 l\u00e9p\u00e9sk\u00e9nt minden lemezes esem\u00e9nyt k\u00fcl\u00f6n \u00abHW-lemez\u00bb t\u00edpusra helyezt\u00fcnk, \u00e9s hozz\u00e1adtuk a \u00abblokkeszk\u00f6z neve\u00bb, \u00abm\u00e9ret\u00bb \u00e9s \u00ablemezt\u00edpus\u00bb mez\u0151ket, hogy ez az inform\u00e1ci\u00f3 megmaradjon a jegyben, \u00e9s ne kelljen \u00e1lland\u00f3an cseveg\u00e9sen cser\u00e9lni. <\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/c4526bf668e31d90e0fbd061de44f1a7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEzen k\u00edv\u00fcl meg\u00e1llapodtunk abban, hogy egy incidens keretein bel\u00fcl csak egy lemezt cser\u00e9l\u00fcnk. Ez jelent\u0151sen leegyszer\u0171s\u00edtette a k\u00e9s\u0151bbiekben az automatiz\u00e1l\u00e1s folyamat\u00e1t, a statisztika gy\u0171jt\u00e9s\u00e9t \u00e9s a munk\u00e1t. <\/p>\n<p>Tov\u00e1bb\u00e1 hozz\u00e1adtunk egy \u00abfelel\u0151s adminisztr\u00e1tor\u00bb mez\u0151t is. Ide automatikusan beker\u00fcl a \u00fcgyeletes rendszergazda. Ez nagyon k\u00e9nyelmes, mert most a m\u00e9rn\u00f6k mindig l\u00e1tja, ki a felel\u0151s. Nem kell a napt\u00e1rba n\u00e9zni \u00e9s keresg\u00e9lni. Ennek a mez\u0151nek k\u00f6sz\u00f6nhet\u0151en tudtuk megjelen\u00edteni az adminisztr\u00e1tor ir\u00e1ny\u00edt\u00f3pultj\u00e1n azokat a jegyeket, amelyek esetleg seg\u00edts\u00e9g\u00e9t ig\u00e9nylik.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/5097e5dcca1fddd68d1e5f296c09f60a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAnnak \u00e9rdek\u00e9ben, hogy minden r\u00e9sztvev\u0151 maxim\u00e1lisan profit\u00e1ljon az \u00faj\u00edt\u00e1sokb\u00f3l, l\u00e9trehoztunk sz\u0171r\u0151ket \u00e9s ir\u00e1ny\u00edt\u00f3pultokat, \u00e9s t\u00e1j\u00e9koztattuk r\u00f3luk a csapatot. Amikor az emberek \u00e9rtik a v\u00e1ltoz\u00e1sokat, nem t\u00e1volodnak el t\u0151l\u00fck, mint valami feleslegt\u0151l. A m\u00e9rn\u00f6knek fontos tudnia a rack sz\u00e1m\u00e1t, ahol a szerver tal\u00e1lhat\u00f3, a lemez m\u00e9ret\u00e9t \u00e9s t\u00edpus\u00e1t. Az adminisztr\u00e1tor sz\u00e1m\u00e1ra pedig els\u0151sorban azt kell \u00e9rtenie, hogy milyen szervercsoportokkal van dolga, \u00e9s milyen hat\u00e1sai lehetnek a lemez cser\u00e9j\u00e9nek.<\/p>\n<p>A mez\u0151k megl\u00e9te \u00e9s megjelen\u00edt\u00e9se hasznos, de a chatek haszn\u00e1lat\u00e1nak sz\u00fcks\u00e9gess\u00e9g\u00e9t ez nem sz\u00fcntette meg. Ehhez meg kellett v\u00e1ltoztatnunk a munkafolyamatot. <\/p>\n<p>R\u00e9gen \u00edgy m\u0171k\u00f6d\u00f6tt:<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/2b79cdb7ec88b5ae3d2917ad8b164c6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMa \u00edgy dolgoznak a m\u00e9rn\u00f6k\u00f6k, amikor nincs sz\u00fcks\u00e9g\u00fck az adminisztr\u00e1tor seg\u00edts\u00e9g\u00e9re.<\/p>\n<p>Az els\u0151 l\u00e9p\u00e9s, amit megtett\u00fcnk, az \u00faj st\u00e1tusz bevezet\u00e9se volt: <b>Investigate<\/b>. Ebben a st\u00e1tuszban van a jegy, amikor a m\u00e9rn\u00f6k m\u00e9g nem d\u00f6nt\u00f6tt arr\u00f3l, hogy sz\u00fcks\u00e9ge van-e az adminisztr\u00e1torra. Ezen a st\u00e1tuszon kereszt\u00fcl a m\u00e9rn\u00f6k \u00e1t tudja adni a jegyet az adminisztr\u00e1tornak. Ezen k\u00edv\u00fcl ezzel a st\u00e1tusszal jel\u00f6lj\u00fck azokat a jegyeket is, amikor lemezcsere sz\u00fcks\u00e9ges, de a lemez m\u00e9g nem \u00e1ll rendelkez\u00e9sre a helysz\u00ednen. Ez el\u0151fordulhat CDN \u00e9s t\u00e1voli telephelyek eset\u00e9n.<\/p>\n<p>Azt is hozz\u00e1adtuk, hogy st\u00e1tusz: <b>K\u00e9sz<\/b>. Ebbe a st\u00e1tuszba ker\u00fcl a jegy a lemez cser\u00e9je ut\u00e1n. Teh\u00e1t minden m\u00e1r el van v\u00e9gezve, de a szerveren a HW\/SW RAID szinkroniz\u00e1l\u00f3dik. Ez eltarthat egy ideig.<\/p>\n<p>Ha az adminisztr\u00e1tort bevonj\u00e1k a munk\u00e1ba, a folyamat egy kicsit bonyolultabb\u00e1 v\u00e1lik.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/5b6aacbb0d4049e62e7cb9ee28eb6498.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA st\u00e1tuszb\u00f3l: <b>Megnyit\u00e1s<\/b> a jegyet \u00e1thelyezheti rendszergazda vagy m\u00e9rn\u00f6k. A st\u00e1tuszban: <b>In progress<\/b> az adminisztr\u00e1tor elt\u00e1vol\u00edtja a lemezt a rot\u00e1ci\u00f3b\u00f3l, hogy a m\u00e9rn\u00f6k egyszer\u0171en ki tudja venni: bekapcsolja a vil\u00e1g\u00edt\u00e1st, lecsatlakoztatja a lemezt, le\u00e1ll\u00edtja az alkalmaz\u00e1sokat, a szervercsoportt\u00f3l f\u00fcgg\u0151en.<\/p>\n<p>Ezut\u00e1n a jegy \u00e1tker\u00fcl a: <b>Ready to change<\/b>: ez jelzi a m\u00e9rn\u00f6knek, hogy a lemez elt\u00e1vol\u00edthat\u00f3. Minden mez\u0151 a Jir\u00e1ban m\u00e1r ki van t\u00f6ltve, a m\u00e9rn\u00f6k tudja, hogy milyen t\u00edpus\u00fa \u00e9s m\u00e9ret\u0171 lemezr\u0151l van sz\u00f3. Ezek az adatok vagy automatikusan, az el\u0151z\u0151 st\u00e1tuszban ker\u00fclnek kit\u00f6lt\u00e9sre, vagy az adminisztr\u00e1tor t\u00f6lti ki \u0151ket.<\/p>\n<p>A lemez cser\u00e9je ut\u00e1n a jegy \u00e1tker\u00fcl a: <b>Changed<\/b>. Ellen\u0151rizz\u00fck, hogy a megfelel\u0151 lemezt helyezt\u00fck-e be, megcsin\u00e1ljuk a feloszt\u00e1st, elind\u00edtjuk az alkalmaz\u00e1st \u00e9s n\u00e9h\u00e1ny feladatot a adat-helyre\u00e1ll\u00edt\u00e1shoz. A jegy \u00e1tker\u00fclhet a st\u00e1tuszba: <b>K\u00e9sz<\/b>, ebben az esetben az adminisztr\u00e1tor marad a felel\u0151s, mert \u0151 hozta be a lemezt a rot\u00e1ci\u00f3ba. A teljes folyamat \u00edgy n\u00e9z ki.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/32f8d488e2ff6a28a3341114b66de0a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAz \u00faj mez\u0151k hozz\u00e1ad\u00e1sa jelent\u0151sen megk\u00f6nny\u00edtette az \u00e9let\u00fcnket. A sr\u00e1cok elkezdtek struktur\u00e1lt inform\u00e1ci\u00f3kkal dolgozni, vil\u00e1goss\u00e1 v\u00e1lt, hogy mit \u00e9s mikor kell csin\u00e1lni. A priorit\u00e1sok sokkal relev\u00e1nsabb\u00e1 v\u00e1ltak, mivel most m\u00e1r az adminisztr\u00e1tor \u00e1ll\u00edtja \u0151ket fel.<\/p>\n<p>Elt\u0171nt a sz\u00fcks\u00e9g a cseveg\u00e9sekre. Term\u00e9szetesen az adminisztr\u00e1tor \u00edrhat az m\u00e9rn\u00f6knek, hogy \u201eitt gyorsan ki kell cser\u00e9lni\u201d, vagy \u201em\u00e1r este van, siker\u00fcl lecser\u00e9lni?\u201d. De m\u00e1r nem kommunik\u00e1lunk ezekr\u0151l a k\u00e9rd\u00e9sekr\u0151l napi szinten a cseveg\u00e9sekben.<\/p>\n<p>A lemezeket csoportosan kezdj\u00fck cser\u00e9lni. Ha az adminisztr\u00e1tor kicsit kor\u00e1bban \u00e9rkezik a munk\u00e1ba, \u00e9s van szabadid\u0151je, \u00e9s m\u00e9g semmi nem t\u00f6rt\u00e9nt, el\u0151k\u00e9sz\u00edthet egy sor szervert a cser\u00e9re: be\u00e1ll\u00edtja a mez\u0151ket, elt\u00e1vol\u00edtja a lemezeket a forg\u00e1sb\u00f3l, \u00e9s \u00e1tadja a feladatot az m\u00e9rn\u00f6knek. Az m\u00e9rn\u00f6k kicsivel k\u00e9s\u0151bb \u00e9rkezik az adatk\u00f6zpontba, l\u00e1tja a feladatot, elviszi a sz\u00fcks\u00e9ges meghajt\u00f3kat a rakt\u00e1rb\u00f3l, \u00e9s azonnal kicser\u00e9li \u0151ket. Ennek eredm\u00e9nyek\u00e9nt a csere sebess\u00e9ge n\u0151tt.<\/p>\n<h3>A Workflow fel\u00e9p\u00edt\u00e9se sor\u00e1n szerzett tapasztalatok<\/h3>\n<p><\/p>\n<ul>\n<li><b>A elj\u00e1r\u00e1s kidolgoz\u00e1sa sor\u00e1n inform\u00e1ci\u00f3t kell gy\u0171jteni k\u00fcl\u00f6nb\u00f6z\u0151 forr\u00e1sokb\u00f3l.<\/b><br \/>\nN\u00e9h\u00e1ny adminisztr\u00e1torunk nem tudta, hogy az m\u00e9rn\u00f6k \u00f6n\u00e1ll\u00f3an cser\u00e9li a lemezeket. N\u00e9h\u00e1nyan azt hitt\u00e9k, hogy az MD RAID szinkroniz\u00e1l\u00e1s\u00e1t az m\u00e9rn\u00f6k\u00f6k figyelnek, pedig k\u00f6z\u00fcl\u00fck n\u00e9h\u00e1nyan nem is rendelkeztek hozz\u00e1f\u00e9r\u00e9ssel. N\u00e9h\u00e1ny vezet\u0151 m\u00e9rn\u00f6k ezt csin\u00e1lta, de nem mindig, mert a folyamat sehol sem volt le\u00edrva.<\/li>\n<li><b>Az elj\u00e1r\u00e1snak egyszer\u0171nek \u00e9s \u00e9rthet\u0151nek kell lennie.<\/b><br \/>\nAz ember nehezen tudja a fej\u00e9ben tartani a sz\u00e1mos l\u00e9p\u00e9st. A legfontosabb szomsz\u00e9dos \u00e1llapotokat a Jir\u00e1ban ki kell emelni a f\u0151 k\u00e9perny\u0151re. \u00c1tnevezhetj\u00fck \u0151ket, p\u00e9ld\u00e1ul a 'Folyamatban' st\u00e1tuszt 'K\u00e9szen a cser\u00e9re' nevezhetj\u00fck. A t\u00f6bbi st\u00e1tuszt el lehet rejteni egy leg\u00f6rd\u00fcl\u0151 men\u00fcben, hogy ne zavarja a szemet. De jobb, ha nem korl\u00e1tozzuk az embereket, hanem lehet\u0151s\u00e9get adunk a v\u00e1lt\u00e1sra.<br \/>\nMagyar\u00e1zd el az \u00faj\u00edt\u00e1sok \u00e9rt\u00e9k\u00e9t. Amikor az emberek meg\u00e9rtik, jobban elfogadj\u00e1k az \u00faj elj\u00e1r\u00e1st. Sz\u00e1munkra nagyon fontos volt, hogy az emberek ne kattintsanak v\u00e9gig a folyamaton, hanem k\u00f6vess\u00e9k azt. K\u00e9s\u0151bb ezt automatiz\u00e1l\u00e1sra \u00e9p\u00edtett\u00fck.<\/li>\n<li><b>V\u00e1rni, elemezni, meg\u00e9rteni.<\/b><br \/>\nK\u00f6r\u00fclbel\u00fcl egy h\u00f3napunkba telt az elj\u00e1r\u00e1s fel\u00e9p\u00edt\u00e9se, a technikai megval\u00f3s\u00edt\u00e1s, a tal\u00e1lkoz\u00f3k \u00e9s a megbesz\u00e9l\u00e9sek. A bevezet\u00e9sre pedig t\u00f6bb mint h\u00e1rom h\u00f3nap volt sz\u00fcks\u00e9g. L\u00e1ttam, ahogy az emberek fokozatosan elkezdik haszn\u00e1lni az \u00faj\u00edt\u00e1st. Az els\u0151 szakaszokban sok negat\u00edv visszajelz\u00e9s \u00e9rkezett. De ez egy\u00e1ltal\u00e1n nem a mag\u00e1nak az elj\u00e1r\u00e1snak, vagy annak technikai megval\u00f3s\u00edt\u00e1s\u00e1nak volt k\u00f6sz\u00f6nhet\u0151. P\u00e9ld\u00e1ul az egyik adminisztr\u00e1tor nem a Jira-t, hanem a Jira plugin-t haszn\u00e1lta a Confluence-ben, \u00e9s \u00edgy bizonyos dolgokhoz nem f\u00e9rhetett hozz\u00e1. Megmutattuk neki a Jira-t, \u00e9s az adminisztr\u00e1tor termel\u00e9kenys\u00e9ge n\u0151tt mind a glob\u00e1lis feladatok, mind a lemezcser\u00e9k tekintet\u00e9ben.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Lemezcsere automatiz\u00e1l\u00e1sa<\/h2>\n<p>\nT\u00f6bbsz\u00f6r nekil\u00e1ttunk a lemezcsere automatiz\u00e1l\u00e1s\u00e1nak. M\u00e1r voltak kor\u00e1bbi munk\u00e1ink, szkriptek, de ezek interakt\u00edv vagy manu\u00e1lis m\u00f3dban m\u0171k\u00f6dtek, \u00e9s ind\u00edt\u00e1st ig\u00e9nyeltek. Csak az \u00faj elj\u00e1r\u00e1s bevezet\u00e9se ut\u00e1n \u00e9rtett\u00fck meg, hogy \u00e9ppen erre volt sz\u00fcks\u00e9g\u00fcnk.<\/p>\n<p>Most, hogy a lemezcsere folyamat\u00e1t szakaszokra bontottuk, minden szakaszhoz kijel\u00f6lt felel\u0151s \u00e9s teend\u0151lista van, fokozatosan tudjuk bevezetni az automatiz\u00e1l\u00e1st, nem pedig egyszerre mindent. P\u00e9ld\u00e1ul a legk\u00f6nnyebb szakasz \u2014 Ready (a RAID\/adatok szinkroniz\u00e1l\u00e1s\u00e1nak ellen\u0151rz\u00e9se) k\u00f6nnyen deleg\u00e1lhat\u00f3 egy botra. Amikor a bot egy kicsit megtanul, adhatunk neki komolyabb feladatot is \u2014 a lemez bevezet\u00e9se a rot\u00e1ci\u00f3ba, stb.<\/p>\n<h3>Setup \u00e1llatkert<\/h3>\n<p>\nMiel\u0151tt besz\u00e9ln\u00e9nk a botr\u00f3l, tegy\u00fcnk egy kis kir\u00e1ndul\u00e1st a mi install\u00e1ci\u00f3s \u00e1llatkert\u00fcnkbe. El\u0151sz\u00f6r is, ez a hatalmas infrastrukt\u00far\u00e1nknak k\u00f6sz\u00f6nhet\u0151. M\u00e1sodszor, minden szolg\u00e1ltat\u00e1shoz megpr\u00f3b\u00e1ljuk az optim\u00e1lis hardverkonfigur\u00e1ci\u00f3t kiv\u00e1lasztani. K\u00f6r\u00fclbel\u00fcl 20 k\u00fcl\u00f6nb\u00f6z\u0151 RAID modell\u00fcnk van, f\u0151k\u00e9nt LSI \u00e9s Adaptec, de HP \u00e9s DELL k\u00fcl\u00f6nb\u00f6z\u0151 verzi\u00f3i is el\u0151fordulnak. Minden RAID-vez\u00e9rl\u0151 saj\u00e1t kezel\u0151programmal rendelkezik. A parancsk\u00e9szlet \u00e9s a kibocs\u00e1t\u00e1s verzi\u00f3r\u00f3l verzi\u00f3ra elt\u00e9rhet minden RAID-vez\u00e9rl\u0151 eset\u00e9ben. Ahol HW-RAID nem haszn\u00e1latos, ott mdraid lehet.<\/p>\n<p>A szinte minden \u00faj install\u00e1ci\u00f3t lemezrezerv\u00e1l\u00e1s n\u00e9lk\u00fcl v\u00e9gz\u00fcnk. Igaz\u00e1b\u00f3l m\u00e1r nem akarunk hardveres \u00e9s szoftveres RAID-et haszn\u00e1lni, mivel a rendszereinket adatk\u00f6zponti szinten, nem pedig szerver szinten rezerv\u00e1ljuk. Term\u00e9szetesen sok \u00f6r\u00f6k\u00f6lt szerver van, amelyeket t\u00e1mogatnunk kell.<\/p>\n<p>A RAID-vez\u00e9rl\u0151kben a lemezek n\u00e9ha nyers eszk\u00f6z\u00f6kk\u00e9nt jelennek meg, m\u00e1s esetekben pedig JBOD-ot haszn\u00e1lnak. Vannak olyan konfigur\u00e1ci\u00f3k, ahol egyetlen rendszerlemez tal\u00e1lhat\u00f3 a szerverben, \u00e9s ha azt ki kell cser\u00e9lni, akkor \u00fajra kell telep\u00edteni a szervert az OS-sel \u00e9s az alkalmaz\u00e1sokkal, r\u00e1ad\u00e1sul azonos verzi\u00f3kkal, majd hozz\u00e1 kell adni a konfigur\u00e1ci\u00f3s f\u00e1jlokat, \u00e9s el kell ind\u00edtani az alkalmaz\u00e1sokat. Sz\u00e1mos szervercsoport l\u00e9tezik, ahol a tartal\u00e9kot nem a lemezes alrendszer szintj\u00e9n, hanem magukban az alkalmaz\u00e1sokban val\u00f3s\u00edtj\u00e1k meg.<\/p>\n<p>\u00d6sszesen t\u00f6bb mint 400 egyedi szervercsoportunk van, amelyeken k\u00f6r\u00fclbel\u00fcl 100 k\u00fcl\u00f6nb\u00f6z\u0151 alkalmaz\u00e1s fut. Az ilyen hatalmas sz\u00e1m\u00fa lehet\u0151s\u00e9g lefed\u00e9s\u00e9hez multifunkcion\u00e1lis automatiz\u00e1l\u00f3 eszk\u00f6zre volt sz\u00fcks\u00e9g\u00fcnk. Lehet\u0151leg egyszer\u0171 DSL-t szeretn\u00e9nk, hogy ne csak az tudja t\u00e1mogatni, aki \u00edrta.<\/p>\n<p>Az Ansible mellett d\u00f6nt\u00f6tt\u00fcnk, mert agentless: nem kellett el\u0151k\u00e9sz\u00edteni az infrastrukt\u00far\u00e1t, gyors a kezdet. R\u00e1ad\u00e1sul Python nyelven \u00edr\u00f3dott, ami a csapatban elfogadott standard.<\/p>\n<h3>\u00c1tfog\u00f3 s\u00e9ma<\/h3>\n<p>\nN\u00e9zz\u00fck meg az automatiz\u00e1l\u00e1s \u00e1ltal\u00e1nos s\u00e9m\u00e1j\u00e1t egy incidenst p\u00e9ldak\u00e9nt. A Zabbix \u00e9szleli, hogy az sdb lemez meghib\u00e1sodott, a trigger bekapcsol, \u00e9s ticket ker\u00fcl l\u00e9trehoz\u00e1sra a Jira-ban. Az adminisztr\u00e1tor megn\u00e9zi, meg\u00e9rti, hogy ez nem duplik\u00e1tum \u00e9s nem false positive, teh\u00e1t a lemezt cser\u00e9lni kell, \u00e9s az ticketet \u00e1tkonvert\u00e1lja In progress \u00e1llapotba.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/673df0fe9600bc65633841222f436d37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA DiskoBot alkalmaz\u00e1s, amely Python nyelven \u00edr\u00f3dott, rendszeresen lek\u00e9rdezi a Jira-t \u00faj ticketek ut\u00e1n. \u00c9szleli, hogy \u00faj, In progress \u00e1llapot\u00fa ticket van, \u00e9s elindul a megfelel\u0151 thread, amely elind\u00edtja az Ansible playbook-ot (ez minden Jira \u00e1llapotn\u00e1l megt\u00f6rt\u00e9nik). Ebben az esetben a Prepare2change ind\u00edt\u00e1sra ker\u00fcl.<\/p>\n<p>Az Ansible a hosztra ker\u00fcl, kib\u0151v\u00edti a lemezt a rot\u00e1ci\u00f3b\u00f3l, \u00e9s jelent\u00e9st k\u00fcld az alkalmaz\u00e1snak Callbacks-on kereszt\u00fcl. <\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/8bfc13129f8deca640eb63ea81f616c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEredm\u00e9nyei alapj\u00e1n a bot automatikusan \u00e1tkonvert\u00e1lja a ticketet Ready to change \u00e1llapotba. A m\u00e9rn\u00f6k \u00e9rtes\u00edt\u00e9st kap, \u00e9s elindul a lemez cser\u00e9j\u00e9re, majd \u00e1tkonvert\u00e1lja a ticketet Changed \u00e1llapotba. <\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/eeda06b6966f435e2172d3f9c61b341e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA fent le\u00edrt s\u00e9m\u00e1nak megfelel\u0151en a ticket visszaker\u00fcl a bothoz, az elind\u00edt egy m\u00e1sik playbook-ot, elmegy a hosztra \u00e9s visszahelyezi a lemezt a rot\u00e1ci\u00f3ba. A bot lez\u00e1rja a ticketet. Hurr\u00e1!<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/51b8c7050b0c10c16ad6a6d4974c3ebf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMost besz\u00e9lj\u00fcnk a rendszer egyes \u00f6sszetev\u0151ir\u0151l.<\/p>\n<h3>Diskobot<\/h3>\n<p>\nEz az alkalmaz\u00e1s Python nyelven \u00edr\u00f3dott. A Jira-b\u00f3l v\u00e1lasztja ki a ticketeket a JQL szerint. A ticket \u00e1llapota alapj\u00e1n az utols\u00f3 egy megfelel\u0151 feldolgoz\u00f3hoz ker\u00fcl, amely elind\u00edtja a kapcsol\u00f3d\u00f3 Ansible playbook-ot az \u00e1llapotnak megfelel\u0151en.<\/p>\n<p>A JQL \u00e9s a lek\u00e9rdez\u00e9si id\u0151k\u00f6z\u00f6k az alkalmaz\u00e1s konfigur\u00e1ci\u00f3s f\u00e1jlj\u00e1ban vannak megadva.<\/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\u00e9ld\u00e1ul az In progress \u00e1llapot\u00fa jegyek k\u00f6z\u00fcl csak azok ker\u00fclnek kiv\u00e1laszt\u00e1sra, amelyekben a Disk size \u00e9s a Device name mez\u0151k ki vannak t\u00f6ltve. A Device name a blokkeszk\u00f6z neve, amely a playbook futtat\u00e1s\u00e1hoz sz\u00fcks\u00e9ges. A Disk size arra sz\u00fcks\u00e9ges, hogy a m\u00e9rn\u00f6k tudja, mekkora m\u00e9ret\u0171 lemezre van sz\u00fcks\u00e9g.<\/p>\n<p>A Ready \u00e1llapot\u00fa jegyekb\u0151l kisz\u0171rik a dbot_ignore c\u00edmk\u00e9vel ell\u00e1tott jegyeket. Megjegyzend\u0151, hogy a Jira c\u00edmk\u00e9ket ilyen t\u00edpus\u00fa sz\u0171r\u00e9sre, valamit a duplik\u00e1lt jegyek megjel\u00f6l\u00e9s\u00e9re \u00e9s statisztik\u00e1k gy\u0171jt\u00e9s\u00e9re haszn\u00e1ljuk.<\/p>\n<p>Playbook hiba eset\u00e9n a Jira a dbot_failed c\u00edmk\u00e9t rendeli hozz\u00e1, hogy k\u00e9s\u0151bb vizsg\u00e1lni lehessen. <\/p>\n<h3>Interakci\u00f3 Ansible-lel<\/h3>\n<p>\nAz alkalmaz\u00e1s az Ansible-lel az al\u00e1bbiakon kereszt\u00fcl l\u00e9p kapcsolatba <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/dev_guide\/developing_api.html\">Ansible Python API<\/a><\/noindex>. A playbook_executor-ben \u00e1tadjuk a f\u00e1jl nev\u00e9t \u00e9s a v\u00e1ltoz\u00f3kat. Ez lehet\u0151v\u00e9 teszi, hogy az Ansible projektet hagyom\u00e1nyos yml f\u00e1jlok form\u00e1j\u00e1ban tartsuk, ahelyett, hogy Python k\u00f3dk\u00e9nt \u00edrn\u00e1nk le. <\/p>\n<p>Tov\u00e1bb\u00e1 az Ansible-ban az *extra_vars* seg\u00edts\u00e9g\u00e9vel \u00e1tadjuk a blokkeszk\u00f6z nev\u00e9t, a jegy st\u00e1tusz\u00e1t, valamint a callback_url-t, amelyben szerepel az issue key \u2013 ezt a HTTP callbackhez haszn\u00e1lj\u00e1k.<\/p>\n<p>Minden ind\u00edt\u00e1skor egy ideiglenes inventory j\u00f6n l\u00e9tre, amely egy hostb\u00f3l \u00e9s egy csoportb\u00f3l \u00e1ll, amelybe ez a host tartozik, hogy alkalmaz\u00f3djanak a group_vars.<\/p>\n<p>\u00cdme egy p\u00e9lda a feladatra, amely a HTTP callbacket val\u00f3s\u00edtja meg.<\/p>\n<p>A playbookok v\u00e9grehajt\u00e1s\u00e1nak eredm\u00e9ny\u00e9t callback(-ek) seg\u00edts\u00e9g\u00e9vel kapjuk meg. K\u00e9t t\u00edpus\u00fa:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/plugins\/callback.html\">Ansible callback plugin<\/a><\/noindex>, biztos\u00edtja a playbook v\u00e9grehajt\u00e1s\u00e1nak eredm\u00e9nyeit. Ott vannak le\u00edrva a feladatok, amelyeket futtattak, sikeresen vagy sikertelen\u00fcl lettek v\u00e9grehajtva. Ez a callback a playbook lej\u00e1tsz\u00e1sa ut\u00e1n ker\u00fcl megh\u00edv\u00e1sra.<\/li>\n<li>HTTP callback az inform\u00e1ci\u00f3k megszerz\u00e9s\u00e9hez a playbook lej\u00e1tsz\u00e1sa alatt. Az Ansible feladatban POST\/GET k\u00e9r\u00e9st k\u00fcld\u00fcnk az alkalmaz\u00e1sunk ir\u00e1ny\u00e1ba.<\/li>\n<\/ul>\n<p>\nA HTTP callback(-ek) seg\u00edts\u00e9g\u00e9vel \u00e1tadjuk azokat a v\u00e1ltoz\u00f3kat, amelyeket a playbook futtat\u00e1sa sor\u00e1n hat\u00e1roztunk meg, \u00e9s amelyeket meg szeretn\u00e9nk \u0151rizni \u00e9s felhaszn\u00e1lni a k\u00e9s\u0151bbi futtat\u00e1sok sor\u00e1n. Ezeket az adatokat sqlite-be \u00edrjuk.<\/p>\n<p>A HTTP callback seg\u00edts\u00e9g\u00e9vel megjegyz\u00e9seket is hagyhatunk \u00e9s megv\u00e1ltoztathatjuk a jegy st\u00e1tusz\u00e1t.<\/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>Mint a hasonl\u00f3 feladatok eset\u00e9n ezt egy k\u00fcl\u00f6n k\u00f6z\u00f6s f\u00e1jlba vitt\u00fck, \u00e9s sz\u00fcks\u00e9g eset\u00e9n belefoglaljuk, hogy ne ism\u00e9telj\u00fck meg folyamatosan a playbook-okban. Itt szerepel a callback_url, amelybe be van \u00e1gyazva a k\u00e9rd\u00e9s kulcs \u00e9s a gazda neve. Amikor az Ansible v\u00e9grehajtja ezt a POST-k\u00e9r\u00e9st, a bot tudja, hogy egy adott incidens keretein bel\u00fcl \u00e9rkezett.<\/p>\n<p>\u00cdme egy p\u00e9lda a playbook-b\u00f3l, amelyben elt\u00e1vol\u00edtottuk a lemezt egy MD-egys\u00e9gb\u0151l:<\/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>\nEz a feladat \u00e1tkonvert\u00e1lja a Jira jegyet a 'K\u00e9szen \u00e1ll a v\u00e1ltoztat\u00e1sra' st\u00e1tuszba, \u00e9s hozz\u00e1told egy megjegyz\u00e9st. Emellett az mdam_data v\u00e1ltoz\u00f3ban a lemezek list\u00e1ja t\u00e1rol\u00f3dik, amelyek az MD-egys\u00e9gekb\u0151l lettek elt\u00e1vol\u00edtva, \u00e9s a parted_info-ban \u2014 A parted-b\u00f3l k\u00e9sz\u00fclt part\u00edci\u00f3s ment\u00e9s. <\/p>\n<p>Amikor a m\u00e9rn\u00f6k behelyez egy \u00faj lemezt, ezeket a v\u00e1ltoz\u00f3kat tudjuk haszn\u00e1lni a part\u00edci\u00f3s ment\u00e9s helyre\u00e1ll\u00edt\u00e1s\u00e1hoz, valamint a lemezt azokba az MD-egys\u00e9gekbe is be tudjuk vinni, ahonnan elt\u00e1vol\u00edtott\u00e1k.<\/p>\n<h3>Ansible ellen\u0151rz\u0151 m\u00f3d<\/h3>\n<p>\nAz automatiz\u00e1l\u00e1s bekapcsol\u00e1sa ijeszt\u0151 volt. Ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy az \u00f6sszes playbook-ot a k\u00f6vetkez\u0151 m\u00f3dban ind\u00edtjuk <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_checkmode.html\">sz\u00e1raz fut\u00e1s<\/a><\/noindex>, amelyben az Ansible nem hajt v\u00e9gre semmilyen m\u0171veletet a szervereken, csak szimul\u00e1lja azokat. <\/p>\n<p>Ez a futtat\u00e1s egy k\u00fcl\u00f6n callback modulon kereszt\u00fcl t\u00f6rt\u00e9nik, az playbook v\u00e9grehajt\u00e1s\u00e1nak eredm\u00e9ny\u00e9t pedig Jira-ban mentj\u00fck el megjegyz\u00e9sk\u00e9nt.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/b02d7f1dc428f2797ae8556cd496b115.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl\u0151sz\u00f6r is lehet\u0151v\u00e9 tette a bot \u00e9s a playbook-ok m\u0171k\u00f6d\u00e9s\u00e9nek \u00e9rv\u00e9nyes\u00edt\u00e9s\u00e9t. M\u00e1sodszor pedig n\u00f6velte az adminisztr\u00e1torok bizalm\u00e1t a bot ir\u00e1nt. <\/p>\n<p>Amikor \u00e1thaladtunk az \u00e9rv\u00e9nyes\u00edt\u00e9sen, \u00e9s meg\u00e9rtett\u00fck, hogy az Ansible-t nemcsak sz\u00e1raz fut\u00e1s m\u00f3dban lehet \u00fczemeltetni, l\u00e9trehoztunk a Jira-ban egy Run Diskobot gombot, amely ugyanazt a playbook-ot ind\u00edtja el ugyanazokkal a v\u00e1ltoz\u00f3kkal ugyanazon a gazd\u00e1n, de norm\u00e1l m\u00f3dban. <\/p>\n<p>Ezen k\u00edv\u00fcl a gombot haszn\u00e1lj\u00e1k a playbook \u00fajb\u00f3li futtat\u00e1s\u00e1ra, ha az elbukik.<\/p>\n<h3>Playbook-ok fel\u00e9p\u00edt\u00e9se<\/h3>\n<p>\nM\u00e1r eml\u00edtettem, hogy a Jira-jegy \u00e1llapot\u00e1t\u00f3l f\u00fcgg\u0151en a bot k\u00fcl\u00f6nb\u00f6z\u0151 playbook-okat ind\u00edt.<\/p>\n<p>El\u0151sz\u00f6r is, \u00edgy sokkal egyszer\u0171bb megszervezni a be\u00e9rkez\u00e9st. <br \/>\nM\u00e1sodszor, bizonyos esetekben ez elengedhetetlen. <\/p>\n<p>P\u00e9ld\u00e1ul, amikor a rendszerlemezt cser\u00e9lj\u00fck, el\u0151sz\u00f6r a telep\u00edt\u00e9si rendszerbe kell menni, feladatot l\u00e9trehozni, \u00e9s miut\u00e1n a szerver megfelel\u0151en telep\u00fclt, el\u00e9rhet\u0151v\u00e9 v\u00e1lik ssh-n kereszt\u00fcl, \u00e9s telep\u00edthetj\u00fck r\u00e1 az alkalmaz\u00e1st. Ha mindezt egy playbook-ban v\u00e9gezn\u00e9nk, az Ansible nem tudn\u00e1 v\u00e9grehajtani, mivel a gazda nem lenne el\u00e9rhet\u0151.<\/p>\n<p>Ansible szerepeket haszn\u00e1lunk minden szervercsoport sz\u00e1m\u00e1ra. Itt l\u00e1that\u00f3, hogyan vannak megszervezve a playbook-ok az egyikben. <\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/7a14035392b33f01d3182d5fff779321.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEz k\u00e9nyelmes, mert azonnal vil\u00e1gos, hogy hol helyezkednek el a k\u00fcl\u00f6nb\u00f6z\u0151 feladatok. A main.yml, amely az Ansible-rol bel\u00e9p\u00e9si pontja, lehet egyszer\u0171 include a jegy st\u00e1tusza szerint vagy \u00e1ltal\u00e1nos feladatok, amelyek mindenki sz\u00e1m\u00e1ra sz\u00fcks\u00e9gesek, p\u00e9ld\u00e1ul az azonos\u00edt\u00e1s lebonyol\u00edt\u00e1sa vagy a token megszerz\u00e9se.<\/p>\n<h4>Investigation.yml<\/h4>\n<p>\nAz Investigation \u00e9s Open st\u00e1tusz\u00fa jegyekhez ind\u00edtjuk. A legfontosabb dolog ennek a playbooknak a n\u00e9v, ami a blokkeszk\u00f6zh\u00f6z tartozik. Ez az inform\u00e1ci\u00f3 nem mindig \u00e9rhet\u0151 el. <\/p>\n<p>Ezt az inform\u00e1ci\u00f3t a Jira \u00f6sszegz\u00e9s\u00e9nek elemz\u00e9s\u00e9vel kapjuk, az utols\u00f3 \u00e9rt\u00e9ket a Zabbix-triggerb\u0151l. Ott lehet a blokkeszk\u00f6z neve \u2013 ha szerencs\u00e9nk van. Vagy lehet benne a mount point, ekkor a szerverhez kell menni, parse-olni \u00e9s kisz\u00e1m\u00edtani a sz\u00fcks\u00e9ges lemezt. A trigger \u00e1tadhat SCSI-c\u00edmet vagy valamilyen m\u00e1s inform\u00e1ci\u00f3t is. De el\u0151fordulhat, hogy semmi nyom nem \u00e1ll rendelkez\u00e9sre, \u00e9s elemezni kell.<\/p>\n<p>Miut\u00e1n kider\u00edtett\u00fck a blokkeszk\u00f6z nev\u00e9t, \u00f6sszegy\u0171jtj\u00fck az inform\u00e1ci\u00f3kat a t\u00edpus\u00e1r\u00f3l \u00e9s m\u00e9ret\u00e9r\u0151l, hogy kit\u00f6lthess\u00fck a mez\u0151ket a Jir\u00e1ban. Inform\u00e1ci\u00f3t gy\u0171jt\u00fcnk a gy\u00e1rt\u00f3r\u00f3l, modellt, firmware-t, ID-t, SMART-ot, \u00e9s ezt mind beillesztj\u00fck a Jira-jegy megjegyz\u00e9s\u00e9be. Az adminisztr\u00e1tornak \u00e9s az m\u00e9rn\u00f6knek most m\u00e1r nem kell keresnie ezeket az adatokat. \ud83d\ude42<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/259bf8712c013ee00d238f111b4280fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>prepare2change.yml<\/h4>\n<p>\nLemez elt\u00e1vol\u00edt\u00e1sa a rot\u00e1ci\u00f3b\u00f3l, felk\u00e9sz\u00fcl\u00e9s a cser\u00e9re. Ez a legnehezebb, legfelel\u0151sebb szakasz. Itt lehet le\u00e1ll\u00edtani az alkalmaz\u00e1st, amikor azt nem szabad meg\u00e1ll\u00edtani. Vagy kih\u00fazni a lemezt, aminek nem volt elegend\u0151 replik\u00e1ja, ezzel hat\u00e1ssal lenni a felhaszn\u00e1l\u00f3kra, elvesz\u00edteni n\u00e9h\u00e1ny adatot. Itt van a legt\u00f6bb ellen\u0151rz\u00e9s \u00e9s \u00e9rtes\u00edt\u00e9s a cseveg\u00e9sben.<\/p>\n<p>A legegyszer\u0171bb esetben a lemez elt\u00e1vol\u00edt\u00e1s\u00e1r\u00f3l besz\u00e9l\u00fcnk HW\/MD RAID-ben. <\/p>\n<p>Bonyolultabb helyzetekben (a t\u00e1rol\u00f3rendszereinkben), amikor az alkalmaz\u00e1s szintj\u00e9n t\u00f6rt\u00e9nik a redund\u00e1l\u00e1s, fel kell l\u00e9pni az API-n kereszt\u00fcl az alkalmaz\u00e1shoz, jelenteni az elt\u00e1vol\u00edt\u00e1st, deaktiv\u00e1lni \u00e9s elind\u00edtani a helyre\u00e1ll\u00edt\u00e1st.<\/p>\n<p>Jelenleg t\u00f6meges migr\u00e1l\u00e1sban vagyunk <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/odnoklassniki\/blog\/346868\">felh\u0151be<\/a><\/noindex>, \u00e9s ha a szerver felh\u0151s, akkor a Diskobot az API-hoz fordul, mondja, hogy dolgozni k\u00e9sz\u00fcl ezzel a minyon-nal \u2013 a szerverrel, amelyen tart\u00e1lyok futnak \u2013 \u00e9s k\u00e9ri, hogy \"migr\u00e1lj minden tart\u00e1lyt err\u0151l a minyonr\u00f3l\". \u00c9s egyben bekapcsolja a lemez kiemel\u00e9s\u00e9t, hogy az m\u00e9rn\u00f6k azonnal l\u00e1ssa, melyiket kell kih\u00fazni.<\/p>\n<h4>changed.yml<\/h4>\n<p>\nA lemez cser\u00e9je ut\u00e1n els\u0151k\u00e9nt ellen\u0151rizz\u00fck a hozz\u00e1f\u00e9rhet\u0151s\u00e9g\u00e9t. <\/p>\n<p>A m\u00e9rn\u00f6k\u00f6k nem mindig helyeznek be \u00faj lemezeket, ez\u00e9rt hozz\u00e1adtuk a sz\u00e1munkra megfelel\u0151 SMART \u00e9rt\u00e9kek ellen\u0151rz\u00e9s\u00e9t.<\/p>\n<p><b class=\"spoiler_title\">Milyen attrib\u00fatumokat figyel\u00fcnk<\/b>\u00c1talloc\u00e1lt szektorok sz\u00e1ma (5) &lt; 100<br \/>\nJelenlegi f\u00fcgg\u0151 szektorok sz\u00e1ma (107) == 0<\/p>\n<p>Ha a lemez nem teljes\u00edti a tesztet, az m\u00e9rn\u00f6k \u00e9rtes\u00edt\u00e9st kap a cser\u00e9r\u0151l. Ha minden rendben van, a vil\u00e1g\u00edt\u00e1s kikapcsol, a jel\u00f6l\u00e9s elv\u00e9gezhet\u0151, \u00e9s a lemez forgat\u00e1sra ker\u00fcl.<\/p>\n<h4>ready.yml<\/h4>\n<p>\nA legegyszer\u0171bb eset: HW\/SW raid szinkroniz\u00e1ci\u00f3j\u00e1nak ellen\u0151rz\u00e9se, vagy az adat szinkroniz\u00e1l\u00e1s\u00e1nak befejez\u00e9se az alkalmaz\u00e1sban.<\/p>\n<h3>Alkalmaz\u00e1s API<\/h3>\n<p>\nT\u00f6bbsz\u00f6r eml\u00edtettem, hogy a bot gyakran h\u00edvja meg az alkalmaz\u00e1s API-t. Term\u00e9szetesen nem minden alkalmaz\u00e1s rendelkezett a sz\u00fcks\u00e9ges met\u00f3dusokkal, ez\u00e9rt ki kellett \u0151ket eg\u00e9sz\u00edteni. \u00cdme a legfontosabb met\u00f3dusok, amelyeket haszn\u00e1lunk:<\/p>\n<ul>\n<li>St\u00e1tusz. A klaszter vagy lemez \u00e1llapota, hogy meghat\u00e1rozzuk, haszn\u00e1lhat\u00f3-e;\n<\/li>\n<li>Kezd\/meg\u00e1ll\u00edt. A lemez aktiv\u00e1l\u00e1sa\/deaktiv\u00e1l\u00e1sa;\n<\/li>\n<li>Migrate\/restore. Az adatok migr\u00e1l\u00e1sa \u00e9s helyre\u00e1ll\u00edt\u00e1sa a csere sor\u00e1n \u00e9s ut\u00e1n.\n<\/li>\n<\/ul>\n<p><\/p>\n<h3>Ansible-val kapcsolatos tapasztalat<\/h3>\n<p>\nNagyon szeretem az Ansible-t. De gyakran, amikor k\u00fcl\u00f6nb\u00f6z\u0151 opensource projekteket n\u00e9zek, \u00e9s l\u00e1tom, hogy az emberek hogyan \u00edrnak playbook-okat, kicsit megijedek. Bonyolult logikai \u00f6sszefon\u00f3d\u00e1sok a when\/loop-ban, rugalmass\u00e1g \u00e9s idempotencia hi\u00e1nya a shell\/command gyakori haszn\u00e1lata miatt.<\/p>\n<p>Elhat\u00e1roztuk, hogy mindent maxim\u00e1lisan leegyszer\u0171s\u00edt\u00fcnk, kihaszn\u00e1lva az Ansible el\u0151ny\u00e9t - a modul\u00e1ris fel\u00e9p\u00edt\u00e9st. A legfels\u0151 szinten tal\u00e1lhat\u00f3k a playbook-ok, amelyeket b\u00e1rmely adminisztr\u00e1tor vagy k\u00fcls\u0151 fejleszt\u0151 \u00edrhata, aki egy kicsit ismeri az Ansible-t.<\/p>\n<pre><code class=\"plaintext\">- name: Villog\u00f3 lemez\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>Ha egy logika nehezen val\u00f3s\u00edthat\u00f3 meg a playbook-okban, az Ansible-modulba vagy sz\u0171r\u0151be vissz\u00fck. A szkriptek \u00edr\u00f3dhatnak Python-ban vagy b\u00e1rmely m\u00e1s nyelven. <\/p>\n<p>K\u00f6nnyen \u00e9s gyorsan \u00edrhat\u00f3k. P\u00e9ld\u00e1ul a lemez megvil\u00e1g\u00edt\u00e1s\u00e1hoz \u00edrt modul, amelynek fenti haszn\u00e1lati p\u00e9ld\u00e1ja van, 265 sorb\u00f3l \u00e1ll.<\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/08e0384bfad24f3ee61e0643ca087852.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA legalacsonyabb szinten tal\u00e1lhat\u00f3 a k\u00f6nyvt\u00e1r. Ehhez a projekthez k\u00fcl\u00f6n alkalmaz\u00e1st \u00edrtunk, egyfajta absztrakci\u00f3t a hardveres \u00e9s szoftveres RAID-ek felett, amelyek v\u00e9grehajtj\u00e1k a megfelel\u0151 lek\u00e9rdez\u00e9seket. <\/p>\n<p><img decoding=\"async\" alt=\"A lemezek cser\u00e9j\u00e9nek automatiz\u00e1l\u00e1sa Ansible seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2019\/06\/0edda3182026ce6279bd84c99613e3d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAz Ansible leger\u0151sebb pontjai a k\u00f6nny\u0171 haszn\u00e1lat \u00e9s a vil\u00e1gos playbook-ok. \u00dagy gondolom, hogy ezt ki kell haszn\u00e1lni, \u00e9s nem sz\u00f6rny\u0171 yaml-f\u00e1jlokat \u00e9s hatalmas mennyis\u00e9g\u0171 felt\u00e9telt, shell-k\u00f3dot \u00e9s ciklusokat kell gener\u00e1lni.<\/p>\n<p>Ha meg akarja ism\u00e9telni a tapasztalatainkat az Ansible API-val kapcsolatban, vegye figyelembe a k\u00f6vetkez\u0151 k\u00e9t dolgot:<\/p>\n<ul>\n<li>A Playbook_executor \u00e9s maga a playbook nem fogadhat el timeout-ot. Van timeout az ssh-munkamenetekn\u00e9l, de a playbookhoz nincs. Ha megpr\u00f3b\u00e1lunk elt\u00e1vol\u00edtani egy lemezt, amely m\u00e1r nem l\u00e9tezik a rendszerben, a playbook v\u00e9gtelen\u00fcl fog futni, ez\u00e9rt egy k\u00fcl\u00f6n wrapperbe kellett csomagolnunk a futtat\u00e1s\u00e1t, \u00e9s timeout alapj\u00e1n le\u00f6lni.\n<\/li>\n<li>Az Ansible fork-processzek alapj\u00e1n m\u0171k\u00f6dik, ez\u00e9rt az API-ja nem sz\u00e1lbiztos. Minden playbookunkat egy sz\u00e1lon futtatjuk.\n<\/li>\n<\/ul>\n<p>\nEnnek eredm\u00e9nyek\u00e9nt k\u00f6r\u00fclbel\u00fcl 80%-kal siker\u00fclt automatiz\u00e1lni a lemezcser\u00e9ket. \u00d6sszess\u00e9g\u00e9ben a csere sebess\u00e9ge megdupl\u00e1z\u00f3dott. Ma az adminisztr\u00e1tor csak figyeli az esem\u00e9nyeket, \u00e9s d\u00f6nt\u00e9st hoz arr\u00f3l, hogy sz\u00fcks\u00e9ges-e a lemez cser\u00e9je, majd egy kattint\u00e1ssal v\u00e9grehajtja.<\/p>\n<p>De most egy m\u00e1sik probl\u00e9m\u00e1val tal\u00e1lkozunk: n\u00e9h\u00e1ny \u00faj adminisztr\u00e1tor nem tudja, hogyan kell lemezt cser\u00e9lni. \ud83d\ude42<br \/>\n<br \/>Forr\u00e1s: <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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\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\/hu\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/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\udd47Lemezcsere automatiz\u00e1l\u00e1sa az Ansible seg\u00edts\u00e9g\u00e9vel | ProHoster","description":"Hell\u00f3 mindenkinek.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/avtomatizatsiya-zameny-diskov-s-pomoshhyu-ansible","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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.","og:url":"https:\/\/prohoster.info\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/34841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=34841"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/34841\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/26233"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=34841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=34841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=34841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}