{"id":37586,"date":"2019-10-31T22:18:27","date_gmt":"2019-10-31T19:18:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/infrastructure-as-code-pervoe-znakomstvo\/"},"modified":"2019-10-31T22:18:27","modified_gmt":"2019-10-31T19:18:27","slug":"infrastructure-as-code-pervoe-znakomstvo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>C\u00e9g\u00fcnkn\u00e9l zajlik az SRE-csapat on-boarding folyamata. \u00c9n a fejleszt\u00e9s oldal\u00e1r\u00f3l l\u00e9ptem be ebbe a t\u00f6rt\u00e9netbe. A folyamat sor\u00e1n gondolatok \u00e9s megl\u00e1t\u00e1sok mer\u00fcltek fel bennem, amelyeket szeretn\u00e9k megosztani m\u00e1s fejleszt\u0151kkel. Ebben a cikkben azt \u00edrom le, hogy mi t\u00f6rt\u00e9nik, hogyan t\u00f6rt\u00e9nik, \u00e9s hogyan \u00e9lhet\u00fcnk tov\u00e1bb mindezzel. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/d154a2fbbd0dd846c763db178f02702e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>A sorozat folytat\u00e1sa, amely a bels\u0151 rendezv\u00e9ny\u00fcnk el\u0151ad\u00e1sainak alapj\u00e1n k\u00e9sz\u00fclt. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/462033\/\">DevForum<\/a><\/noindex><\/b>: <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/463469\/\">1. Schr\u00f6dinger macsk\u00e1ja doboz n\u00e9lk\u00fcl: a konszenzus probl\u00e9m\u00e1ja a megosztott rendszerekben.<\/a><\/noindex><br \/>\n2. Infrastruktur\u00e1lis k\u00f3d. (Itt vagy.)<br \/>\n3. TypeScript szerz\u0151d\u00e9sek gener\u00e1l\u00e1sa C# modellekb\u0151l. (Folyamatban&#8230;)<br \/>\n4. Bevezet\u00e9s a Raft konszenzus algoritmus\u00e1ba. (Folyamatban&#8230;)<br \/>\n&#8230;<\/p><\/blockquote>\n<p>\n\u00dagy d\u00f6nt\u00f6tt\u00fcnk, hogy SRE csapatot alak\u00edtunk, megval\u00f3s\u00edtva az \u00f6tleteket <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Programoz\u00f3kat toboroztunk saj\u00e1t fejleszt\u0151ink k\u00f6z\u00fcl, \u00e9s n\u00e9h\u00e1ny h\u00f3napra k\u00e9pz\u00e9sre k\u00fcldt\u00fck \u0151ket. <\/p>\n<p>A csapat el\u0151tt a k\u00f6vetkez\u0151 tanulm\u00e1nyi feladatok \u00e1lltak:<\/p>\n<ul>\n<li>Le\u00edrni az infrastrukt\u00far\u00e1nkat, amely nagyr\u00e9szt Microsoft Azure-ban tal\u00e1lhat\u00f3, k\u00f3dk\u00e9nt (Terraform \u00e9s minden, ami e k\u00f6r\u00e9 \u00e9p\u00fcl). <\/li>\n<li>Megtan\u00edtani a fejleszt\u0151ket az infrastrukt\u00far\u00e1val val\u00f3 munk\u00e1ra. <\/li>\n<li>Felk\u00e9sz\u00edteni a fejleszt\u0151ket az \u00fcgyeletekre.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Bevezetj\u00fck az infrastrukt\u00fara mint k\u00f3d fogalm\u00e1t.<\/h2>\n<p>\nA hagyom\u00e1nyos vil\u00e1gmodellben (klasszikus adminisztr\u00e1ci\u00f3) az infrastrukt\u00far\u00e1val kapcsolatos ismeretek k\u00e9t helyen tal\u00e1lhat\u00f3k:<\/p>\n<ol>\n<li>Vagy a szak\u00e9rt\u0151k fej\u00e9ben l\u00e9v\u0151 tud\u00e1s form\u00e1j\u00e1ban.<img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Vagy ezek az inform\u00e1ci\u00f3k valamilyen g\u00e9pen tal\u00e1lhat\u00f3k, amelynek egy r\u00e9sz\u00e9t szak\u00e9rt\u0151k ismerik. De nem biztos, hogy egy k\u00fcls\u0151 szem\u00e9ly (ha a csapatunk hirtelen elt\u0171nik) meg tudja \u00e9rteni, hogy mi \u00e9s hogyan m\u0171k\u00f6dik. A g\u00e9pen sok inform\u00e1ci\u00f3 lehet: hozz\u00e1f\u00e9r\u00e9sek, cron-jobok, al\u00e9lt disk (l\u00e1sd <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk mounting<\/a><\/noindex>) \u00e9s egyszer\u0171en v\u00e9gtelen lista arr\u00f3l, hogy mi t\u00f6rt\u00e9nhet. Neh\u00e9z meg\u00e9rteni, mi folyik val\u00f3j\u00e1ban.<img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nMindk\u00e9t esetben csapd\u00e1ban vagyunk, \u00e9s f\u00fcgg\u0151s\u00e9gekbe ker\u00fclt\u00fcnk:<\/p>\n<ul>\n<li>vagy egy haland\u00f3 embert\u0151l, aki hajlamos betegs\u00e9gekre, szerelemre, hangulatingadoz\u00e1sokra \u00e9s az egyszer\u0171 kir\u00fag\u00e1sra;<\/li>\n<li>vagy egy fizikailag m\u0171k\u00f6d\u0151 g\u00e9pt\u0151l, amely szint\u00e9n le\u00e1ll, ellopj\u00e1k, meglepet\u00e9seket okoz \u00e9s k\u00e9nyelmetlens\u00e9geket hoz. <\/li>\n<\/ul>\n<p>\nNyilv\u00e1nval\u00f3, hogy a megold\u00e1s az lenne, hogy ide\u00e1lis esetben mindent emberi olvas\u00e1sra alkalmas, karbantarthat\u00f3, j\u00f3l meg\u00edrt k\u00f3dra kellene \u00e1tkonvert\u00e1lni. <\/p>\n<p>\u00cdgy teh\u00e1t az infrastrukt\u00fara mint k\u00f3d (Infrastructure as Code \u2013 IaC) a megl\u00e9v\u0151 infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban t\u00f6rt\u00e9n\u0151 le\u00edr\u00e1sa, valamint a vele val\u00f3 munk\u00e1t \u00e9s a t\u00e9nyleges infrastrukt\u00fara megval\u00f3s\u00edt\u00e1s\u00e1t lehet\u0151v\u00e9 tev\u0151 eszk\u00f6z\u00f6k \u00f6sszess\u00e9ge.<\/p>\n<p><b class=\"spoiler_title\">Mi\u00e9rt kell mindent k\u00f3dba ford\u00edtani<\/b>Az emberek nem g\u00e9pek. Nem tudj\u00e1k mindent megjegyezni. Az emberi \u00e9s a g\u00e9pi reakci\u00f3 elt\u00e9r\u0151. Minden automatiz\u00e1lt potenci\u00e1lisan gyorsabban m\u0171k\u00f6dik, mint amit az ember v\u00e9gez. A legfontosabb dolog egyetlen igazs\u00e1gforr\u00e1s (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">Honnan j\u00f6nnek az \u00faj SRE m\u00e9rn\u00f6k\u00f6k<\/b>Teh\u00e1t \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy \u00faj SRE m\u00e9rn\u00f6k\u00f6ket vonunk be, de honnan szerezz\u00fck \u0151ket? A helyes v\u00e1laszok k\u00f6nyve (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE K\u00f6nyv<\/a><\/noindex>) azt mondja nek\u00fcnk: fejleszt\u0151kb\u0151l. \u0150k is k\u00f3ddal dolgoznak, \u00e9s ti el\u00e9ritek az ide\u00e1lis \u00e1llapotot.<\/p>\n<p>Sok\u00e1ig kerest\u00fck \u0151ket a munkaer\u0151piacon k\u00edv\u00fcl a v\u00e1llalatunkon, de be kell vallanunk, hogy nem tal\u00e1ltunk egyet sem a k\u00e9r\u00e9seinknek megfelel\u0151en. \u00cdgy k\u00e9nytelenek voltunk a saj\u00e1t sorainkban keresg\u00e9lni. <\/p>\n<h2>Infrastructure as Code probl\u00e9m\u00e1k<\/h2>\n<p>\nMost n\u00e9zz\u00fck meg a p\u00e9ld\u00e1kat arra, hogyan lehet az infrastrukt\u00far\u00e1t k\u00f3dba \u00e1gyazni. A k\u00f3d j\u00f3l van meg\u00edrva, min\u0151s\u00e9gi, megjegyz\u00e9sekkel \u00e9s beh\u00faz\u00e1sokkal. <\/p>\n<p>P\u00e9lda k\u00f3d a Terraformb\u00f3l.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e9lda k\u00f3d az Ansible-b\u00f3l.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUraim, de ha minden ilyen egyszer\u0171 lenne! Hiszen a val\u00f3s vil\u00e1gban \u00e9l\u00fcnk, amely mindig k\u00e9szen \u00e1ll arra, hogy meglepjen benn\u00fcnket, meglepet\u00e9seket \u00e9s probl\u00e9m\u00e1kat tartogat. Itt sem felt\u00e9tlen\u00fcl elker\u00fclhet\u0151k.<\/p>\n<p><b>1. Az els\u0151 probl\u00e9ma az, hogy a legt\u00f6bb esetben az IaC valamilyen DSL.<\/b><\/p>\n<p>A DSL pedig a strukt\u00fara le\u00edr\u00e1sa. Pontosabban arr\u00f3l, ami neked lennie kell: Json, Yaml, a nagyobb c\u00e9gek \u00e1ltal kital\u00e1lt m\u00f3dos\u00edt\u00e1sok, amelyek saj\u00e1t DSL-t hoztak l\u00e9tre (a Terraform HCL-t haszn\u00e1l). <\/p>\n<p>A baj az, hogy benne k\u00f6nnyen hi\u00e1nyozhatnak olyan megszokott dolgok, mint:<\/p>\n<ul>\n<li>v\u00e1ltoz\u00f3k;<\/li>\n<li>felt\u00e9telek;<\/li>\n<li>valahol nincsenek megjegyz\u00e9sek, p\u00e9ld\u00e1ul a Json-ban alap\u00e9rtelmezetten nem biztos\u00edtott\u00e1k \u0151ket;<\/li>\n<li>f\u00fcggv\u00e9nyek;<\/li>\n<li>\u00e9s m\u00e9g nem is besz\u00e9ltem az olyan magas szint\u0171 dolgokr\u00f3l, mint az oszt\u00e1lyok, \u00f6r\u00f6kl\u0151d\u00e9s \u00e9s hasonl\u00f3k.<\/li>\n<\/ul>\n<p>\n <b>2. A m\u00e1sodik probl\u00e9ma ezzel a k\u00f3ddal az, hogy gyakran heterog\u00e9n k\u00f6rnyezetben dolgozunk<\/b>. \u00c1ltal\u00e1ban C#-on dolgozol, teh\u00e1t egy nyelven, egy stackkel, egy \u00f6kosziszt\u00e9m\u00e1val. De itt hatalmas technol\u00f3giai v\u00e1ltozatoss\u00e1g van. <\/p>\n<p>Eg\u00e9szen val\u00f3s helyzet, amikor egy bash script Python alatt elind\u00edt egy olyan folyamatot, amelybe Json-t injekt\u00e1lnak. \u00d6n ezt elemzi, majd egy m\u00e1sik gener\u00e1tor 30 f\u00e1jlt eredm\u00e9nyez. Mindezhez bemeneti v\u00e1ltoz\u00f3k \u00e9rkeznek az Azure Key Vault-b\u00f3l, amelyeket a Go nyelven \u00edrt drone.io plugin h\u00edv be, \u00e9s ezek a v\u00e1ltoz\u00f3k yaml-on kereszt\u00fcl jutnak el, amelyet a jsonnet sablonkezel\u0151 gener\u00e1lt. Neh\u00e9z szigor\u00faan j\u00f3l dokument\u00e1lt k\u00f3dot fenntartani, amikor ennyire v\u00e1ltozatos a k\u00f6rnyezet. <\/p>\n<p>A hagyom\u00e1nyos fejleszt\u00e9s keretein bel\u00fcl egy feladatra egy nyelv haszn\u00e1lat\u00e1val t\u00f6rt\u00e9nik. Itt azonban sz\u00e1mos nyelvvel dolgozunk. <\/p>\n<p><b>3. A harmadik probl\u00e9ma \u2013 a tooling.<\/b>. Hozz\u00e1 vagyunk szokva a nagyszer\u0171 szerkeszt\u0151kh\u00f6z (Ms Visual Studio, Jetbrains Rider), amelyek mindent elv\u00e9geznek helyett\u00fcnk. \u00c9s m\u00e9g ha hib\u00e1zunk is, \u0151k megmondj\u00e1k, hogy t\u00e9ved\u00fcnk. \u00dagy t\u0171nik, hogy ez norm\u00e1lis \u00e9s term\u00e9szetes. <\/p>\n<p>De valahol ott van a VSCode, benne olyan pluginekkel, amelyek valahogyan telep\u00edtve vannak, fenntartva vagy nem fenntartva. \u00daj verzi\u00f3k jelentek meg, de nem t\u00e1mogatj\u00e1k \u0151ket. Az egyszer\u0171 funkci\u00f3 implement\u00e1l\u00e1s\u00e1nak \u00e1tmenete (m\u00e9g ha l\u00e9tezik is) bonyolult \u00e9s nem triv\u00e1lis probl\u00e9m\u00e1v\u00e1 v\u00e1lik. Egy egyszer\u0171 v\u00e1ltoz\u00f3n\u00e9v \u00e1tnevez\u00e9se projekt szinten t\u00f6bb tucat f\u00e1jlban. Szerencse, ha pont azt cser\u00e9li, amit kellene. Persze n\u00e9hol van szintaxis kiemel\u00e9s, van automatikus kieg\u00e9sz\u00edt\u00e9s, valahol van form\u00e1z\u00e1s (b\u00e1r nekem a Terraform Windows alatt nem m\u0171k\u00f6dik). <\/p>\n<p>A cikk \u00edr\u00e1s\u00e1nak id\u0151pontj\u00e1ban <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">vscode-terraform plugin<\/a><\/noindex> m\u00e9g nem adt\u00e1k ki a 0.12-es verzi\u00f3 t\u00e1mogat\u00e1s\u00e1t, pedig m\u00e1r 3 h\u00f3napja kiadt\u00e1k.<\/p>\n<h2>Itt az id\u0151 elfelejteni a&#8230;<\/h2>\n<p><\/p>\n<ol>\n<li>Hibakeres\u00e9s.<\/li>\n<li>Refaktoriz\u00e1l\u00f3 eszk\u00f6z.<\/li>\n<li>Automatikus kieg\u00e9sz\u00edt\u00e9s.<\/li>\n<li>Hib\u00e1k \u00e9szlel\u00e9se ford\u00edt\u00e1s k\u00f6zben.<\/li>\n<\/ol>\n<p>\nVicces, de ez n\u00f6veli a fejleszt\u00e9si id\u0151t \u00e9s n\u00f6veli a hib\u00e1k sz\u00e1m\u00e1t, amelyek elker\u00fclhetetlen\u00fcl bek\u00f6vetkeznek. <\/p>\n<p>A legrosszabb az, hogy nem azt kellene gondolnunk, hogyan tervezz\u00fcnk, rendszerezz\u00fck a f\u00e1jlokat k\u00f6nyvt\u00e1rakba, dekompon\u00e1ljunk, t\u00e1mogathat\u00f3v\u00e1 \u00e9s olvashat\u00f3v\u00e1 tegy\u00fck a k\u00f3dot, hanem hogy hogyan \u00edrjam helyesen ezt a parancsot, mert valahogy rosszul \u00edrtam. <\/p>\n<p>Kezd\u0151k\u00e9nt pr\u00f3b\u00e1lja meg\u00e9rteni a Terraformot, de az IDE ebben egy\u00e1ltal\u00e1n nem seg\u00edt. Amikor van dokument\u00e1ci\u00f3 \u2013 bel\u00e9p, megn\u00e9zi. De ha \u00faj programoz\u00e1si nyelvbe kezdene bele, az IDE jelezn\u00e9, hogy l\u00e9tezik egy ilyen t\u00edpus, \u00e9s egy olyan nem. Legal\u00e1bbis int vagy string szinten. Ez gyakran hasznos lehet. <\/p>\n<h2>De hol vannak a tesztek?<\/h2>\n<p>\nK\u00e9rdezni fogj\u00e1k: \u201eHogyan \u00e1llnak a tesztek, kedves programoz\u00f3k?\u201d A komoly sr\u00e1cok mindent \u00e9lesben tesztelnek, \u00e9s ez kem\u00e9ny. \u00cdme egy p\u00e9lda egy unit tesztre egy Terraform modulr\u00f3l a weboldalr\u00f3l. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/azure\/terraform\/terratest-in-terraform-modules\">Microsoft<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u00f3 dokument\u00e1ci\u00f3juk van. A Microsoft mindig is tetszett a dokument\u00e1ci\u00f3s \u00e9s oktat\u00e1si megk\u00f6zel\u00edt\u00e9s\u00e9vel. De nem kell Bob b\u00e1csinak lenni ahhoz, hogy \u00e9szrevegy\u00fck, itt nem ide\u00e1lis a k\u00f3d. Figyelj a valid\u00e1ci\u00f3ra, amit jobbra helyeztek. <\/p>\n<p>A unit teszt probl\u00e9m\u00e1ja abban rejlik, hogy ellen\u0151rizhetj\u00fck a Json kimenet helyess\u00e9g\u00e9t. \u00d6t param\u00e9tert adtam meg, \u00e9s egy 2000 soros Json-t kaptam. Elemezhetem, mi t\u00f6rt\u00e9nik itt, \u00e9rv\u00e9nyes\u00edthetem a teszt eredm\u00e9ny\u00e9t... <\/p>\n<p>Neh\u00e9z Json-t elemezni Go-ban. De Go-ban kell \u00edrni, mert a Terraform Go-ban van, ami j\u00f3 gyakorlat, hiszen abban a nyelvben tesztelsz, amelyben \u00edrsz. A k\u00f3d szervez\u00e9se nagyon gyenge. Ennek ellen\u00e9re ez a legjobb k\u00f6nyvt\u00e1r a tesztel\u00e9shez. <\/p>\n<p>A Microsoft is \u00edrja a moduljait, tesztelve \u0151ket ilyen m\u00f3don. Nyilv\u00e1nval\u00f3an ez Open Source. Amit mondok, azt j\u00f6hetsz \u00e9s megjav\u00edthatod. Le tudok \u00fclni, \u00e9s egy h\u00e9t alatt mindent meg tudok jav\u00edtani, open source-ba tudom tenni a VS Code plugineket, a Terraformot, tudok \u00edrni egy plugint a Riderhez. Tal\u00e1n \u00edrok p\u00e1r elemz\u0151t, csatolok lintereket, hozz\u00e1j\u00e1rulok a tesztel\u00e9si k\u00f6nyvt\u00e1rhoz. Mindenk\u00e9pp meg tudom csin\u00e1lni. De nem ezzel kellene foglalkoznom. <\/p>\n<h2>A legjobb gyakorlatok az infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban.<\/h2>\n<p>\nTov\u00e1bb megy\u00fcnk. Ha az IaC-nak nincsenek tesztjei, gyenge az IDE \u00e9s a tooling, akkor legal\u00e1bb legyenek a legjobb gyakorlatok. Egyszer\u0171en csak bementem a Google Analytics-be, \u00e9s \u00f6sszehasonl\u00edtottam k\u00e9t keres\u00e9si kifejez\u00e9st: Terraform legjobb gyakorlatok \u00e9s C# legjobb gyakorlatok. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMit l\u00e1tunk? K\u00edm\u00e9letlen statisztik\u00e1t, ami nem a mi javunkra szolg\u00e1l. Anyagmennyis\u00e9gben ugyanazt tapasztaljuk. A C# fejleszt\u00e9sben egyszer\u0171en f\u00fcrd\u00fcnk az anyagokban, megvannak a szuper legjobb gyakorlatok, vannak k\u00f6nyvek, amelyeket szak\u00e9rt\u0151k \u00edrtak, \u00e9s emellett k\u00f6nyvek, amelyeket m\u00e1s szak\u00e9rt\u0151k \u00edrtak az el\u0151z\u0151 k\u00f6nyvekkel kapcsolatos kritik\u00e1khoz. Rengeteg hivatalos dokument\u00e1ci\u00f3, cikk, oktat\u00f3anyag, most m\u00e9g open source fejleszt\u00e9s is el\u00e9rhet\u0151.<\/p>\n<p>Ami az IaC-ra vonatkoz\u00f3 keres\u00e9st illeti: itt apr\u00e1nk\u00e9nt pr\u00f3b\u00e1lj\u00e1k \u00f6sszehozni az inform\u00e1ci\u00f3t a nagy terhel\u00e9s\u0171 el\u0151ad\u00e1sokr\u00f3l vagy a HashiConf-r\u00f3l, a hivatalos dokument\u00e1ci\u00f3b\u00f3l \u00e9s a sz\u00e1mos GitHub issue-b\u00f3l. Hogyan is oszthat\u00f3k el ezek a modulok, mit lehet vel\u00fck kezdeni? \u00dagy t\u0171nik, hogy ez val\u00f3di probl\u00e9ma... Van k\u00f6z\u00f6ss\u00e9g, uraim, ahol b\u00e1rmilyen k\u00e9rd\u00e9sre 10 kommentet kapsz a GitHubon. De ez nem biztos. <\/p>\n<p>Sajn\u00e1lom, jelenleg a szak\u00e9rt\u0151k csak most kezdik el megjelenni. M\u00e9g mindig t\u00fal kevesen vannak. Az eg\u00e9sz k\u00f6z\u00f6ss\u00e9g pedig n\u00e9h\u00e1ny gyermekcip\u0151ben j\u00e1r. <\/p>\n<h2>Merre tart mindez \u00e9s mit tegy\u00fcnk?<\/h2>\n<p>\nMindent h\u00e1tra lehet hagyni \u00e9s visszat\u00e9rni a C# vil\u00e1g\u00e1ba, a riderhez. De nem. Mi\u00e9rt is foglalkozn\u00e1l vele, ha nem tal\u00e1ln\u00e1d meg a megold\u00e1st? Az al\u00e1bbiakban szubjekt\u00edv k\u00f6vetkeztet\u00e9seimet osztom meg. \u00c9rdekes lenne vitatkozni velem a kommentekben. <\/p>\n<p>Szem\u00e9ly szerint t\u00f6bb dologra is fogadn\u00e9k:<\/p>\n<ol>\n<li>A fejl\u0151d\u00e9s ezen a ter\u00fcleten nagyon gyorsan zajlik. Bemutatok egy grafikont a DevOps keres\u00e9sekr\u0151l.\n<p><img decoding=\"async\" alt=\"Infrastrukt\u00fara k\u00f3d form\u00e1j\u00e1ban: els\u0151 tal\u00e1lkoz\u00e1s\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLehet, hogy a t\u00e9ma n\u00e9pszer\u0171, de az a t\u00e9ny, hogy a ter\u00fclet n\u00f6vekszik, n\u00e9mi rem\u00e9nyt ad. <\/p>\n<p>Ha valami \u00edgy n\u00f6vekszik, biztosan lesznek okos emberek, akik megmondj\u00e1k, hogyan kell csin\u00e1lni, \u00e9s hogyan nem. A n\u00e9pszer\u0171s\u00e9g n\u00f6veked\u00e9se azt is jelenti, hogy tal\u00e1n valakinek v\u00e9gre lesz ideje befejezni a jsonnet plugint a vscode-hoz, amely lehet\u0151v\u00e9 teszi a funkci\u00f3k megval\u00f3s\u00edt\u00e1s\u00e1hoz val\u00f3 ugr\u00e1st, ahelyett, hogy a ctrl+shift+f seg\u00edts\u00e9g\u00e9vel keresg\u00e9lj. Amikor minden fejl\u0151dik, t\u00f6bb anyag is megjelenik. A Google SRE-r\u0151l sz\u00f3l\u00f3 k\u00f6nyv\u00e9nek megjelen\u00e9se remek p\u00e9lda erre.<\/li>\n<li>Vannak kifejlesztett m\u00f3dszerek \u00e9s gyakorlatok a hagyom\u00e1nyos fejleszt\u00e9sben, amelyeket sikeresen alkalmazhatunk itt is. Igen, vannak ny\u0171g\u00f6k a tesztel\u00e9sben \u00e9s a heterog\u00e9n k\u00f6rnyezetben, \u00e9s a t\u00fals\u00e1gosan alacsony eszk\u00f6zk\u00e9szlet, de rengeteg gyakorlatot felhalmoztunk, amelyek hasznosak lehetnek.\n<p>Egy ban\u00e1lis p\u00e9lda: a p\u00e1rban programoz\u00e1s. Nagyon seg\u00edt abban, hogy r\u00e1j\u00f6jj\u00fcnk a dolgokra. Amikor melletted \u00fcl valaki, aki szint\u00e9n pr\u00f3b\u00e1l valamit meg\u00e9rteni, egy\u00fctt jobban meg\u00e9rtitek a dolgokat.<\/p>\n<p> A refaktor\u00e1l\u00e1s meg\u00e9rt\u00e9se m\u00e9g \u00edgy is seg\u00edt a folyamat v\u00e9grehajt\u00e1s\u00e1ban. Teh\u00e1t, nem kell mindent egyszerre megv\u00e1ltoztatnod, el\u0151sz\u00f6r a n\u00e9vad\u00e1st v\u00e1ltoztatod, majd a elhelyez\u00e9st, esetleg kiemelsz egy r\u00e9szt, \u00f3h, itt meg nincsenek megjegyz\u00e9sek. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Z\u00e1r\u00e1s<\/h2>\n<p>\nB\u00e1r a gondolataim pesszimist\u00e1nak t\u0171nhetnek, rem\u00e9nnyel tekintek a j\u00f6v\u0151be, \u00e9s \u0151szint\u00e9n b\u00edzom benne, hogy nek\u00fcnk (\u00e9s nektek) siker\u00fclni fog.<\/p>\n<blockquote><p>Hamarosan \u00e9rkezik a cikk m\u00e1sodik r\u00e9sze. Ebben arr\u00f3l fogok besz\u00e9lni, hogyan pr\u00f3b\u00e1ltuk alkalmazni a rugalmas fejleszt\u00e9si gyakorlatokat, hogy jav\u00edtsuk a tanul\u00e1si folyamatunkat \u00e9s a munk\u00e1t az infrastrukt\u00far\u00e1val.<\/p><\/blockquote>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435-\u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0438 \u044f \u0433\u043e\u0432\u043e\u0440\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0438 \u043a\u0430\u043a \u0432\u0441\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37586","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=\"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\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\/infrastructure-as-code-pervoe-znakomstvo\" \/>\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\udd47Infrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\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:18:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:27+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\udd47Infrastructure as code: els\u0151 ismerked\u00e9s | ProHoster","description":"C\u00e9g\u00fcnkn\u00e9l zajlik az SRE-csapat onboarding folyamata. A fejleszt\u00e9s oldal\u00e1r\u00f3l \u00e9rkeztem a t\u00f6rt\u00e9netbe. K\u00f6zben olyan gondolatok \u00e9s felismer\u00e9sek mer\u00fcltek fel bennem, amelyeket szeretn\u00e9k megosztani m\u00e1s fejleszt\u0151kkel.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","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\udd47Infrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e | ProHoster","og:description":"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","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:18:27+00:00","article:modified_time":"2019-10-31T19:18:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37586","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-23 18:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:29: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\/37586","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=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}