{"id":98123,"date":"2020-10-24T14:42:52","date_gmt":"2020-10-24T12:42:52","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens"},"modified":"2020-11-18T00:58:49","modified_gmt":"2020-11-17T22:58:49","slug":"patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens","title":{"rendered":"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/ec13125c702f42863bbe774cd805442b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00dagy t\u0171nik, hogy a Terraform fejleszt\u0151i el\u00e9g k\u00e9nyelmes legjobb gyakorlatokat k\u00edn\u00e1lnak az AWS-infrastrukt\u00far\u00e1val val\u00f3 munk\u00e1hoz. Csak van egy apr\u00f3 b\u00f6kken\u0151. Id\u0151vel a k\u00f6rnyezetek sz\u00e1ma n\u00f6vekszik, mindegyikben megjelennek a saj\u00e1toss\u00e1gok. Szinte ugyanannak az alkalmaz\u00e1sst\u00e1knak a m\u00e1solata jelenik meg egy szomsz\u00e9dos r\u00e9gi\u00f3ban. A Terraform k\u00f3dot gondosan m\u00e1solni \u00e9s a \u00faj k\u00f6vetelm\u00e9nyeknek megfelel\u0151en szerkeszteni kell, vagy k\u00e9sz\u00edteni kell egy h\u00f3pelyhet.<\/p>\n<p><\/p>\n<p>Az \u00e9n el\u0151ad\u00e1som a Terraform mint\u00e1zatair\u00f3l sz\u00f3l, amelyek seg\u00edtenek a k\u00e1osz \u00e9s a k\u00e9zi rutinfeladatok lek\u00fczd\u00e9s\u00e9ben nagyobb \u00e9s hossz\u00fa t\u00e1v\u00fa projektek eset\u00e9n.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Vide\u00f3:<\/p>\n<p>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/5f92845c017bf613f0899d88\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8c67c45e486d6c03793dd08c33a16313.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>40 \u00e9ves vagyok, 20 \u00e9ve dolgozom az IT ter\u00fclet\u00e9n. 12 \u00e9ve az Ixtens c\u00e9gn\u00e9l dolgozom. Ecommerce-alap\u00fa fejleszt\u00e9ssel foglalkozunk. Az elm\u00falt 5 \u00e9vben DevOps gyakorlatokat folytatok.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8b14b3adaa45d69278d76580baa99042.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A t\u00f6rt\u00e9netem egy projektr\u0151l sz\u00f3l, egy olyan c\u00e9gn\u00e9l, amelynek a nev\u00e9t nem fogom elmondani, a titoktart\u00e1si meg\u00e1llapod\u00e1sra hivatkozva. <\/p>\n<p><\/p>\n<p>A di\u00e1n l\u00e1that\u00f3 sz\u00e1mok arra szolg\u00e1lnak, hogy \u00e9rz\u00e9kelj\u00fck a projekt nagys\u00e1g\u00e1t. Minden, amir\u0151l ezut\u00e1n besz\u00e9lni fogok, Amazonnal kapcsolatos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/3742217a2abaf1fcf2163979d82eac14.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9gy \u00e9vvel ezel\u0151tt csatlakoztam ehhez a projekthez. Pont a legnagyobb fordul\u00f3pontn\u00e1l zajlott az infrastrukt\u00fara refaktor\u00e1l\u00e1sa, mert a projekt n\u00f6vekedett. Azok a mint\u00e1k, amelyeket haszn\u00e1ltunk, m\u00e1r nem voltak megfelel\u0151ek. Figyelembe v\u00e9ve a projekt tervezett n\u00f6veked\u00e9s\u00e9t, valami \u00fajat kellett kital\u00e1lni. <\/p>\n<p><\/p>\n<p>K\u00f6sz\u00f6net Matv\u00e9jnek, aki tegnap elmondta, mi t\u00f6rt\u00e9nt a Dodo Pizz\u00e1n\u00e1l. Ez az, ami n\u00e1lunk n\u00e9gy \u00e9ve t\u00f6rt\u00e9nt. <\/p>\n<p><\/p>\n<p>A fejleszt\u0151k bej\u00f6ttek, \u00e9s kezdt\u00e9k \u00edrni az infrastrukt\u00far\u00e1val kapcsolatos k\u00f3dot. <\/p>\n<p><\/p>\n<p>A legnyilv\u00e1nval\u00f3bb okok k\u00f6z\u00e9 tartozik, hogy sz\u00fcks\u00e9g volt a piacon val\u00f3 megjelen\u00e9s (time to market) felgyors\u00edt\u00e1s\u00e1ra. Biztos\u00edtani kellett, hogy a DevOps csapat ne legyen sz\u0171k keresztmetszet a kiad\u00e1s sor\u00e1n. R\u00e1ad\u00e1sul az els\u0151 szinten a Terraformot \u00e9s a Puppe-t haszn\u00e1lt\u00e1k.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/13d6df6a324d2e1162acef77ca2ad0dc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A Terraform a HashiCorp ny\u00edlt forr\u00e1sk\u00f3d\u00fa projektje. \u00c9s azok sz\u00e1m\u00e1ra, akik nem tudj\u00e1k, hogy mi ez, az elk\u00f6vetkez\u0151 n\u00e9h\u00e1ny dia. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/61726d4205d1f4f8e449fe9d71507508.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az infrastrukt\u00fara mint k\u00f3d azt jelenti, hogy le\u00edrhatjuk az infrastrukt\u00far\u00e1nkat, \u00e9s megk\u00e9rhetj\u00fck a k\u00fcl\u00f6nf\u00e9le robotokat, hogy biztos\u00edts\u00e1k sz\u00e1munkra azokat az er\u0151forr\u00e1sokat, amelyeket le\u00edrtunk.<\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul sz\u00fcks\u00e9g\u00fcnk van <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/vps\/abuzoustojchivye-vps\/\"   title=\"virtu\u00e1lis g\u00e9p\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4196\">virtu\u00e1lis g\u00e9p<\/a>. Le\u00edrjuk, hozz\u00e1adunk n\u00e9h\u00e1ny k\u00f6telez\u0151 param\u00e9tert. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/eb52c1e458fa092bba8577fffceb864c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezut\u00e1n a konzolon be\u00e1ll\u00edtjuk az Amazonhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9st. K\u00e9rj\u00fck, a Terraform tervet (plan). A Terraform terv azt fogja mondani: \u201eRendben, az \u00d6n er\u0151forr\u00e1s\u00e1hoz ilyen dolgokat tudunk csin\u00e1lni.\u201d \u00c9s legal\u00e1bb egy er\u0151forr\u00e1s hozz\u00e1 fog ad\u00f3dni. \u00c9s nem v\u00e1rhat\u00f3 v\u00e1ltoz\u00e1s. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/879e645596121ee5d05ac247b4be19ee.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Miut\u00e1n minden rendben van, k\u00e9rheti a Terraform alkalmaz\u00e1s\u00e1t, \u00e9s a Terraform l\u00e9trehoz egy p\u00e9ld\u00e1nyt, \u00edgy megkapja a virtu\u00e1lis g\u00e9pet a felh\u0151j\u00e9ben.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/77b7fe4d6abcc9116233f48caa887465.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A projekt tov\u00e1bb fejl\u0151dik. V\u00e1ltoztat\u00e1sokat adunk hozz\u00e1. Tov\u00e1bbi p\u00e9ld\u00e1nyokat k\u00e9r\u00fcnk, 53 bejegyz\u00e9st adunk hozz\u00e1.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/98ce7e1f9d1f85aa5e78c269a0708ac1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ism\u00e9telj\u00fck meg. K\u00e9rj\u00fck a tervet. L\u00e1tjuk, milyen v\u00e1ltoz\u00e1sok tervezettek. Alkalmazzuk. \u00cdgy n\u0151 az infrastrukt\u00far\u00e1nk. <\/p>\n<p><\/p>\n<p>A Terraform haszn\u00e1l egy \u00fagynevezett \u00e1llapotf\u00e1jlt. Azaz minden v\u00e1ltoztat\u00e1st, ami az Amazonra ker\u00fcl, egy f\u00e1jlban t\u00e1rol, ahol minden egyes le\u00edrt er\u0151forr\u00e1shoz tartoznak az Amazonban l\u00e9trehozott megfelel\u0151 er\u0151forr\u00e1sok. \u00cdgy amikor egy er\u0151forr\u00e1s le\u00edr\u00e1s\u00e1t megv\u00e1ltoztatjuk, a Terraform pontosan tudja, mit kell m\u00f3dos\u00edtani az Amazonban.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6e83efffb7af6ab967b4716be170b47b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezek az \u00e1llapotf\u00e1jlok eredetileg csak sima f\u00e1jlok voltak. Gitben t\u00e1roltuk \u0151ket, ami rendk\u00edv\u00fcl k\u00e9nyelmetlen volt. Folyamatosan elfelejtette valaki a v\u00e1ltoztat\u00e1sokat elk\u00f6vetni, \u00e9s sok konfliktus mer\u00fclt fel. <\/p>\n<p><\/p>\n<p>Most lehet\u0151s\u00e9g van backend haszn\u00e1lat\u00e1ra, azaz a Terraform megmondja, hogy melyik bucketbe, milyen kulccsal kell az \u00e1llapotf\u00e1jlt menteni. A Terraform mag\u00e1t\u00f3l gondoskodik r\u00f3la, hogy el\u0151h\u00edvja az \u00e1llapotf\u00e1jlt, elv\u00e9gezze a var\u00e1zslatot, \u00e9s visszahelyezze a v\u00e9gs\u0151 eredm\u00e9nyt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/e6687463a9fe3cff979f44ac7778b4e8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u0151 az infrastrukt\u00far\u00e1nk. Itt a k\u00f3dunk. Most m\u00e1r nem csak virtu\u00e1lis g\u00e9pet szeretn\u00e9nk l\u00e9trehozni, hanem tesztk\u00f6rnyezetet akarunk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/0effb09fa04d3d520c1cdbb34ce97810.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A Terraform lehet\u0151v\u00e9 teszi modulok l\u00e9trehoz\u00e1s\u00e1t, azaz azonos le\u00edr\u00e1sok r\u00f6gz\u00edt\u00e9s\u00e9t egy mapp\u00e1ban.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/95c8395b10142fe550b0719161211f15.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul a tesztel\u00e9s sor\u00e1n megh\u00edvhatjuk ezt a modulot, \u00e9s ugyanazt kapjuk, mintha a Terraform alkalmaz\u00e1s\u00e1t v\u00e9gezn\u00e9nk a modulban. A tesztel\u00e9shez ilyen k\u00f3dra lesz sz\u00fcks\u00e9g.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/fa4c16e3835a4507a858d2ddb767daf3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A termel\u00e9shez k\u00fcldhet\u00fcnk b\u00e1rmilyen v\u00e1ltoz\u00e1st, mivel a tesztel\u00e9shez nem sz\u00fcks\u00e9gesek nagy p\u00e9ld\u00e1nyok, a termel\u00e9shez viszont hasznosak a nagy p\u00e9ld\u00e1nyok.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/19478de23da2278567e66bacef78a0a9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezut\u00e1n visszat\u00e9rek a projekthez. Bonyolult feladat volt, mivel az infrastrukt\u00far\u00e1t nagyon nagyra tervezt\u00fck. Valahogy rendezni kellett a teljes k\u00f3dot, hogy k\u00e9nyelmes legyen mindenki sz\u00e1m\u00e1ra: azoknak, akik karbantartj\u00e1k a k\u00f3dot, \u00e9s azoknak, akik v\u00e1ltoztat\u00e1sokat v\u00e9geznek rajta. \u00dagy tervezt\u00fck, hogy b\u00e1rmilyen fejleszt\u0151 elmehet \u00e9s m\u00f3dos\u00edthatja az infrastrukt\u00far\u00e1t, ahogyan sz\u00fcks\u00e9ges a platformj\u00e1nak egyes r\u00e9szeihez. <\/p>\n<p><\/p>\n<p>Ez a k\u00f6nyvt\u00e1ri strukt\u00fara, amelyet a HashiCorp aj\u00e1nl, ha nagy projektje van, \u00e9s \u00e9rdemes az eg\u00e9sz infrastrukt\u00far\u00e1t kis darabokra osztani, minden darabot k\u00fcl\u00f6n mapp\u00e1ban le\u00edrni. <\/p>\n<p><\/p>\n<p>A kiterjedt er\u0151forr\u00e1s k\u00f6nyvt\u00e1r seg\u00edts\u00e9g\u00e9vel a tesztel\u00e9s \u00e9s a termel\u00e9s sor\u00e1n k\u00f6r\u00fclbel\u00fcl ugyanazt lehet h\u00edvni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/c30cdc3d3ce5441bc0ae4a485069dacc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ebben az esetben nem \u00e9ppen volt megfelel\u0151, mert a fejleszt\u0151k vagy a tesztel\u00e9shez sz\u00fcks\u00e9ges tesztk\u00e9szletet egyszer\u0171bb m\u00f3don kellett megkapni. Nem akartunk az mapp\u00e1k k\u00f6z\u00f6tt j\u00e1rk\u00e1lni, alkalmazni a sz\u00fcks\u00e9ges sorrendben, \u00e9s agg\u00f3dni amiatt, hogy az adatb\u00e1zis fel fog \u00e1llni, azt\u00e1n egy p\u00e9ld\u00e1ny, amely ezt az adatb\u00e1zist haszn\u00e1lja, is fel fog \u00e1llni. Ez\u00e9rt az eg\u00e9sz tesztel\u00e9st egy mapp\u00e1b\u00f3l ind\u00edtottuk. A legt\u00f6bb modul itt lett beh\u00edvva, de az \u00f6sszes futtat\u00e1s egy l\u00e9p\u00e9sben t\u00f6rt\u00e9nt.<\/p>\n<p><\/p>\n<p>A Terraform gondoskodik az \u00f6sszes f\u00fcgg\u0151s\u00e9gr\u0151l. Mindig olyan sorrendben hozza l\u00e9tre az er\u0151forr\u00e1sokat, hogy p\u00e9ld\u00e1ul IP-c\u00edmet kaphassunk egy frissen l\u00e9trehozott p\u00e9ld\u00e1nyb\u00f3l, \u00e9s ezt az IP-c\u00edmet a route53 rekordban is fel lehessen haszn\u00e1lni. <\/p>\n<p><\/p>\n<p>Ezen k\u00edv\u00fcl a platform nagyon nagy. A tesztk\u00e9szlet ind\u00edt\u00e1sa, ak\u00e1r egy \u00f3r\u00e1ra is, ak\u00e1r 8 \u00f3r\u00e1ra \u2013 el\u00e9g k\u00f6lts\u00e9ges feladat. <\/p>\n<p><\/p>\n<p>Azt is automatiz\u00e1ltuk. A Jenkins feladat lehet\u0151v\u00e9 tette a k\u00e9szlet ind\u00edt\u00e1s\u00e1t. Itt pull requestet kellett ind\u00edtani a v\u00e1ltoztat\u00e1sokkal, amelyeket a fejleszt\u0151 tesztelni akart, megadva az \u00f6sszes sz\u00fcks\u00e9ges opci\u00f3t, \u00f6sszetev\u0151t \u00e9s m\u00e9retet. Ha teljes\u00edtm\u00e9nytesztel\u00e9sre van sz\u00fcks\u00e9ge, akkor t\u00f6bb p\u00e9ld\u00e1nyt vehet. Ha csak azt akarja ellen\u0151rizni, hogy egy \u0171rlap megny\u00edlik, akkor minim\u00e1lis be\u00e1ll\u00edt\u00e1sokkal ind\u00edthatja. Azt is meg lehetett adni, hogy sz\u00fcks\u00e9g van-e klaszterre vagy sem, stb. <\/p>\n<p><\/p>\n<p>A Jenkins pedig tolta a shell-skriptet, amely kicsit m\u00f3dos\u00edtotta a k\u00f3dot a Terraform mapp\u00e1ban. Elt\u00e1vol\u00edtotta a felesleges f\u00e1jlokat \u00e9s hozz\u00e1adta a sz\u00fcks\u00e9ges f\u00e1jlokat. Ezut\u00e1n a Terraform apply egy l\u00e9p\u00e9sben emelte fel a k\u00e9szletet. <\/p>\n<p><\/p>\n<p>A tov\u00e1bbi l\u00e9p\u00e9sek m\u00e1r m\u00e1sok voltak, amelyekbe nem szeretn\u00e9k r\u00e9szletesebben belemenni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b288c0b320d8cb6e282db994bc1c1f43.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mivel a tesztel\u00e9shez kicsit t\u00f6bb opci\u00f3ra volt sz\u00fcks\u00e9g, mint a termel\u00e9s eset\u00e9ben, k\u00e9nytelenek voltunk m\u00e1solatokat k\u00e9sz\u00edteni a modulokr\u00f3l, hogy ezekben a m\u00e1solatokban hozz\u00e1adhassuk azokat a funkci\u00f3kat, amelyek csak a tesztel\u00e9shez sz\u00fcks\u00e9gesek. <\/p>\n<p><\/p>\n<p>\u00cdgy t\u00f6rt\u00e9nt, hogy a tesztel\u00e9s sor\u00e1n \u00fagy t\u0171nt, hogy azokat a v\u00e1ltoz\u00e1sokat szeretn\u00e9nk tesztelni, amelyek v\u00e9g\u00fcl a termel\u00e9sre mennek. De val\u00f3j\u00e1ban egy dolgot tesztelt\u00fcnk, m\u00edg a termel\u00e9sben egy kicsit m\u00e1s alkalmaz\u00e1sra ker\u00fclt sor. Volt egy kis elt\u00e9r\u00e9s a mint\u00e1zatban, hogy a termel\u00e9sben minden v\u00e1ltoz\u00e1st a m\u0171k\u00f6dtet\u00e9si csapat alkalmazott. N\u00e9ha el\u0151fordult, hogy azok a v\u00e1ltoz\u00e1sok, amelyeknek \u00e1t kellett volna menni\u00fck a tesztel\u00e9sb\u0151l a termel\u00e9sbe, egy m\u00e1sik verzi\u00f3ban maradtak. <\/p>\n<p><\/p>\n<p>Ezen k\u00edv\u00fcl volt egy probl\u00e9ma, hogy egy \u00faj szolg\u00e1ltat\u00e1s ker\u00fclt bevezet\u00e9sre, amely kicsit elt\u00e9rt egy m\u00e1r l\u00e9tez\u0151t\u0151l. Ahelyett, hogy a megl\u00e9v\u0151 modult m\u00f3dos\u00edtottuk volna, a m\u00e1solat\u00e1t kellett elk\u00e9sz\u00edteni, \u00e9s hozz\u00e1adni a sz\u00fcks\u00e9ges v\u00e1ltoztat\u00e1sokat. <\/p>\n<p><\/p>\n<p>Tulajdonk\u00e9ppen a Terraform nem val\u00f3di nyelv. Ez egy deklar\u00e1ci\u00f3. Ha valamit deklar\u00e1lni akarunk, akkor azt deklar\u00e1ljuk. \u00c9s minden m\u0171k\u00f6dik.<\/p>\n<p><\/p>\n<p>Egy pillanatban, amikor az egyik pull request-emr\u0151l besz\u00e9lgett\u00fcnk, az egyik koll\u00e9g\u00e1m azt mondta, hogy nem kellene h\u00f3pelyheket szapor\u00edtani. \u00c9rdekl\u0151dtem, mire gondol. Van egy tudom\u00e1nyos t\u00e9ny, hogy a vil\u00e1gban nincs k\u00e9t egyforma h\u00f3pehely, mindegyik kicsit elt\u00e9r. \u00c9s amint ezt meghallottam, azonnal megtapasztaltam a Terraform-k\u00f3d s\u00faly\u00e1t. Mert amikor verzi\u00f3r\u00f3l verzi\u00f3ra kellett l\u00e9pni, a Terraform megszak\u00edt\u00f3 l\u00e1nc v\u00e1ltoztat\u00e1sokat k\u00f6vetelt, azaz a k\u00f3d t\u00f6bb\u00e9 m\u00e1r nem volt kompatibilis a k\u00f6vetkez\u0151 verzi\u00f3val. \u00cdgy olyan pull requestet kellett k\u00e9sz\u00edteni, amely szinte a f\u00e1jlok fel\u00e9t lefedte az infrastrukt\u00far\u00e1ban, hogy az infrastrukt\u00far\u00e1t a Terraform k\u00f6vetkez\u0151 verzi\u00f3j\u00e1ra hozzuk.<\/p>\n<p><\/p>\n<p>\u00c9s miut\u00e1n megjelent egy ilyen h\u00f3pehely, az \u00f6sszes megl\u00e9v\u0151 Terraform-k\u00f3dunk egy hatalmas h\u00f3kupacc\u00e1 v\u00e1lt. <\/p>\n<p><\/p>\n<p>A k\u00fcls\u0151 fejleszt\u0151 sz\u00e1m\u00e1ra, aki k\u00edv\u00fcl van az operation-en, ennek nem nagy jelent\u0151s\u00e9ge van, mert k\u00e9sz\u00edtett egy pull request-et, az \u0151 er\u0151forr\u00e1sa elindult. \u00c9s ennyi, ez m\u00e1r nem az \u0151 gondja. A DevOps csapatnak, akik figyelik, hogy minden rendben legyen, mindezeket a v\u00e1ltoztat\u00e1sokat meg kell csin\u00e1lnia. \u00c9s ezeknek a v\u00e1ltoz\u00e1soknak a k\u00f6lts\u00e9ge nagyon-nagyon megemelkedett minden egyes \u00faj h\u00f3pehellyel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/d07039414027798861d1424bb2c686b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Van egy t\u00f6rt\u00e9net arr\u00f3l, hogyan rajzol egy di\u00e1k kr\u00e9t\u00e1val a t\u00e1bl\u00e1ra k\u00e9t t\u00f6k\u00e9letes k\u00f6rt a szemin\u00e1riumon. A tan\u00e1r meglep\u0151dik, hogyan siker\u00fclt neki ilyen pontosan, k\u00f6rz\u0151 n\u00e9lk\u00fcl rajzolnia. A di\u00e1k v\u00e1lasza: \u201eNagyon egyszer\u0171, k\u00e9t \u00e9vet a hadseregben t\u00f6lt\u00f6ttem a h\u00fasdar\u00e1l\u00f3 forgat\u00e1s\u00e1val.\u201d <\/p>\n<p><\/p>\n<p>A n\u00e9gy \u00e9vb\u0151l, amelyben r\u00e9szt veszek ebben a projektben, k\u00f6r\u00fclbel\u00fcl k\u00e9t \u00e9ve foglalkozom a Terraformmal. \u00c9s persze, van n\u00e9h\u00e1ny tr\u00fckk\u00f6m, n\u00e9h\u00e1ny tan\u00e1csom, hogyan lehet egyszer\u0171s\u00edteni a Terraform-k\u00f3dot, \u00fagy dolgozni vele, mint egy programoz\u00e1si nyelvvel, \u00e9s cs\u00f6kkenteni a fejleszt\u0151k terhel\u00e9s\u00e9t, akiknek ezt a k\u00f3dot naprak\u00e9szen kell tartaniuk. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9413c6adf1933482dcc822b021773df9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ami a Symlinkekkel kezd\u0151dik, az a Terraform. A Terraformban sok ism\u00e9tl\u0151d\u0151 k\u00f3d tal\u00e1lhat\u00f3. P\u00e9ld\u00e1ul a provider h\u00edv\u00e1sa szinte mindenhol, ahol egy infrastrukt\u00fara darabot l\u00e9trehozunk, ugyanaz. \u00cdgy \u00e9sszer\u0171, hogy k\u00fcl\u00f6n mapp\u00e1ba helyezz\u00fck. \u00c9s mindenhol, ahol sz\u00fcks\u00e9ges, a provider sz\u00e1m\u00e1ra Symlinkeket kell l\u00e9trehozni erre a f\u00e1jlra. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6dcf36cc8c94e7a70cf6ab1456cc1215.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul, ha a produkci\u00f3s k\u00f6rnyezetben haszn\u00e1lt assume role lehet\u0151v\u00e9 teszi, hogy jogosults\u00e1gokat szerezz\u00fcnk egy k\u00fcls\u0151 Amazon-fi\u00f3khoz. Ha megv\u00e1ltoztatunk egy f\u00e1jlt, az \u00f6sszes t\u00f6bbi, amely a forr\u00e1st\u00e9rf\u00e1ban van, megkapja a sz\u00fcks\u00e9ges jogosults\u00e1gokat, hogy a Terraform tudja, melyik Amazon szegmenshez kell fordulnia. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6df9a89ef48ae9a7adda7fb1f86b76aa.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hol nem m\u0171k\u00f6dnek a Symlinkek? Ahogy mondtam, a Terraform \u00e1llom\u00e1nyf\u00e1jlokat haszn\u00e1l. \u00c9s ezek nagyon-nagyon klasszak. De a l\u00e9nyeg az, hogy a Terraform az els\u0151 l\u00e9p\u00e9sben inicializ\u00e1lja a backendet. \u00c9s nem haszn\u00e1lhat semmilyen v\u00e1ltoz\u00f3t ezekben a param\u00e9terekben, azokat mindig sz\u00f6vegk\u00e9nt kell megadni. <\/p>\n<p><\/p>\n<p>\u00cdgy amikor valaki \u00faj er\u0151forr\u00e1st hoz l\u00e9tre, a k\u00f3d egy r\u00e9sz\u00e9t m\u00e1s mapp\u00e1kb\u00f3l m\u00e1solja. \u00c9s hib\u00e1zhat a kulccsal vagy a bucket-tel. P\u00e9ld\u00e1ul a sandboxb\u00f3l k\u00e9sz\u00edt egy sandbox dolgot, majd \u00e1tkapcsol a produkci\u00f3ra. \u00cdgy el\u0151fordulhat, hogy a produkci\u00f3s bucket a sandboxb\u00f3l ker\u00fcl felhaszn\u00e1l\u00e1sra. Persze, ezt gyorsan \u00e9szreveszik. Lehet, hogy jav\u00edtani tudj\u00e1k, de ett\u0151l f\u00fcggetlen\u00fcl ez id\u0151- \u00e9s er\u0151forr\u00e1spazarl\u00e1s. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/757294dc6a1a27fc4a5fe174cc4aa7d7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit tehet\u00fcnk ezut\u00e1n? Miel\u0151tt a Terraformmal dolgozn\u00e1nk, inicializ\u00e1lni kell. Az inicializ\u00e1l\u00e1s sor\u00e1n a Terraform let\u00f6lti az \u00f6sszes plugint. Ezek egy id\u0151ben monolitb\u00f3l mikroservices architekt\u00far\u00e1ra estek sz\u00e9t. Mindig meg kell csin\u00e1lni a Terraform init-et, hogy leh\u00fazza az \u00f6sszes modult, az \u00f6sszes plugint.<\/p>\n<p><\/p>\n<p>Haszn\u00e1lhatunk egy shell-scriptet, amely el\u0151sz\u00f6r is, k\u00e9pes kiolvasni az \u00f6sszes v\u00e1ltoz\u00f3t. A shell-scriptnek nincsenek korl\u00e1tai. M\u00e1sodszor, az utak. Ha mindig azt az utat haszn\u00e1ljuk, amely a rep\u00f3ban van, mint kulcs az \u00e1llom\u00e1nyf\u00e1jlhoz, \u00edgy a hiba kiz\u00e1rt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b70dbc6d8edb1b255c64d722a7e40680.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Honnan szerezz\u00fck az adatokat? JSON-f\u00e1jl. A Terraform lehet\u0151v\u00e9 teszi, hogy az infrastrukt\u00far\u00e1t ne csak hcl (HashiCorp Configuration Language) form\u00e1tumban, hanem JSON-ban is r\u00f6gz\u00edts\u00fck.<\/p>\n<p><\/p>\n<p>A JSON k\u00f6nnyen olvashat\u00f3 a shell-scriptekb\u0151l. Ennek megfelel\u0151en elhelyezhetj\u00fck a konfigur\u00e1ci\u00f3s f\u00e1jlt a buckethez. \u00c9s ezt a bucketet haszn\u00e1lhatjuk a Terraform k\u00f3dban \u00e9s a shell-scriptben az inicializ\u00e1l\u00e1shoz. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/a18b92cac763003ec49af8d4a37e19d9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi\u00e9rt fontos, hogy legyen egy bucket a Terraform sz\u00e1m\u00e1ra? Mert l\u00e9tezik egy dolog, amit remote state f\u00e1jloknak h\u00edvunk. Azaz, amikor egy er\u0151forr\u00e1st hozok l\u00e9tre, ahhoz, hogy azt mondhassam az Amazonnak: \u201eK\u00e9rlek, ind\u00edts el egy instance-t\u201d, nagyon sok k\u00f6telez\u0151 param\u00e9tert kell megadnom. <\/p>\n<p><\/p>\n<p>Ezeket az azonos\u00edt\u00f3kat egy m\u00e1sik mapp\u00e1ban t\u00e1rolj\u00e1k. \u00c9s azt mondhatom: \u201eTerraform, k\u00e9rlek, fuss el a megfelel\u0151 er\u0151forr\u00e1s state f\u00e1jlj\u00e1ba, \u00e9s hozd ki nekem ezeket az azonos\u00edt\u00f3kat.\u201d \u00cdgy egyfajta egys\u00e9ges\u00edt\u00e9s j\u00f6n l\u00e9tre a k\u00fcl\u00f6nb\u00f6z\u0151 r\u00e9gi\u00f3k vagy k\u00f6rnyezetek k\u00f6z\u00f6tt.<\/p>\n<p><\/p>\n<p>Nem mindig haszn\u00e1lhat\u00f3 t\u00e1voli state f\u00e1jl. P\u00e9ld\u00e1ul, amikor manu\u00e1lisan hoztunk l\u00e9tre egy VPC-t. \u00c9s az a Terraform k\u00f3d, amely a VPC-t hozza l\u00e9tre, olyan m\u00e9rt\u00e9kben elt\u00e9r\u0151 VPC-t hoz l\u00e9tre, hogy nagyon hossz\u00fa id\u0151be telik majd az egyiket a m\u00e1sikhoz igaz\u00edtani, ez\u00e9rt haszn\u00e1lhatunk egy k\u00f6vetkez\u0151 tr\u00fckk\u00f6t. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/04ffcd97e2fae323d9b4d81e5f6c751a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Azaz k\u00e9sz\u00edts\u00fcnk egy modult, amely \u00fagy tesz, mintha VPC-t k\u00e9sz\u00edtene, \u00e9s egyfajta azonos\u00edt\u00f3kat adna \u00e1t nek\u00fcnk, de val\u00f3j\u00e1ban van egy f\u00e1jl benne, kem\u00e9nyk\u00f3dolt \u00e9rt\u00e9kekkel, amelyet fel lehet haszn\u00e1lni ugyanannak az instance-nek a l\u00e9trehoz\u00e1s\u00e1hoz.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9cd878c459f377caf5af9bf27b026187.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nem mindig sz\u00fcks\u00e9ges a state f\u00e1jlt a felh\u0151ben t\u00e1rolni. P\u00e9ld\u00e1ul, amikor modulokat tesztel\u00fcnk, haszn\u00e1lhatunk backend inicializ\u00e1ci\u00f3t, amikor a f\u00e1jl csak a lemezen lesz t\u00e1rolva a tesztel\u00e9s ideje alatt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/70fee8d4105cfddacafeec00825127b5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most egy kicsit a tesztel\u00e9sr\u0151l. Mit lehet tesztelni a Terraform-ban? Val\u00f3sz\u00edn\u0171leg sok mindent, de \u00e9n ezekr\u0151l a 4 dologr\u00f3l fogok besz\u00e9lni.<\/p>\n<p><\/p>\n<p>A HashiCorpnak van egy elk\u00e9pzel\u00e9se arr\u00f3l, hogyan kell form\u00e1zni a Terraform k\u00f3dot. A Terraform fmt lehet\u0151v\u00e9 teszi sz\u00e1modra, hogy a szerkesztett k\u00f3dodat ennek az elk\u00e9pzel\u00e9snek megfelel\u0151en form\u00e1zd. Ez\u00e9rt a teszteknek felt\u00e9tlen\u00fcl ellen\u0151rizni\u00fck kell, hogy a form\u00e1z\u00e1s megfelel-e a HashiCorp \u00e1ltal el\u0151\u00edrtaknak, hogy ne kelljen megv\u00e1ltoztatni a z\u00e1r\u00f3jelek elhelyez\u00e9s\u00e9t stb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/bb99ffdd9f963f0f44ea7b5379689737.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 a Terraform validate. Ez egy kicsit t\u00f6bbet csin\u00e1l, mint a szintaxis ellen\u0151rz\u00e9se \u2014 mint p\u00e9ld\u00e1ul, hogy minden z\u00e1r\u00f3jel p\u00e1rba van-e \u00e1ll\u00edtva. Mi itt a fontos? Az infrastrukt\u00far\u00e1nk nagyon sz\u00e9lesk\u00f6r\u0171. Nagyon sok k\u00fcl\u00f6nb\u00f6z\u0151 mappa tal\u00e1lhat\u00f3 benne. \u00c9s mindegyikre le kell futtatni a Terraform validate-et.<\/p>\n<p><\/p>\n<p>Teh\u00e1t, hogy felgyors\u00edtsuk a tesztel\u00e9st, p\u00e1rhuzamosan t\u00f6bb folyamatot ind\u00edtunk, kihaszn\u00e1lva a p\u00e1rhuzamoss\u00e1got. <\/p>\n<p><\/p>\n<p>A p\u00e1rhuzamoss\u00e1g egy nagyon klassz dolog, haszn\u00e1lj\u00e1tok.<\/p>\n<p><\/p>\n<p>De minden alkalommal, amikor a Terraform inicializ\u00e1l\u00e1sra ker\u00fcl, elmegy a HashiCorp-ra \u00e9s megk\u00e9rdezi: \u201eMik az utols\u00f3 plugin verzi\u00f3k? Az a plugin, ami a cache-ben van \u2013 az az-e vagy nem?\u201d Ez pedig minden l\u00e9p\u00e9sn\u00e9l k\u00e9sleltet\u00e9st okoz. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/836e90327c7a60c493f42f0a055e248b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ha a Terraform-ot t\u00e1j\u00e9koztatj\u00e1k arr\u00f3l, hol tal\u00e1lhat\u00f3ak a pluginok, akkor a Terraform megmondja: \u201eRendben, val\u00f3sz\u00edn\u0171leg ez a legfrissebb, ami van. Nem megyek sehov\u00e1, azonnal elkezdem valid\u00e1lni a Terraform k\u00f3dodat.\u201d<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8ab344cf8de7087d30a1212d44691c20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahhoz, hogy a megfelel\u0151 pluginokkal t\u00f6lts\u00fck fel a mapp\u00e1t, van egy nagyon egyszer\u0171 Terraform-k\u00f3dunk, amit csak inicializ\u00e1lni kell. Itt term\u00e9szetesen fel kell t\u00fcntetni az \u00f6sszes szolg\u00e1ltat\u00f3t, aki r\u00e9szt vesz a k\u00f3dodban, k\u00fcl\u00f6nben a Terraform azt mondja: \u201eNem ismerem ezt a szolg\u00e1ltat\u00f3t, mert nincs a cache-ben.\u201d<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b8130753045624d38bce32ba08b56fb0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 l\u00e9p\u00e9s a Terraform terv. Ahogy mondtam, a fejleszt\u00e9s ciklikus. K\u00f3dot k\u00e9sz\u00edt\u00fcnk v\u00e1ltoztat\u00e1sokkal. \u00c9s ut\u00e1na meg kell tudni, hogy milyen v\u00e1ltoz\u00e1sok tervezettek az infrastrukt\u00far\u00e1ra. <\/p>\n<p><\/p>\n<p>\u00c9s amikor az infrastrukt\u00fara nagyon-nagyon nagy, lehet kicser\u00e9lni egy modult, megjav\u00edtani valamilyen tesztk\u00f6rnyezetet vagy egy adott r\u00e9gi\u00f3t, \u00e9s t\u00f6nkretenni egy szomsz\u00e9dos r\u00e9szt. Ez\u00e9rt a Terraform tervet az eg\u00e9sz infrastrukt\u00far\u00e1ra kell k\u00e9sz\u00edteni, \u00e9s meg kell mutatnia, hogy milyen v\u00e1ltoz\u00e1sok tervezettek.<\/p>\n<p><\/p>\n<p>Ezt okosan is lehet csin\u00e1lni. P\u00e9ld\u00e1ul \u00edrtunk egy Python szkriptet, ami megoldja a f\u00fcgg\u0151s\u00e9geket. \u00c9s att\u00f3l f\u00fcgg\u0151en, hogy mi v\u00e1ltozott: Terraform modul vagy valamilyen konkr\u00e9t komponens, terveket k\u00e9sz\u00edt az \u00f6sszes f\u00fcgg\u0151 mapp\u00e1ra.<\/p>\n<p><\/p>\n<p>A Terraform tervet k\u00e9r\u00e9sre kell k\u00e9sz\u00edteni. Legal\u00e1bbis ezt csin\u00e1ljuk mi. <\/p>\n<p><\/p>\n<p>Term\u00e9szetesen j\u00f3 tesztelni minden v\u00e1ltoztat\u00e1sn\u00e1l, minden elk\u00f6telez\u00e9sn\u00e9l, de a tervek \u2013 ezek el\u00e9g dr\u00e1ga dolgok. \u00c9s mi a pull requestben azt mondjuk: \u201eK\u00e9rlek, adj nekem terveket\u201d. Elindul egy robot, \u00e9s megk\u00fcldi a megjegyz\u00e9sekben vagy mell\u00e9kletk\u00e9nt az \u00f6sszes tervet, ami a v\u00e1ltoztat\u00e1saidb\u00f3l ad\u00f3dik. <\/p>\n<p><\/p>\n<p>A terv \u2013 el\u00e9g dr\u00e1ga dolog. Id\u0151t vesz ig\u00e9nybe, mert a Terraform elmegy az Amazonra \u00e9s megk\u00e9rdezi: \u201eM\u00e9g l\u00e9tezik ez az instance? Ennek az autoscale-nek biztosan ilyen param\u00e9terei vannak?\u201d \u00c9s annak \u00e9rdek\u00e9ben, hogy ezt felgyors\u00edtsuk, haszn\u00e1lhatjuk a refresh=false param\u00e9tert. Ez azt jelenti, hogy a Terraform az S3-b\u00f3l fogja lek\u00e9rni az \u00e1llapotot. \u00c9s hinni fogja, hogy az \u00e1llapot pontosan megfelel annak, ami az Amazonban tal\u00e1lhat\u00f3.<\/p>\n<p><\/p>\n<p>Ez a Terraform terv sokkal gyorsabb, de az \u00e1llapotnak meg kell felelnie az infrastrukt\u00far\u00e1j\u00e1nak, azaz valahol, valamikor futtatnia kell a Terraform refresh-t. A Terraform refresh pontosan azt csin\u00e1lja, hogy az \u00e1llapot megfeleljen annak, ami a t\u00e9nyleges infrastrukt\u00far\u00e1ban tal\u00e1lhat\u00f3. <\/p>\n<p><\/p>\n<p>\u00c9s besz\u00e9lni kell a biztons\u00e1gr\u00f3l. Ezt kellett volna kezdeni. Ott, ahol futtatja a Terraform-ot, \u00e9s a Terraform az infrastrukt\u00far\u00e1j\u00e1val dolgozik, van egy sebezhet\u0151s\u00e9g. Azaz l\u00e9nyeg\u00e9ben k\u00f3dot futtat. \u00c9s ha a pull request olyan rosszindulat\u00fa k\u00f3dot tartalmaz, akkor ez v\u00e9grehajthat\u00f3 egy olyan infrastrukt\u00far\u00e1n, amelynek t\u00fal sok hozz\u00e1f\u00e9r\u00e9se van. Ez\u00e9rt legy\u00fcnk \u00f3vatosak, hol futtatjuk a Terraform tervet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/2153cc01acf2b1f46978f837b82b317e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 t\u00e9ma, amir\u0151l szeretn\u00e9k besz\u00e9lni, a user-data tesztel\u00e9se.<\/p>\n<p><\/p>\n<p>Mi az a user-data? Az Amazonn\u00e1l, amikor instance-ot hozunk l\u00e9tre, k\u00fcldhet\u00fcnk egy levelet az instance-b\u00f3l - meta-adatokat. Amikor az instance elindul, a cloud init \u00e1ltal\u00e1ban mindig jelen van ezeken az instance-okon. A cloud init elolvassa ezt a levelet, \u00e9s azt mondja: \u201eRendben, ma \u00e9n egy load balancer vagyok\u201d. \u00c9s ezeknek az utas\u00edt\u00e1soknak megfelel\u0151en alakulnak az esem\u00e9nyek.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/406ac9341e102f5e0d7ca239d10675cd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De sajnos, amikor Terraform tervet \u00e9s Terraform alkalmaz\u00e1st v\u00e9gz\u00fcnk, a user-data \u00fagy n\u00e9z ki, mint egy ilyen sz\u00e1mokb\u00f3l \u00e1ll\u00f3 p\u00e9p. Azaz csak egy hash-t k\u00fcld el \u00d6nnek. \u00c9s amit a tervben n\u00e9zhet, az az, hogy lesznek-e v\u00e1ltoz\u00e1sok, vagy a hash ugyanaz marad. <\/p>\n<p><\/p>\n<p>Ha erre nem figyel\u00fcnk, akkor az Amazonra, a t\u00e9nyleges infrastrukt\u00far\u00e1ra egy s\u00e9r\u00fclt sz\u00f6vegf\u00e1jl is t\u00e1vozhat. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/cd7b56f1149d9cbebb0ad3228c0eeb5f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alternat\u00edv megold\u00e1sk\u00e9nt a v\u00e9grehajt\u00e1s sor\u00e1n megadhatjuk nem az eg\u00e9sz infrastrukt\u00far\u00e1t, hanem csak a template-et. \u00c9s a k\u00f3dban azt mondhatjuk: \u201eK\u00e9rlek, jelen\u00edtsd meg nekem ezt a template-et\u201d. \u00cdgy v\u00e9g\u00fcl kinyomtathatjuk, hogy hogyan fog megjelenni az adatai az Amazonon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/86da779cdf7f9cacfd80a196efde47f7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Egy m\u00e1sik lehet\u0151s\u00e9g, hogy modulokat haszn\u00e1lunk a user-data gener\u00e1l\u00e1s\u00e1ra. Alkalmazza ezt a modult. Kap egy f\u00e1jlt a lemezen. \u00d6sszehasonl\u00edtja a referencia f\u00e1jllal. \u00cdgy, ha egy junior kicsit m\u00f3dos\u00edtani pr\u00f3b\u00e1l a user-data-n, a tesztjei azt fogj\u00e1k mondani: \u201eRendben, itt \u00e9s itt vannak v\u00e1ltoz\u00e1sok - ez rendben van\u201d.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/7e69ec1b2c04710066d93ee48f872254.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 t\u00e9ma, amir\u0151l szeretn\u00e9k besz\u00e9lni, az Automate Terraform apply.<\/p>\n<p><\/p>\n<p>Term\u00e9szetesen meglehet\u0151sen ijeszt\u0151 a Terraform apply automatiz\u00e1lt m\u00f3don t\u00f6rt\u00e9n\u0151 v\u00e9grehajt\u00e1sa, mert ki tudja, milyen v\u00e1ltoz\u00e1sok j\u00f6ttek, \u00e9s mennyire lehetnek k\u00e1rosak az \u00e9l\u0151 infrastrukt\u00far\u00e1ra. <\/p>\n<p><\/p>\n<p>A tesztk\u00f6rnyezet eset\u00e9ben ez teljesen rendben van. Vagyis a feladat, amely l\u00e9trehozza a tesztk\u00f6rnyezetet, az minden fejleszt\u0151 sz\u00e1m\u00e1ra sz\u00fcks\u00e9ges. \u00c9s az olyan kifejez\u00e9s, mint a \u201eminden m\u0171k\u00f6d\u00f6tt\u201d \u2013 ez nem vicces m\u00e9m, hanem bizony\u00edt\u00e9k arra, hogy az illet\u0151 megoldotta a probl\u00e9m\u00e1t, fel\u00e1ll\u00edtotta a stack-et, futtatta a teszteket ezen a stack-en. \u00c9s meger\u0151s\u00edtette, hogy minden rendben van, \u00e9s azt mondta: \u201eRendben, az a k\u00f3d, amelyet kiadok, tesztelve lett.\u201d<\/p>\n<p><\/p>\n<p>A production, sandbox \u00e9s m\u00e1s k\u00f6rnyezetek eset\u00e9ben, amelyek fontosabbak a v\u00e1llalat sz\u00e1m\u00e1ra, a forr\u00e1sok egy r\u00e9sz\u00e9t biztons\u00e1gosan lehet alkalmazni, mert ez nem vezet ahhoz, hogy b\u00e1rki meghal. Ezek lehetnek: autoscale csoportok, security csoportok, szerepek, route53, \u00e9s a lista el\u00e9g hossz\u00fa lehet. De figyeljetek arra, hogy mi t\u00f6rt\u00e9nik, olvass\u00e1tok az automatikus alkalmaz\u00e1sokr\u00f3l sz\u00f3l\u00f3 jelent\u00e9seket. <\/p>\n<p><\/p>\n<p>Ahol a haszn\u00e1lat vesz\u00e9lyes vagy ijeszt\u0151, p\u00e9ld\u00e1ul, ha ez valamilyen elj\u00e1r\u00e1s a persistent forr\u00e1sokkal, adatb\u00e1zisokkal kapcsolatos, akkor k\u00e9rjetek jelent\u00e9seket arr\u00f3l, hogy az infrastrukt\u00far\u00e1ban van-e alkalmaz\u00e1sra v\u00e1r\u00f3 m\u00f3dos\u00edt\u00e1s. Az engineer m\u00e1r fel\u00fcgyelt k\u00f6rnyezetben ind\u00edtja a feladatokat, hogy alkalmazza \u0151ket, vagy saj\u00e1t konzolj\u00e1n v\u00e9gzi el. <\/p>\n<p><\/p>\n<p>Az Amazonban van egy olyan dolog, mint a Terminate protection. Ez bizonyos esetekben megv\u00e9dhet a nem k\u00edv\u00e1nt m\u00f3dos\u00edt\u00e1sokt\u00f3l. Vagyis a Terraform bemegy az Amazonba, \u00e9s azt mondja: \u201eMeg kell \u00f6ln\u00f6m ezt az instance-t, hogy \u00fajat k\u00e9sz\u00edtsek.\u201d Az Amazon pedig azt v\u00e1laszolja: \u201eSajn\u00e1lom, nem ma. Van Terminate protection n\u00e1lunk.\u201d<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9f4258d8688556829586a1e308f5a1e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A torta teteje pedig a k\u00f3d optimaliz\u00e1l\u00e1sa. Amikor a Terraform k\u00f3ddal dolgozunk, nagyon sok param\u00e9tert kell \u00e1tadnunk a modulnak. Ezek azok a param\u00e9terek, amelyek sz\u00fcks\u00e9gesek ahhoz, hogy l\u00e9trehozzunk egy forr\u00e1st. A k\u00f3d pedig nagy param\u00e9terlist\u00e1kk\u00e1 alakul, amelyeket modulr\u00f3l modulra kell \u00e1tadni, k\u00fcl\u00f6n\u00f6sen, ha a modulok be\u00e1gyazottak. <\/p>\n<p><\/p>\n<p>Ez pedig nagyon nehezen olvashat\u00f3. Nagyon neh\u00e9z \u00e1ttekinteni. Nagyon gyakran el\u0151fordul, hogy egyes param\u00e9terek \u00e1tmennek az \u00e1ttekint\u00e9sen, \u00e9s nem pontosan azok, amelyekre sz\u00fcks\u00e9g van. Ennek jav\u00edt\u00e1sa id\u0151be \u00e9s p\u00e9nzbe ker\u00fcl k\u00e9s\u0151bb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/ad7e8a91692212fda9f2561854b881c9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez\u00e9rt aj\u00e1nlom nektek, hogy haszn\u00e1ljatok egy olyan megold\u00e1st, mint a bonyolult param\u00e9ter, amely tartalmaz egy \u00e9rt\u00e9kf\u00e1t. Vagyis sz\u00fcks\u00e9getek van egy mapp\u00e1ra, ahol meg vannak adva azok az \u00e9rt\u00e9kek, amelyeket szeretn\u00e9tek l\u00e1tni egy adott k\u00f6rnyezetben.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/909632949eb30057bf86b116239d9077.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezzel a modul seg\u00edts\u00e9g\u00e9vel egy olyan f\u00e1t kaphatunk, amely egy \u00e1ltal\u00e1nos modulban gener\u00e1l\u00f3dik, azaz egy olyan \u00e1ltal\u00e1nos modulban, amely minden infrastrukt\u00far\u00e1ra egyform\u00e1n m\u0171k\u00f6dik.<\/p>\n<p><\/p>\n<p>Ebben a modulban elv\u00e9gezhet bizonyos sz\u00e1m\u00edt\u00e1sokat, haszn\u00e1lva a Terraform egyik \u00faj funkci\u00f3j\u00e1t, a locals-t. Ezut\u00e1n egy output seg\u00edts\u00e9g\u00e9vel kiadhatunk egy \u00f6sszetett param\u00e9tert, amely tartalmazhat hasht, t\u00f6mb\u00f6ket stb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/25c14e0397f8d95c301e0dfe6ae761df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezek voltak az utols\u00f3 legjobb felfedez\u00e9seim. Szeretn\u00e9m megosztani egy t\u00f6rt\u00e9netet Kolumbuszr\u00f3l. Amikor p\u00e9nzt keresett exped\u00edci\u00f3j\u00e1ra, hogy felfedezze Indi\u00e1t (ahogyan akkor gondolta), senki nem hitt neki, \u00e9s azt mondt\u00e1k, hogy ez lehetetlen. Akkor azt mondta: \"Tegye \u00fagy, hogy a toj\u00e1s ne essen le.\" Minden bank\u00e1r, nagyon gazdag \u00e9s val\u00f3sz\u00edn\u0171leg okos ember megpr\u00f3b\u00e1lta valahogy megd\u00f6nteni a toj\u00e1st, de az folyamatosan leesett. Akkor Kolumbusz vette a toj\u00e1st, egy kicsit megnyomta. A h\u00e9j megszorult, \u00e9s a toj\u00e1s mozdulatlan maradt. Azt mondt\u00e1k: \"\u00d3, ez t\u00fal egyszer\u0171!\". Kolumbusz v\u00e1laszolt: \"Igen, ez t\u00fal egyszer\u0171. Amikor felfedezem Indi\u00e1t, mindenki ezt a kereskedelmi \u00fatvonalat fogja haszn\u00e1lni.\" <\/p>\n<p><\/p>\n<p>Amit most elmondtam, azok val\u00f3sz\u00edn\u0171leg viszonylag egyszer\u0171 \u00e9s trivialis dolgok. Amikor tudom\u00e1st szerzel r\u00f3luk \u00e9s elkezded haszn\u00e1lni, ez mag\u00e1t\u00f3l \u00e9rtet\u0151d\u0151. Haszn\u00e1lj\u00e1tok \u0151ket. \u00c9s ha sz\u00e1motokra ezek teljesen norm\u00e1lis dolgok, akkor legal\u00e1bb tudj\u00e1tok, hogyan \u00e1ll\u00edts\u00e1tok fel a toj\u00e1st, hogy ne essen le. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/37bf83d04b99f089f2319c8d2e8aaeb4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00d6sszefoglalva: <\/p>\n<p><\/p>\n<ul>\n<li>Pr\u00f3b\u00e1lja elker\u00fclni a h\u00f3pehely probl\u00e9m\u00e1kat. Min\u00e9l kevesebb h\u00f3pehely van, ann\u00e1l kevesebb er\u0151forr\u00e1sra lesz sz\u00fcks\u00e9ge a nagy infrastrukt\u00far\u00e1j\u00e1ban t\u00f6rt\u00e9nt v\u00e1ltoz\u00e1sok kezel\u00e9s\u00e9re. <\/li>\n<li>Folyamatos v\u00e1ltoztat\u00e1sok. Azaz, amikor a k\u00f3dban valami v\u00e1ltoz\u00e1s t\u00f6rt\u00e9nik, a lehet\u0151 leggyorsabban korszer\u0171s\u00edteni kell az infrastrukt\u00far\u00e1j\u00e1t ezekkel a v\u00e1ltoztat\u00e1sokkal. Nem lehet olyan helyzet, hogy valaki k\u00e9t-h\u00e1rom h\u00f3nap m\u00falva j\u00f6n, hogy megn\u00e9zze az Elasticsearch-t, csin\u00e1l egy Terraform plan-t, \u00e9s ott rengeteg v\u00e1ratlan v\u00e1ltoz\u00e1s tal\u00e1lhat\u00f3. Nagy id\u0151t ig\u00e9nyel, hogy vissza\u00e1ll\u00edtsuk mindent rendbe. <\/li>\n<li>Tesztel\u00e9s \u00e9s automatiz\u00e1l\u00e1s. Min\u00e9l t\u00f6bb k\u00f3d van lefedve tesztekkel \u00e9s funkci\u00f3kkal, ann\u00e1l nagyobb a bizalom, hogy mindent helyesen csin\u00e1l. Az automatikus sz\u00e1ll\u00edt\u00e1s t\u00f6bbsz\u00f6r\u00f6s bizalmat fog n\u00f6velni. <\/li>\n<li>A teszt- \u00e9s a termel\u00e9si k\u00f6rnyezet k\u00f3dja gyakorlatilag azonos kell, hogy legyen. Gyakorlatilag, mert a termel\u00e9si k\u00f6rnyezet egy kicsit m\u00e1s, \u00e9s ott mindig lesznek olyan r\u00e9szletek, amelyek t\u00fall\u00e9pnek a tesztk\u00f6rnyezet keretein. De mindenesetre plusz-m\u00ednusz ezt lehet biztos\u00edtani. <\/li>\n<li>\u00c9s ha nagyon sok Terraform-k\u00f3dod van, \u00e9s ennek a k\u00f3dnak a karbantart\u00e1sa nagyon sok id\u0151t vesz ig\u00e9nybe, sosem k\u00e9s\u0151 refaktor\u00e1lni \u00e9s j\u00f3 form\u00e1ba hozni azt. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/68f3946536f44eed33939b234fb3ca0d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Immutable infrastrukt\u00fara. AMI sz\u00e1ll\u00edt\u00e1sa \u00fctemez\u00e9s szerint. <\/li>\n<li>Strukt\u00fara a route53-hoz, amikor nagyon sok bejegyz\u00e9sed van, \u00e9s szeretn\u00e9d, ha azok rendezett sorrendben lenn\u00e9nek. <\/li>\n<li>Harcolni az API sebess\u00e9gkorl\u00e1toz\u00e1sokkal. Ez amikor Amazon azt mondja: \"Minden, nem tudok t\u00f6bb k\u00e9r\u00e9st fogadni, k\u00e9rlek v\u00e1rj egy kicsit\". \u00c9s a c\u00e9g fele v\u00e1r, m\u00edg elind\u00edthatja az infrastrukt\u00far\u00e1j\u00e1t. <\/li>\n<li>Spot p\u00e9ld\u00e1nyok. Az Amazon nem olcs\u00f3, \u00e9s a spotok rengeteget sp\u00f3rolhatnak. Err\u0151l eg\u00e9sz el\u0151ad\u00e1st lehetne tartani. <\/li>\n<li>Biztons\u00e1g \u00e9s IAM szerepk\u00f6r\u00f6k. <\/li>\n<li>Elveszett er\u0151forr\u00e1sok keres\u00e9se, amikor az Amazonban vannak ismeretlen eredet\u0171 p\u00e9ld\u00e1nyok, amelyek p\u00e9nzt k\u00f6ltenek. M\u00e9g ha egy p\u00e9ld\u00e1ny havi 100-150 doll\u00e1rt is \u00e9r, az \u00e9vente t\u00f6bb mint 1000 doll\u00e1r. Az ilyen er\u0151forr\u00e1sok keres\u00e9se j\u00f6vedelmez\u0151 \u00fczlet. <\/li>\n<li>\u00c9s a fenntartott p\u00e9ld\u00e1nyok. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Terraform mint\u00e1k a k\u00e1osz \u00e9s a k\u00e9zi rutin kezel\u00e9s\u00e9re. Maxim Kostrykin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/69ddbf4c726bcc15aea1a1e2d67a3fc8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ennyit r\u00f3lam. A Terraform nagyon klassz, haszn\u00e1lj\u00e1tok. K\u00f6sz\u00f6n\u00f6m!<\/p>\n<p><\/p>\n<p>K\u00e9rd\u00e9sek<\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6nj\u00fck az el\u0151ad\u00e1st! Az \u00e1llom\u00e1nyod az S3-ban van, de hogyan oldj\u00e1tok meg azt a probl\u00e9m\u00e1t, ha t\u00f6bben is megpr\u00f3b\u00e1lj\u00e1k let\u00f6lteni ezt az \u00e1llom\u00e1nyt \u00e9s \u00e1t\u00e1llni?<\/em><\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is, nem siet\u00fcnk. M\u00e1sodszor, vannak flags, amivel jelezz\u00fck, hogy egy k\u00f3d egy r\u00e9sz\u00e9n dolgozunk. Azaz, b\u00e1r az infrastrukt\u00fara nagyon nagy, ez nem jelenti azt, hogy folyamatosan valaki valamit alkalmaz. Amikor akt\u00edv f\u00e1zis volt, ez probl\u00e9ma volt, az \u00e1llom\u00e1nyaink a Git-ben t\u00e1rol\u00f3dtak. Ez fontos volt, k\u00fcl\u00f6nben valaki l\u00e9trehoz egy \u00e1llom\u00e1nyt, \u00e9s nek\u00fcnk manu\u00e1lisan kellett \u00f6sszeszedn\u00fcnk \u0151ket, hogy minden tov\u00e1bbi folytat\u00f3dhasson. Most ilyen probl\u00e9ma nincs. Egy\u00e9bk\u00e9nt a Terraform megoldotta ezt a feladatot. Ha folyamatosan v\u00e1ltozik valami, akkor haszn\u00e1lhat\u00f3k a z\u00e1rol\u00e1sok, amelyek megakad\u00e1lyozz\u00e1k, amir\u0151l besz\u00e9lt\u00e9l.<\/p>\n<p><\/p>\n<p><em>Ti az ingyenes verzi\u00f3t vagy az enterprise-t haszn\u00e1lj\u00e1tok?<\/em><\/p>\n<p><\/p>\n<p>Nincs enterprise, azaz minden, amit ingyen el lehet t\u00f6lteni. <\/p>\n<p><\/p>\n<p><em>A nevem Sztanyiszl\u00e1v. Szerettem volna egy kis kieg\u00e9sz\u00edt\u00e9st tenni. Besz\u00e9lt\u00e9l az Amazon funkci\u00f3j\u00e1r\u00f3l, amely lehet\u0151v\u00e9 teszi, hogy az instance ne lehessen elpuszt\u00edtani. Ez a Terraform-ban is megtal\u00e1lhat\u00f3, a Life Second blokkban meg lehet hat\u00e1rozni a m\u00f3dos\u00edt\u00e1s vagy az elt\u00e1vol\u00edt\u00e1s megszor\u00edt\u00e1s\u00e1t.<\/em> <\/p>\n<p><\/p>\n<p>Id\u0151ben korl\u00e1tozva voltam. J\u00f3 megjegyz\u00e9s. <\/p>\n<p><\/p>\n<p><em>M\u00e9g k\u00e9t dolgot szerettem volna megk\u00e9rdezni. El\u0151sz\u00f6r is, besz\u00e9lt\u00e9l a tesztel\u00e9sr\u0151l. Haszn\u00e1lt\u00e1l valamilyen tesztel\u0151 eszk\u00f6zt? Hallottam a Test Kitchen pluginr\u00f3l. Lehet, hogy van m\u00e9g valami. \u00c9s szeretn\u00e9m m\u00e9g megk\u00e9rdezni a Local Values-r\u00f3l. Miben k\u00fcl\u00f6nb\u00f6znek az Input Variables-t\u00f3l? \u00c9s mi\u00e9rt nem tudok valamit csak Local Values-on kereszt\u00fcl param\u00e9terezni? Pr\u00f3b\u00e1ltam meg\u00e9rteni ezt a t\u00e9m\u00e1t, de valahogy nem siker\u00fclt.<\/em><\/p>\n<p><\/p>\n<p>R\u00e9szletesebben besz\u00e9lhet\u00fcnk err\u0151l a teremben. A tesztel\u0151 eszk\u00f6zeink teljesen h\u00e1zi k\u00e9sz\u00edt\u00e9s\u0171ek. Nincs semmi, amivel tesztelni lehessen. \u00c1ltal\u00e1ban vannak olyan lehet\u0151s\u00e9gek, amikor az automatikus tesztek felszedik az infrastrukt\u00far\u00e1t valahol, ellen\u0151rzik, hogy rendben van-e, majd mindent elpuszt\u00edtanak egy jelent\u00e9ssel, hogy az infrastrukt\u00far\u00e1d m\u00e9g mindig j\u00f3 \u00e1llapotban van. N\u00e1lunk ez nincs, mert a tesztel\u0151 k\u00f6tegek minden nap futnak. Ez elegend\u0151. Ha valami elkezd romlani, akkor az \u00fagyis el fog romlani an\u00e9lk\u00fcl, hogy m\u00e1shol ellen\u0151rizn\u00e9nk. <\/p>\n<p><\/p>\n<p>A Local Values-r\u00f3l folytassuk a besz\u00e9lget\u00e9st a teremben. <\/p>\n<p><\/p>\n<p><em>Hell\u00f3! K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! Nagyon tanuls\u00e1gos. Azt mondtad, hogy nagyon sok hasonl\u00f3 k\u00f3dotok van az infrastrukt\u00fara le\u00edr\u00e1s\u00e1ra. Nem fontolgatt\u00e1tok a k\u00f3d gener\u00e1l\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9t?<\/em><\/p>\n<p><\/p>\n<p>Kiv\u00e1l\u00f3 k\u00e9rd\u00e9s, k\u00f6sz\u00f6n\u00f6m! Az a helyzet, hogy amikor infrastrukt\u00far\u00e1t k\u00f3d form\u00e1j\u00e1ban haszn\u00e1lunk, felt\u00e9telezz\u00fck, hogy megn\u00e9zz\u00fck a k\u00f3dot, \u00e9s meg\u00e9rtj\u00fck, milyen infrastrukt\u00fara rejlik m\u00f6g\u00f6tte. Ha a k\u00f3dot gener\u00e1lj\u00e1k, akkor meg kell \u00e9rten\u00fcnk, hogy milyen k\u00f3dot fognak gener\u00e1lni, hogy tudjuk, milyen infrastrukt\u00fara lesz ott. Vagy gener\u00e1lunk egy k\u00f3dot, elk\u00f6telezz\u00fck azt, \u00e9s l\u00e9nyeg\u00e9ben ugyanazt kapjuk. Ez\u00e9rt azon az \u00faton indultunk el, ahogyan meg\u00edrtuk, ezzel megkaptuk. R\u00e1ad\u00e1sul a gener\u00e1torok k\u00e9s\u0151bb jelentek meg, amikor elkezdt\u00fck csin\u00e1lni. M\u00e1r k\u00e9s\u0151 volt v\u00e1ltani.<\/p>\n<p><\/p>\n<p><em>Hallott\u00e1l a jsonnet-r\u0151l?<\/em><\/p>\n<p><\/p>\n<p>Nem. <\/p>\n<p><\/p>\n<p><em>N\u00e9zd, ez egy nagyon klassz dolog. L\u00e1tom, hogy van egy konkr\u00e9t eset, ahol alkalmazni lehet \u00e9s gener\u00e1lni adatstrukt\u00far\u00e1t.<\/em> <\/p>\n<p><\/p>\n<p>A gener\u00e1torok j\u00f3k, mint a vicc a borotv\u00e1ra. Azaz, az els\u0151 alkalommal mindenki arca elt\u00e9r\u0151, de ut\u00e1na mindenkinek ugyanaz az arca. A gener\u00e1torok nagy sikert arattak. De sajnos, n\u00e1lunk az arcok kicsit elt\u00e9r\u0151ek. Ez probl\u00e9ma. <\/p>\n<p><\/p>\n<p><em>Csak n\u00e9zd. K\u00f6sz\u00f6n\u00f6m!<\/em><\/p>\n<p><\/p>\n<p><em>Maxim vagyok, a Sberbankt\u00f3l. Kicsit mes\u00e9ltetek arr\u00f3l, hogy megpr\u00f3b\u00e1lt\u00e1tok a Terraformot egy programoz\u00e1si nyelv anal\u00f3gj\u00e1ra hozni. Nincs egyszer\u0171bb haszn\u00e1lni az Ansible-t?<\/em><\/p>\n<p><\/p>\n<p>Ezek nagyon k\u00fcl\u00f6nb\u00f6z\u0151 dolgok. Az Ansible-lel is lehet er\u0151forr\u00e1sokat l\u00e9trehozni, \u00e9s a Puppet is tud er\u0151forr\u00e1sokat l\u00e9trehozni az Amazonban. De a Terraform kifejezetten erre k\u00e9sz\u00fclt. <\/p>\n<p><\/p>\n<p><em>Csak Amazonotok van?<\/em><\/p>\n<p><\/p>\n<p>Nem arr\u00f3l van sz\u00f3, hogy csak Amazonunk van. Szinte csak Amazonunk van. De a kulcsfontoss\u00e1g\u00fa funkci\u00f3 az, hogy a Terraform eml\u00e9kszik. Az Ansible-n\u00e9l, ha azt mondod: \u201eHozz l\u00e9tre 5 p\u00e9ld\u00e1nyt\u201d, akkor az l\u00e9trehozza, majd te mondod: \u201eMost 3 kellene\u201d. A Terraform azt mondja: \u201eOk\u00e9, kett\u0151t t\u00f6rl\u00f6k\u201d, m\u00edg az Ansible azt mondja: \u201eOk\u00e9, itt van 3\u201d. \u00d6sszesen 8.<\/p>\n<p><\/p>\n<p><em>\u00dcdv\u00f6zl\u00f6m! K\u00f6sz\u00f6n\u00f6m a prezent\u00e1ci\u00f3j\u00e1t! Nagyon \u00e9rdekfesz\u00edt\u0151 volt hallani a Terraformr\u00f3l. Azonnal szeretn\u00e9m megeml\u00edteni, hogy a Terraformnak nincs stabil kiad\u00e1sa, ez\u00e9rt nagyon \u00f3vatosan b\u00e1njon vele.<\/em><\/p>\n<p><\/p>\n<p>J\u00f3 \u00e9tkez\u00e9shez j\u00f3 kan\u00e1l. Azaz, ha sz\u00fcks\u00e9ged van egy megold\u00e1sra, akkor n\u00e9ha el kell halasztanod azt, ami instabil stb., de m\u0171k\u00f6dik \u00e9s nek\u00fcnk seg\u00edtett. <\/p>\n<p><\/p>\n<p><em>A k\u00e9rd\u00e9sem az, hogy haszn\u00e1lj\u00e1tok a Remote backendet, haszn\u00e1lj\u00e1tok az S3-at. Mi\u00e9rt nem haszn\u00e1lj\u00e1tok a hivatalos backendet?<\/em><\/p>\n<p><\/p>\n<p>Hivatalos?<\/p>\n<p><\/p>\n<p><em>Terraform Cloud.<\/em><\/p>\n<p><\/p>\n<p>Mikor jelent meg?<\/p>\n<p><\/p>\n<p><em>K\u00f6r\u00fclbel\u00fcl 4 h\u00f3napja.<\/em> <\/p>\n<p><\/p>\n<p>Ha 4 \u00e9vvel ezel\u0151tt jelent volna meg, akkor val\u00f3sz\u00edn\u0171leg v\u00e1laszoltam volna a k\u00e9rd\u00e9sedre.<\/p>\n<p><\/p>\n<p><em>M\u00e1r van be\u00e9p\u00edtett funkci\u00f3ja a z\u00e1rol\u00e1soknak, \u00e9s t\u00e1rolhatod a state f\u00e1jlt. Pr\u00f3b\u00e1ld ki. De \u00e9n sem teszteltem.<\/em><\/p>\n<p><\/p>\n<p>Nagy vonaton utazunk, ami nagy sebess\u00e9ggel halad. Nem lehet csak \u00fagy kidobni n\u00e9h\u00e1ny kocsit. <\/p>\n<p><\/p>\n<p><em>Az id\u0151j\u00e1r\u00e1sr\u00f3l besz\u00e9ltetek, mi\u00e9rt nem haszn\u00e1lt\u00e1tok a branch-t? Mi\u00e9rt nem siker\u00fclt \u00edgy megoldani?<\/em><\/p>\n<p><\/p>\n<p>N\u00e1lunk az a megk\u00f6zel\u00edt\u00e9s, hogy az eg\u00e9sz infrastrukt\u00fara egy rep\u00f3ban van. A Terraform, Puppet, minden script, ami kapcsol\u00f3dik ehhez, mind egy rep\u00f3ban van. \u00cdgy garant\u00e1lni tudjuk, hogy az inkrement\u00e1lis v\u00e1ltoz\u00e1sok egym\u00e1s ut\u00e1n tesztelve vannak. Ha ez sok branche lenne, akkor egy ilyen projektet gyakorlatilag lehetetlen karbantartani. F\u00e9l \u00e9v telik el, \u00e9s annyira elt\u00e9r\u0151ek lesznek, hogy ez valami b\u00fcntet\u00e9s. Ez az, amib\u0151l menek\u00fclni akartam a refaktor\u00e1l\u00e1s el\u0151tt. <\/p>\n<p><\/p>\n<p><em>Azaz, ez nem m\u0171k\u00f6dik?<\/em><\/p>\n<p><\/p>\n<p>Ez egy\u00e1ltal\u00e1n nem m\u0171k\u00f6dik.<\/p>\n<p><\/p>\n<p>A branch-en kiv\u00e1gtam a mappa di\u00e1it. Vagyis, ha minden tesztel\u00e9si stackhez csin\u00e1lunk egy k\u00fcl\u00f6n mapp\u00e1t, p\u00e9ld\u00e1ul az A csapatnak van egy mapp\u00e1ja, a B csapatnak meg a saj\u00e1tja, akkor ez sem m\u0171k\u00f6dik. K\u00e9sz\u00edtett\u00fcnk egy egys\u00e9ges\u00edtett k\u00f3dot a tesztk\u00f6rnyezethez, ami el\u00e9g rugalmas volt ahhoz, hogy mindenki sz\u00e1m\u00e1ra megfelel\u0151 legyen. Vagyis egy k\u00f3dot kezelt\u00fcnk. <\/p>\n<p><\/p>\n<p><em>Hell\u00f3! Az \u00e9n nevem Jura! K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! K\u00e9rd\u00e9sem van a modulokr\u00f3l. \u00d6n\u00f6k azt mondj\u00e1k, hogy modulokat haszn\u00e1lnak. Hogyan oldj\u00e1k meg, ha az egyik modulban m\u00f3dos\u00edt\u00e1sokat v\u00e9geznek, amelyek nem kompatibilisek egy m\u00e1sik szem\u00e9ly v\u00e1ltoztat\u00e1saival? Valamilyen m\u00f3don verzion\u00e1lj\u00e1k a modulokat, vagy pr\u00f3b\u00e1lnak egy bonyolult megold\u00e1st hozni, hogy megfeleljenek a k\u00e9t k\u00f6vetelm\u00e9nynek?<\/em><\/p>\n<p><\/p>\n<p>Ez egy nagy h\u00f3kupac probl\u00e9m\u00e1ja. Ezt szenvedj\u00fck el, amikor egy \u00e1rtalmatlan v\u00e1ltoztat\u00e1s t\u00f6nkretehet egy r\u00e9sz\u00e9t az infrastrukt\u00far\u00e1nak. \u00c9s ez csak hossz\u00fa id\u0151 eltelt\u00e9vel lesz \u00e9szlelhet\u0151.<\/p>\n<p><\/p>\n<p><em>Vagyis jelenleg semmilyen m\u00f3don nem old\u00f3dik meg?<\/em><\/p>\n<p><\/p>\n<p>Univerz\u00e1lis modulokat hoznak l\u00e9tre. Ker\u00fclj\u00e9k a h\u00f3pehely megold\u00e1sokat. \u00c9s minden rendben lesz. Az el\u0151ad\u00e1s m\u00e1sodik fele arr\u00f3l sz\u00f3l, hogyan lehet ezt elker\u00fclni.<\/p>\n<p><\/p>\n<p><em>\u00dcdv\u00f6zl\u00f6m! K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! Szeretn\u00e9m pontos\u00edtani. A h\u00e1tt\u00e9rben maradt egy nagy kupac, ami\u00e9rt elj\u00f6ttem. Hogyan integr\u00e1l\u00f3dnak a Puppet \u00e9s a szerepkioszt\u00e1s?<\/em><\/p>\n<p><\/p>\n<p>User-data.<\/p>\n<p><\/p>\n<p><em>Vagyis egyszer\u0171en kiveti a f\u00e1jlt, \u00e9s valahogy v\u00e9grehajtja?<\/em><\/p>\n<p><\/p>\n<p>A User-data egy megjegyz\u00e9s, vagyis amikor kl\u00f3nozunk egy k\u00e9pet, akkor elindul egy Daemon, \u00e9s pr\u00f3b\u00e1lja kider\u00edteni, hogy ki \u0151, olvassa a megjegyz\u00e9st, hogy \u0151 load balancer.<\/p>\n<p><\/p>\n<p><em>Vagyis ez valamilyen k\u00fcl\u00f6n folyamat, amely \u00e1tad\u00e1sra ker\u00fcl?<\/em><\/p>\n<p><\/p>\n<p>Nem mi tal\u00e1ltuk ki. Mi haszn\u00e1ljuk. <\/p>\n<p><\/p>\n<p><em>\u00dcdv\u00f6zl\u00f6m! Van egy k\u00e9rd\u00e9sem a User-data-val kapcsolatban. \u00d6n azt mondta, hogy ott probl\u00e9m\u00e1k mer\u00fclnek fel, hogy valaki valamit nem oda k\u00fcld\u00f6tt. Van valamilyen m\u00f3d a user-data t\u00e1rol\u00e1s\u00e1ra ugyanabban a Git-ben, hogy mindig vil\u00e1gos legyen, hogy mire hivatkozik a User-data?<\/em><\/p>\n<p><\/p>\n<p>A User-data gener\u00e1lunk a template-b\u0151l. Azaz, j\u00f6n oda egy bizonyos sz\u00e1m\u00fa v\u00e1ltoz\u00f3. A Terraform gener\u00e1lja a v\u00e9gs\u0151 eredm\u00e9nyt. Ez\u00e9rt nem lehet csak \u00fagy r\u00e1n\u00e9zni a template-re \u00e9s megmondani, hogy mi fog kis\u00fclni, mert az \u00f6sszes probl\u00e9ma azzal kapcsolatos, hogy a fejleszt\u0151 azt hiszi, hogy egy stringet ad \u00e1t ebben a v\u00e1ltoz\u00f3ban, de k\u00f6zben egy t\u00f6mb \u00e9rkezik. \u00c9s hopp, itt van \u2013 az egyes, az egyes, a k\u00f6vetkez\u0151 sor, \u00e9s minden elt\u00f6rik. Ha ez egy \u00faj er\u0151forr\u00e1s, \u00e9s az ember beind\u00edtja, \u00e9s \u00e9szreveszi, hogy valami nem m\u0171k\u00f6dik, akkor ez gyorsan megoldhat\u00f3. De ha ez egy autoscale-csoport, amely friss\u00fclt, akkor egy bizonyos pillanatban az autoscale-csoportban az instances kezd \u00e1tkonfigur\u00e1l\u00f3dni. \u00c9s hopp, valami nem m\u0171k\u00f6dik. Ez bosszant\u00f3.<\/p>\n<p><\/p>\n<p><em>Teh\u00e1t az egyetlen megold\u00e1s, hogy tesztelni kell?<\/em><\/p>\n<p><\/p>\n<p>Igen, l\u00e1tod a probl\u00e9m\u00e1t, akkor hozz\u00e1adsz tesztl\u00e9p\u00e9seket. Azaz az output-al is lehet tesztelni. Lehet, hogy nem olyan k\u00e9nyelmes, de lehet, hogy adhatsz valamilyen c\u00edmk\u00e9t \u2013 ellen\u0151rizd, hogy a User-data itt sz\u00f6gekkel van r\u00f6gz\u00edtve. <\/p>\n<p><\/p>\n<p><em>A nevem Timur. Nagyon j\u00f3, hogy vannak el\u0151ad\u00e1sok arr\u00f3l, hogyan kell j\u00f3l megszervezni a Terraform-ot.<\/em><\/p>\n<p><\/p>\n<p>M\u00e9g el sem kezdtem.<\/p>\n<p><\/p>\n<p><em>Azt hiszem, a k\u00f6vetkez\u0151 konferenci\u00e1n tal\u00e1n lesz. Van egy egyszer\u0171 k\u00e9rd\u00e9sem. Mi\u00e9rt hardcode-olod az \u00e9rt\u00e9ket egy k\u00fcl\u00f6n modulban, mi\u00e9rt nem haszn\u00e1lod a tfvars-t, azaz miben jobb a modul \u00e9rt\u00e9kekkel, mint a tfvars?<\/em><\/p>\n<p><\/p>\n<p>Teh\u00e1t itt (dia: Production\/environment\/settings.tf) azt kellene \u00edrnom: domain = v\u00e1ltoz\u00f3, domain vpcnetwork, v\u00e1ltoz\u00f3 vpcnetwork \u00e9s stvars \u2013 ugyanazt az \u00e9rt\u00e9ket kinyerni?<\/p>\n<p><\/p>\n<p><em>\u00c9ppen \u00edgy csin\u00e1ljuk. Hivatkozunk a modul be\u00e1ll\u00edt\u00e1si forr\u00e1s\u00e1ra, p\u00e9ld\u00e1ul.<\/em><\/p>\n<p><\/p>\n<p>L\u00e9nyeg\u00e9ben ez egy tfvars. A tfvars nagyon hasznos a tesztk\u00f6rnyezetben. Van tfvars a nagy instances-hez, a kis instances-hez. \u00c9s csak bedobok egy f\u00e1jlt a mapp\u00e1ba. \u00c9s megkapom, amit akarok. Amikor az infrastrukt\u00far\u00e1n dolgozunk, azt szeretn\u00e9nk, hogy minden egy helyen legyen, \u00e9s azonnal meg\u00e9rts\u00fck. De \u00edgy az j\u00f6n ki, hogy ide kell n\u00e9zni, majd a tfvars-ra.<\/p>\n<p><\/p>\n<p><em>Teh\u00e1t minden egy helyen lenne?<\/em><\/p>\n<p><\/p>\n<p>Igen, a tfvars az, amikor egy k\u00f3dod van. \u00c9s az t\u00f6bb k\u00fcl\u00f6nb\u00f6z\u0151 helyen haszn\u00e1l\u00f3dik, k\u00fcl\u00f6nb\u00f6z\u0151 \u00e1rnyalatokkal. Akkor bedobtad volna a tfvars-t, \u00e9s megkaptad a te \u00e1rnyalataidat. Mi pedig az infrastrukt\u00fara, mint k\u00f3d a tiszta form\u00e1j\u00e1ban. Megn\u00e9zted \u00e9s meg\u00e9rtetted. <\/p>\n<p><\/p>\n<p><em>Hell\u00f3! Tal\u00e1lkozt\u00e1l m\u00e1r olyan helyzetekkel, amikor a felh\u0151szolg\u00e1ltat\u00f3 beavatkozik abba, amit a Terraformmal csin\u00e1lt\u00e1l? Tegy\u00fck fel, hogy m\u00f3dos\u00edtjuk a metaadatokat. Ott vannak az ssh kulcsok. A Google folyamatosan beteszi a saj\u00e1t metaadatait, a saj\u00e1t kulcsait. \u00c9s a Terraform mindig azt \u00edrja, hogy vannak v\u00e1ltoz\u00e1sok. Minden egyes futtat\u00e1s ut\u00e1n, m\u00e9g ha semmi sem v\u00e1ltozik, mindig azt mondja, hogy most friss\u00edteni fogja ezt a mez\u0151t.<\/em><\/p>\n<p><\/p>\n<p>A kulcsokkal, de \u2013 igen, az infrastrukt\u00fara egy r\u00e9sze ilyen dologgal s\u00fajtott, teh\u00e1t a Terraform semmit sem tud v\u00e1ltoztatni. Mi saj\u00e1t kez\u0171leg sem tudunk semmit megv\u00e1ltoztatni. Egyel\u0151re ezzel \u00e9l\u00fcnk.<\/p>\n<p><\/p>\n<p><em>Teh\u00e1t, te m\u00e1r tal\u00e1lkozt\u00e1l ilyesmivel, de nem tal\u00e1lt\u00e1l megold\u00e1st, csak csin\u00e1lja- \u00e9s csin\u00e1lja tov\u00e1bb?<\/em><\/p>\n<p><\/p>\n<p>Sajnos igen. <\/p>\n<p><\/p>\n<p><em>Hell\u00f3! Az \u00e9n nevem Sztarkov Sztaniszlav. Mail.ru Group. Hogyan oldj\u00e1tok meg a c\u00edmke gener\u00e1l\u00e1s probl\u00e9m\u00e1j\u00e1t a ...-on, hogyan adj\u00e1tok \u00e1t azt bel\u00fcl? \u00dagy \u00e9rtem, User data-n kereszt\u00fcl, hogy megadj\u00e1tok a host nevet, hogy a Puppetet ir\u00e1ny\u00edts\u00e1tok? \u00c9s a k\u00e9rd\u00e9s m\u00e1sodik r\u00e9sze. Hogyan oldj\u00e1tok meg ezt SG-ben, teh\u00e1t amikor gener\u00e1lj\u00e1tok az SG-t, egy k\u00f6teg azonos t\u00edpus\u00fa p\u00e9ld\u00e1nyt, hogyan nevezz\u00e9tek el \u0151ket helyesen?<\/em><\/p>\n<p><\/p>\n<p>Azokat a p\u00e9ld\u00e1nyokat, amelyek nagyon fontosak sz\u00e1munkra, sz\u00e9pen elnevezz\u00fck. Azokat, amelyek nem sz\u00fcks\u00e9gesek, a megnevez\u00e9shez hozz\u00e1tessz\u00fck, hogy ez egy autoscale-csoport. Elvileg ezt le lehet deaktiv\u00e1lni, \u00e9s \u00fajat kapni. <\/p>\n<p><\/p>\n<p>A c\u00edmk\u00e9vel kapcsolatos probl\u00e9m\u00e1r\u00f3l nincs probl\u00e9ma, hanem van egy feladat. A c\u00edmk\u00e9k n\u00e1lunk nagyon-nagyon er\u0151sen haszn\u00e1lva vannak, mert az infrastrukt\u00fara nagy \u00e9s dr\u00e1ga. \u00c9s figyeln\u00fcnk kell, hova mennek a p\u00e9nzek, ez\u00e9rt a c\u00edmk\u00e9k seg\u00edtenek meg\u00e9rteni, hogy mi \u00e9s hova ment. \u00cdgy k\u00f6nnyebben keres\u00fcnk r\u00e1 arra, hogy \u00fagymond egyes dolgok mennyibe ker\u00fclnek. <\/p>\n<p><\/p>\n<p>Milyen m\u00e1s k\u00e9rd\u00e9s volt m\u00e9g?<\/p>\n<p><\/p>\n<p><em>Amikor az SG l\u00e9trehoz sz\u00e1mos p\u00e9ld\u00e1nyt, azokat valahogyan meg kell k\u00fcl\u00f6nb\u00f6ztetni?<\/em><\/p>\n<p><\/p>\n<p>Nem, nem sz\u00fcks\u00e9ges. Minden egyes p\u00e9ld\u00e1nyon van egy \u00fcgyn\u00f6k, amely \u00e9rtes\u00edt, hogy probl\u00e9m\u00e1m van. Ha az \u00fcgyn\u00f6k \u00e9rtes\u00edt, akkor az \u00fcgyn\u00f6k tud arr\u00f3l, \u00e9s legal\u00e1bb az IP-c\u00edme l\u00e9tezik. M\u00e1r el lehet menni. M\u00e1sodszor, a Consul-t haszn\u00e1ljuk Discovery-re, ahol nem Kubernetes van. A Consul is mutatja a p\u00e9ld\u00e1ny IP-c\u00edm\u00e9t.<\/p>\n<p><\/p>\n<p><em>Teh\u00e1t az IP-re f\u00f3kusz\u00e1ltok, nem a host n\u00e9vre?<\/em><\/p>\n<p><\/p>\n<p>Nem lehet a host n\u00e9vre t\u00e1maszkodni, nagyon sok van bel\u0151l\u00fck. Van p\u00e9ld\u00e1nyazonos\u00edt\u00f3 \u2013 AE \u00e9s \u00edgy tov\u00e1bb. Valahol meg lehet tal\u00e1lni, keres\u00e9sbe be lehet dobni. <\/p>\n<p><\/p>\n<p><em>Hell\u00f3! \u00c9rtem, hogy a Terraform egy j\u00f3 dolog, ami felh\u0151kre van optimaliz\u00e1lva.<\/em> <\/p>\n<p><\/p>\n<p>Nem csak. <\/p>\n<p><\/p>\n<p><em>\u00c9ppen ez a k\u00e9rd\u00e9s \u00e9rdekel. Ha \u00fagy d\u00f6nt, hogy t\u00f6megesen \u00e1tk\u00f6lt\u00f6zik a Bare Metal-re az \u00f6sszes instance-j\u00e9vel, nem lesz semmi probl\u00e9ma? Vagy m\u00e9gis m\u00e1s term\u00e9keket kell haszn\u00e1lni, p\u00e9ld\u00e1ul a m\u00e1r itt eml\u00edtett Ansible-t?<\/em><\/p>\n<p><\/p>\n<p>Az Ansible kicsit m\u00e1s. Azaz az Ansible akkor m\u0171k\u00f6dik, amikor az instance m\u00e1r elindult. A Terraform pedig azel\u0151tt m\u0171k\u00f6dik, hogy az instance elindult volna. Teh\u00e1t a Bare Metal-re val\u00f3 \u00e1t\u00e1ll\u00e1s nem lehets\u00e9ges. <\/p>\n<p><\/p>\n<p><em>Jelenleg nem, de ha a business azt mondja: \"Csin\u00e1ljuk!\"<\/em><\/p>\n<p><\/p>\n<p>\u00c1t\u00e1ll\u00e1s m\u00e1sik felh\u0151re \u2013 igen, de itt egy kicsit m\u00e1s a helyzet. Olyan Terraform-k\u00f3dot kell \u00edrni, amely lehet\u0151v\u00e9 teszi, hogy kevesebb neh\u00e9zs\u00e9ggel tudjunk \u00e1t\u00e1llni egy m\u00e1sik felh\u0151szolg\u00e1ltat\u00e1sra. <\/p>\n<p><\/p>\n<p>Kezdetben az volt a feladatunk, hogy az \u00f6sszes infrastrukt\u00far\u00e1nk agnosztikus legyen, azaz b\u00e1rmilyen felh\u0151 megfelel\u0151 legyen, de egy id\u0151 ut\u00e1n a business feladta \u00e9s azt mondta: \"Rendben, az elk\u00f6vetkez\u0151 N \u00e9vben nem fogunk elk\u00f6lt\u00f6zni, haszn\u00e1lhatjuk az Amazon szolg\u00e1ltat\u00e1sait.\"<\/p>\n<p><\/p>\n<p>A Terraform lehet\u0151v\u00e9 teszi Front-End munk\u00e1k l\u00e9trehoz\u00e1s\u00e1t, a PagerDuty konfigur\u00e1l\u00e1s\u00e1t, adatdokkokat stb. Nagyon sok lehet\u0151s\u00e9get k\u00edn\u00e1l. Gyakorlatilag ir\u00e1ny\u00edtani tudja az eg\u00e9sz vil\u00e1got.<\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m a bemutat\u00f3t! \u00c9n is m\u00e1r 4 \u00e9ve foglalkozom a Terraformmal. Az utols\u00f3 sim\u00edt\u00e1sok sor\u00e1n, amikor a Terraformra \u00e9s az infrastrukt\u00far\u00e1ra, a deklarat\u00edv le\u00edr\u00e1sra \u00e1t\u00e1lltunk, tal\u00e1lkoztunk olyan helyzetekkel, amikor valaki manu\u00e1lisan v\u00e9gzett valamit, \u00e9s te pr\u00f3b\u00e1lt\u00e1l tervet kialak\u00edtani. Ekkor valami hib\u00e1t kapt\u00e1l. Hogyan oldj\u00e1tok meg az ilyen probl\u00e9m\u00e1kat? Hogyan tal\u00e1lj\u00e1tok meg az elveszett er\u0151forr\u00e1sokat, amelyek szerepeltek?<\/em><\/p>\n<p><\/p>\n<p>F\u0151k\u00e9nt k\u00e9zi \u00e9s okul\u00e1ris m\u00f3dszerekkel, ha valami furcs\u00e1t l\u00e1tunk a jelent\u00e9sben, elemezz\u00fck, hogy mi t\u00f6rt\u00e9nik, vagy csak t\u00f6r\u00f6lj\u00fck. Egy\u00e9bk\u00e9nt a pull requestek teljesen norm\u00e1lisak. <\/p>\n<p><\/p>\n<p><em>Ha hiba van, v\u00e9grehajtotok rollbacket? Pr\u00f3b\u00e1ltatok m\u00e1r ilyet?<\/em><\/p>\n<p><\/p>\n<p>Nem, ez az ember d\u00f6nt\u00e9se abban a pillanatban, amikor l\u00e1tja a probl\u00e9m\u00e1t.<\/p>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/524712\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Terraform \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0435 best practices \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 AWS-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439. \u0422\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043a\u043e\u043f\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0435. \u0418 Terraform-\u043a\u043e\u0434 \u043d\u0443\u0436\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043d\u043e\u0432\u044b\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0443. \u041c\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434 \u043f\u0440\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0432 Terraform \u0434\u043b\u044f \u0431\u043e\u0440\u044c\u0431\u044b \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":98124,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-98123","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=\"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\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens\" \/>\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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0432 Terraform \u0434\u043b\u044f \u0431\u043e\u0440\u044c\u0431\u044b \u0441 \u0445\u0430\u043e\u0441\u043e\u043c \u0438 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0443\u0442\u0438\u043d\u043e\u0439. \u041c\u0430\u043a\u0441\u0438\u043c \u041a\u043e\u0441\u0442\u0440\u0438\u043a\u0438\u043d (Ixtens) | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens\" \/>\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=\"2020-10-24T12:42:52+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-11-17T22:58:49+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\udd47Terraform mint\u00e1k a k\u00e1osz \u00e9s a manu\u00e1lis rutin kezel\u00e9s\u00e9re. Makszim Kostrikinnal (Ixtens) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens","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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0432 Terraform \u0434\u043b\u044f \u0431\u043e\u0440\u044c\u0431\u044b \u0441 \u0445\u0430\u043e\u0441\u043e\u043c \u0438 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0443\u0442\u0438\u043d\u043e\u0439. \u041c\u0430\u043a\u0441\u0438\u043c \u041a\u043e\u0441\u0442\u0440\u0438\u043a\u0438\u043d (Ixtens) | ProHoster","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens","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":"2020-10-24T12:42:52+00:00","article:modified_time":"2020-11-17T22:58:49+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"98123","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:04:35","updated":"2022-09-29 03:09:38","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\/98123","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=98123"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/98123\/revisions"}],"predecessor-version":[{"id":164071,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/98123\/revisions\/164071"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/98124"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=98123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=98123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=98123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}