{"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\/sq\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens","title":{"rendered":"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/ec13125c702f42863bbe774cd805442b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Duket e thjesht\u00eb, zhvilluesit e Terraform ofrojn\u00eb praktika t\u00eb mira p\u00ebr t\u00eb punuar me infrastruktur\u00ebn AWS. Megjithat\u00eb, ka nj\u00eb nuanc\u00eb. Me kalimin e koh\u00ebs, numri i mjediseve rritet, dhe secili ka ve\u00e7orit\u00eb e veta. Pjes\u00ebrisht krijohet nj\u00eb kopje e stack-ut t\u00eb aplikacioneve n\u00eb rajonin fqinj. Dhe kodi i Terraform-it duhet kopjuar me kujdes dhe redaktuar sipas k\u00ebrkesave t\u00eb reja, ose t\u00eb krijohet nj\u00eb 'snowflake'.<\/p>\n<p><\/p>\n<p>Raporti im \u00ebsht\u00eb p\u00ebr modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale n\u00eb projekte t\u00eb m\u00ebdha dhe afatgjata.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Video:<\/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=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8c67c45e486d6c03793dd08c33a16313.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jam 40 vje\u00e7 dhe kam 20 vjet n\u00eb IT. Kam punuar 12 vjet n\u00eb kompanin\u00eb Ixtens. Ne merremi me zhvillimin e bazuar n\u00eb ecommerce. Dhe gjat\u00eb 5 viteve t\u00eb fundit kam praktikuar praktikat DevOps.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8b14b3adaa45d69278d76580baa99042.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tregimi im do t\u00eb jet\u00eb p\u00ebr p\u00ebrvoj\u00ebn n\u00eb nj\u00eb projekt n\u00eb nj\u00eb kompani, emrin e s\u00eb cil\u00ebs nuk do ta zbuloj p\u00ebr shkak t\u00eb marr\u00ebveshjes p\u00ebr ruajtjen e sekretit. <\/p>\n<p><\/p>\n<p>Numrat n\u00eb slajd jan\u00eb tregues t\u00eb shkall\u00ebs s\u00eb projektit. T\u00eb gjitha q\u00eb do t\u00eb flas m\u00eb tej jan\u00eb t\u00eb lidhura me Amazon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/3742217a2abaf1fcf2163979d82eac14.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>U bashkova me k\u00ebt\u00eb projekt 4 vjet m\u00eb par\u00eb. Dhe n\u00eb mesin e procesit po kalonim nj\u00eb ristrukturim t\u00eb infrastruktur\u00ebs, p\u00ebr shkak se projekti kishte kaluar n\u00eb nj\u00eb faz\u00eb rritjeje. Modelet q\u00eb ishin p\u00ebrdorur, tashm\u00eb nuk ishin m\u00eb t\u00eb p\u00ebrshtatshme. Duke marr\u00eb parasysh rritjen e planifikuar t\u00eb projektit, duhej t\u00eb mendonim p\u00ebr nj\u00eb zgjidhje t\u00eb re. <\/p>\n<p><\/p>\n<p>Faleminderit Matveit, i cili dje tregoi se \u00e7far\u00eb ndodhi n\u00eb Dodo Pizza. Kjo \u00ebsht\u00eb ajo q\u00eb ndodhi tek ne 4 vjet m\u00eb par\u00eb. <\/p>\n<p><\/p>\n<p>Arrit\u00ebn zhvilluesit dhe filluan t\u00eb krijojn\u00eb kodin e infrastruktur\u00ebs. <\/p>\n<p><\/p>\n<p>Momentet m\u00eb t\u00eb dukshme, p\u00ebrse kjo ishte e nevojshme, ishte p\u00ebr t\u00eb arritur koh\u00ebn e tregut. Duhej t\u00eb b\u00ebhej q\u00eb ekipi DevOps t\u00eb mos ishte bllokimi kryesor gjat\u00eb lan\u00e7imit. Dhe, p\u00ebrve\u00e7 t\u00eb tjerave, n\u00eb nivelin fillestar u p\u00ebrdor\u00ebn Terraform dhe Puppet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/13d6df6a324d2e1162acef77ca2ad0dc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraform \u00ebsht\u00eb nj\u00eb projekt open source i kompanis\u00eb HashiCorp. Dhe p\u00ebr ata q\u00eb nuk e din\u00eb se \u00e7far\u00eb \u00ebsht\u00eb, disa slajde t\u00eb ardhshme. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/61726d4205d1f4f8e449fe9d71507508.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Infrastruktura si kod do t\u00eb thot\u00eb se mund t\u00eb p\u00ebrshkruajm\u00eb infrastruktur\u00ebn ton\u00eb dhe t'u k\u00ebrkojm\u00eb disa robote t\u00eb krijojn\u00eb burimet q\u00eb kemi p\u00ebrshkruar.<\/p>\n<p><\/p>\n<p>P\u00ebr shembull, na nevojitet <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/vps\/abuzoustojchivye-vps\/\"   title=\"\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4196\">\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430<\/a>. Do ta p\u00ebrshkruajm\u00eb, do t\u00eb shtojm\u00eb disa parametra t\u00eb obliguesh\u00ebm. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/eb52c1e458fa092bba8577fffceb864c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pas k\u00ebsaj, n\u00eb konsol\u00eb do t\u00eb konfigurojm\u00eb q \uc811\uadfc n\u00eb Amazon. Dhe do t\u00eb k\u00ebrkojm\u00eb Terraform plan. Terraform plan do t\u00eb thot\u00eb: \"Ok, p\u00ebr burimin tuaj ne mund t\u00eb b\u00ebjm\u00eb gj\u00ebra t\u00eb tilla\". Dhe, t\u00eb pakt\u00ebn, nj\u00eb burim do t\u00eb shtohet. Dhe nuk parashikohen ndryshime. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/879e645596121ee5d05ac247b4be19ee.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pasi t\u00eb jeni t\u00eb k\u00ebnaqur me gjith\u00e7ka, mund t\u00eb k\u00ebrkoni Terraform apply dhe Terraform do t'ju krijoj\u00eb nj\u00eb instance, dhe do t\u00eb merrni nj\u00eb makin\u00eb virtuale n\u00eb cloud-in tuaj.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/77b7fe4d6abcc9116233f48caa887465.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00eb pas projekti yn\u00eb vazhdon t\u00eb evoluoni. Shtojm\u00eb disa ndryshime aty. K\u00ebrkojm\u00eb m\u00eb shum\u00eb instance, shtojm\u00eb nj\u00eb rekord 53.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/98ce7e1f9d1f85aa5e78c269a0708ac1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe p\u00ebrs\u00ebrisim. K\u00ebrkojm\u00eb plan. Shikojm\u00eb \u00e7far\u00eb ndryshimesh jan\u00eb t\u00eb planifikuara. Applikojm\u00eb. Dhe k\u00ebshtu infrastruktura jon\u00eb rritet. <\/p>\n<p><\/p>\n<p>Terraform p\u00ebrdor nj\u00eb gj\u00eb t\u00eb quajtur skedar\u00eb t\u00eb gjendjes. Pra, t\u00eb gjitha ndryshimet q\u00eb d\u00ebrgohen n\u00eb Amazon, ai i ruan n\u00eb nj\u00eb skedar, ku p\u00ebr \u00e7do burim q\u00eb keni p\u00ebrshkruar, ekzistojn\u00eb burime p\u00ebrkat\u00ebse q\u00eb jan\u00eb krijuar n\u00eb Amazon. K\u00ebshtu q\u00eb, kur ndryshoni p\u00ebrshkrimin e ndonj\u00eb burimi, Terraform e di sakt\u00ebsisht se \u00e7far\u00eb duhet t\u00eb ndryshoj\u00eb n\u00eb Amazon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6e83efffb7af6ab967b4716be170b47b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebta skedar\u00eb t\u00eb gjendjes fillimisht ishin thjesht skedar\u00eb. Dhe ne i ruanim n\u00eb Git, gj\u00eb q\u00eb ishte jasht\u00ebzakonisht e pap\u00ebrshtatshme. Fillimisht ndonj\u00ebher\u00eb dikush harronte t'i komitonte ndryshimet dhe ndodhnin shum\u00eb konflikte. <\/p>\n<p><\/p>\n<p>Tani ka mund\u00ebsin\u00eb p\u00ebr t\u00eb p\u00ebrdorur nj\u00eb backend, pra Terraform e tregon n\u00eb cilin bucket, me \u00e7el\u00ebsin e cilit duhet t\u00eb ruhet skedari i gjendjes. Dhe Terraform do t\u00eb kujdeset vet\u00eb q\u00eb t\u00eb marr\u00eb skedarin e gjendjes, t\u00eb b\u00ebj\u00eb t\u00eb gjith\u00eb magjin\u00eb dhe ta kthej\u00eb rezultatin p\u00ebrfundimtar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/e6687463a9fe3cff979f44ac7778b4e8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Infrastruktura jon\u00eb rritet. Ja kodi yn\u00eb. Dhe tani nuk duam thjesht t\u00eb krijojm\u00eb nj\u00eb makin\u00eb virtuale, duam t\u00eb kemi nj\u00eb mjedis testimi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/0effb09fa04d3d520c1cdbb34ce97810.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraform lejon t\u00eb krijosh nj\u00eb modul, pra t\u00eb p\u00ebrshkruash t\u00eb nj\u00ebjt\u00ebn gj\u00eb n\u00eb nj\u00eb dosje t\u00eb caktuar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/95c8395b10142fe550b0719161211f15.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe, p\u00ebr shembull, n\u00eb testim t\u00eb th\u00ebrrasim k\u00ebt\u00eb modul dhe t\u00eb marrim t\u00eb nj\u00ebjt\u00ebn gj\u00eb si t\u00eb ishim duke ekzekutuar Terraform apply n\u00eb vet\u00eb modul.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/fa4c16e3835a4507a858d2ddb767daf3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr prodhim, mund t\u00eb d\u00ebrgojm\u00eb ndonj\u00eb ndryshim, sepse n\u00eb testim nuk na nevojiten instance t\u00eb m\u00ebdha, nd\u00ebrsa n\u00eb prodhim ato jan\u00eb shum\u00eb t\u00eb nevojshme.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/19478de23da2278567e66bacef78a0a9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe tani kthehem s\u00ebrish n\u00eb projekt. Ishte nj\u00eb detyr\u00eb e v\u00ebshtir\u00eb, infrastruktura ishte planifikuar t\u00eb ishte shum\u00eb e madhe. Dhe duhej t\u00eb organizonim t\u00eb gjith\u00eb kodin n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb ishte e leht\u00eb p\u00ebr t\u00eb gjith\u00eb: si p\u00ebr ata q\u00eb b\u00ebjn\u00eb mir\u00ebmbajtjen e k\u00ebtij kodi, ashtu edhe p\u00ebr ata q\u00eb b\u00ebjn\u00eb ndryshime. Ishte planifikuar q\u00eb \u00e7do zhvillues t\u00eb mund t\u00eb shkonte dhe t\u00eb rregullonte infrastruktur\u00ebn si\u00e7 ishte e nevojshme p\u00ebr pjes\u00ebn e tij t\u00eb platform\u00ebs. <\/p>\n<p><\/p>\n<p>Ky \u00ebsht\u00eb nj\u00eb pem\u00eb katalog\u00ebsh, q\u00eb rekomandohet nga HashiCorp vet\u00eb, n\u00ebse keni nj\u00eb projekt t\u00eb madh dhe ka kuptim ta ndani gjith\u00eb infrastruktur\u00ebn n\u00eb disa copa t\u00eb vogla, dhe t\u00eb p\u00ebrshkruani \u00e7do cop\u00eb n\u00eb nj\u00eb dosje t\u00eb ve\u00e7ant\u00eb. <\/p>\n<p><\/p>\n<p>Duke pasur nj\u00eb bibliotek\u00eb t\u00eb gjer\u00eb burimesh, mund t\u00eb th\u00ebrrasim n\u00eb test dhe n\u00eb prodhim m\u00eb shum\u00eb ose m\u00eb pak t\u00eb nj\u00ebjt\u00ebn gj\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/c30cdc3d3ce5441bc0ae4a485069dacc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb rastin ton\u00eb, kjo nuk ishte krejt\u00ebsisht e p\u00ebrshtatshme, sepse ishte m\u00eb e thjesht\u00eb t\u00eb merrnim nj\u00eb stek testimi p\u00ebr zhvilluesit ose p\u00ebr testim. T\u00eb ec\u00ebsh n\u00ebp\u00ebr dosje dhe t\u00eb aplikosh n\u00eb rendin e duhur, duke u shqet\u00ebsuar se baza do t\u00eb ngrihej e pastaj do t\u00eb ngrihej nj\u00eb instance q\u00eb p\u00ebrdor k\u00ebt\u00eb baz\u00eb, nuk ishte di\u00e7ka q\u00eb donim. Prandaj, t\u00eb gjith\u00eb testimet kryheshin nga nj\u00eb dosje. Atje thirreshin t\u00eb nj\u00ebjtat module, por gjith\u00e7ka ndodhte n\u00eb nj\u00eb kalim.<\/p>\n<p><\/p>\n<p>Terraform merret me t\u00eb gjitha var\u00ebsit\u00eb. Ai gjithmon\u00eb krijon burime n\u00eb at\u00eb rend q\u00eb mund t\u00eb merrni nj\u00eb IP adres\u00eb, p\u00ebr shembull, nga nj\u00eb instance e sapo krijuar dhe t\u00eb merrni k\u00ebt\u00eb IP adres\u00eb n\u00eb regjistrimin route53. <\/p>\n<p><\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, platforma \u00ebsht\u00eb shum\u00eb e madhe. Dhe aktivizimi i stekut testues, edhe n\u00ebse p\u00ebr nj\u00eb or\u00eb, madje edhe p\u00ebr 8 or\u00eb \u2013 \u00ebsht\u00eb nj\u00eb gj\u00eb mjaft e shtrenjt\u00eb. <\/p>\n<p><\/p>\n<p>Dhe ne e automatizuam k\u00ebt\u00eb proces. Nj\u00eb pun\u00eb n\u00eb Jenkins lejonte aktivizimin e stekut. N\u00eb t\u00eb duhej t\u00eb aktivizohej nj\u00eb pull request me ndryshimet q\u00eb d\u00ebshiron t\u00eb testoj\u00eb zhvilluesi, t\u00eb sh\u00ebnosh t\u00eb gjitha opsionet e duhura, komponent\u00ebt, si dhe madh\u00ebsit\u00eb. N\u00ebse ai d\u00ebshiron testim performanca, mund t\u00eb merrte m\u00eb shum\u00eb instance. N\u00ebse ai thjesht donte t\u00eb kontrollonte n\u00ebse nj\u00eb formular hapet, mund ta aktivizonte me minimumet. Po ashtu, mund t\u00eb specifikonte n\u00ebse duhej ose jo nj\u00eb klaster, etj. <\/p>\n<p><\/p>\n<p>Dhe pastaj Jenkins ekzekutonte nj\u00eb script shell, i cili modifikonte pak kodin n\u00eb dosjen e Terraform. Hiqte skedar\u00ebt e panevojsh\u00ebm, shtonte skedar\u00ebt e nevojsh\u00ebm. Dhe pastaj me nj\u00eb kalim Terraform apply steku ngrihej. <\/p>\n<p><\/p>\n<p>Pas k\u00ebsaj ndodhnin hapa t\u00eb tjer\u00eb, n\u00eb t\u00eb cilat nuk dua t\u00eb thellohem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b288c0b320d8cb6e282db994bc1c1f43.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr shkak se p\u00ebr testim na nevojiteshin pak m\u00eb shum\u00eb opsione sesa n\u00eb prodhim, na duhej t\u00eb b\u00ebnim kopje t\u00eb modulave, q\u00eb n\u00eb ato kopje t\u00eb mund t\u00eb shtonim ato funksionalitete q\u00eb ishin vet\u00ebm p\u00ebr testim. <\/p>\n<p><\/p>\n<p>Dhe k\u00ebshtu ndodhi q\u00eb n\u00eb testim dukej se donim t\u00eb testonim ato ndryshime q\u00eb n\u00eb fund do t\u00eb ishin n\u00eb prodhim. Por n\u00eb t\u00eb v\u00ebrtet\u00eb testoheshin nj\u00eb gj\u00eb, dhe n\u00eb prodhim p\u00ebrdorej di\u00e7ka tjet\u00ebr. Dhe kishte nj\u00eb shk\u00ebputje t\u00eb vog\u00ebl, sepse n\u00eb prodhim t\u00eb gjitha ndryshimet aplikohej nga ekipi operativ. Disa her\u00eb ndodhte q\u00eb ato ndryshime q\u00eb duhej t\u00eb kalonin nga testimi n\u00eb prodhim, mbeteshin n\u00eb nj\u00eb version tjet\u00ebr. <\/p>\n<p><\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj kishte nj\u00eb problem, se shtohej nj\u00eb sh\u00ebrbim i ri, i cili ndryshonte pak nga ndonj\u00eb ekzistues. Dhe n\u00eb vend q\u00eb t\u00eb modifikohej moduli ekzistues, duhej t\u00eb b\u00ebhej nj\u00eb kopje e tij dhe t\u00eb shtoheshin ndryshimet e nevojshme. <\/p>\n<p><\/p>\n<p>N\u00eb thelb, Terraform nuk \u00ebsht\u00eb nj\u00eb gjuh\u00eb e v\u00ebrtet\u00eb. \u00cbsht\u00eb nj\u00eb deklarat\u00eb. N\u00ebse na nevojitet t\u00eb deklarojm\u00eb di\u00e7ka, ne e deklarojm\u00eb. Dhe gjith\u00e7ka funksionon.<\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb moment, kur u diskutua nj\u00eb nga pull request-et e mia, nj\u00eb koleg tha se nuk duhej t\u00eb shum\u00ebzohej snjefra. Un\u00eb u interesova p\u00ebr at\u00eb q\u00eb ai kishte parasysh. Ekziston nj\u00eb fakt shkencor q\u00eb n\u00eb bot\u00eb nuk ekzistojn\u00eb dy snjefra t\u00eb nj\u00ebjt\u00eb, t\u00eb gjith\u00eb ata dallohen pak nga nj\u00ebri-tjetri. Dhe sapo e d\u00ebgjova k\u00ebt\u00eb, pash\u00eb gjith\u00eb pesh\u00ebn e kodit t\u00eb Terraform. Sepse kur k\u00ebrkohej t\u00eb kalosh nga nj\u00eb version n\u00eb nj\u00eb tjet\u00ebr, Terraform k\u00ebrkonte ndryshime q\u00eb thyenin zinxhirin, dmth. kodi nuk ishte m\u00eb i kompatibil me versionin tjet\u00ebr. Dhe duhej t\u00eb b\u00ebhej nj\u00eb pull request q\u00eb p\u00ebrfshinte pothuajse gjysm\u00ebn e skedar\u00ebve n\u00eb infrastruktur\u00eb p\u00ebr t\u00eb sjell\u00eb infrastruktur\u00ebn n\u00eb versionin e ardhsh\u00ebm t\u00eb Terraform.<\/p>\n<p><\/p>\n<p>Dhe pas q\u00eb u shfaq nj\u00eb snjef\u00ebr e till\u00eb, gjith\u00eb kodi i Terraform q\u00eb kishim shnd\u00ebrrohej n\u00eb nj\u00eb mal t\u00eb madh d\u00ebbore. <\/p>\n<p><\/p>\n<p>P\u00ebr nj\u00eb zhvillues t\u00eb jasht\u00ebm, i cili \u00ebsht\u00eb jasht\u00eb operacionit, kjo nuk ka shum\u00eb r\u00ebnd\u00ebsi, sepse ai b\u00ebri nj\u00eb pull request, burimi i tij u aktivizua. Dhe mbaroi, pastaj nuk \u00ebsht\u00eb m\u00eb n\u00eb kujdesin e tij. Por p\u00ebr ekipin DevOps, i cili ndjek q\u00eb gjith\u00e7ka t\u00eb jet\u00eb n\u00eb rregull, duhet t\u00eb b\u00ebjn\u00eb t\u00eb gjith\u00eb k\u00ebto ndryshime. Dhe kostoja e k\u00ebtyre ndryshimeve rritej shum\u00eb me \u00e7do snjef\u00ebr shtes\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/d07039414027798861d1424bb2c686b6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka nj\u00eb histori p\u00ebr nj\u00eb student q\u00eb n\u00eb nj\u00eb seminar vizaton me krejon dy rrethe t\u00eb p\u00ebrsosura n\u00eb tavolin\u00eb. Dhe m\u00ebsuesi habitet se si arriti t'i vizatoj\u00eb kaq bukur pa p\u00ebrdorur nj\u00eb kompass. Studenti p\u00ebrgjigjet: \"M\u00eb shum\u00eb e thjesht\u00eb, kam kaluar dy vjet n\u00eb ushtri duke l\u00ebvizur nj\u00eb makin\u00eb mishi.\" <\/p>\n<p><\/p>\n<p>Dhe nga ato kat\u00ebr vjet, n\u00eb t\u00eb cilat kam marr\u00eb pjes\u00eb n\u00eb k\u00ebt\u00eb projekt, ndoshta rreth dy vjet kam punuar me Terraform. Dhe natyrisht, kam disa truke, disa k\u00ebshilla, se si mund ta thjeshtoj kodin e Terraform, t\u00eb punoj me t\u00eb si me nj\u00eb gjuh\u00eb programuese dhe t\u00eb ulin ngarkes\u00ebn p\u00ebr zhvilluesit q\u00eb duhet ta mbajn\u00eb k\u00ebt\u00eb kod n\u00eb gjendje aktive. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9413c6adf1933482dcc822b021773df9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E para q\u00eb do t\u00eb doja t\u00eb filloja \u00ebsht\u00eb Symlinks. Terraform ka shum\u00eb kod p\u00ebrs\u00ebrit\u00ebs. P\u00ebr shembull, thirrja e ofruesit n\u00eb pothuajse \u00e7do pik\u00eb ku krijojm\u00eb nj\u00eb cop\u00eb infrastruktur\u00eb \u00ebsht\u00eb e nj\u00ebjt\u00eb. Dhe \u00ebsht\u00eb logjike ta nxjerrim at\u00eb n\u00eb nj\u00eb dosje t\u00eb ve\u00e7ant\u00eb. Dhe kudo ku k\u00ebrkohet ofruesi, b\u00ebni Symlinks p\u00ebr k\u00ebt\u00eb skedar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6dcf36cc8c94e7a70cf6ab1456cc1215.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P.sh. ju keni nj\u00eb rol t\u00eb supozuar n\u00eb production q\u00eb ju lejon t\u00eb merrni t\u00eb drejtat p\u00ebr qasje n\u00eb nj\u00eb llogari t\u00eb jashtme Amazon. Duke ndryshuar nj\u00eb skedar, t\u00eb gjith\u00eb skedar\u00ebt e tjer\u00eb n\u00eb struktur\u00ebn e burimeve do t\u00eb ken\u00eb t\u00eb drejtat e k\u00ebrkuara q\u00eb Terraform t\u00eb dij\u00eb n\u00eb cilin segment t\u00eb Amazon t\u00eb drejtohet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6df9a89ef48ae9a7adda7fb1f86b76aa.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ku nuk funksionojn\u00eb Symlinks? Si\u00e7 e p\u00ebrmenda, n\u00eb Terraform ka skedar\u00eb t\u00eb shtetit. Dhe ata jan\u00eb shum\u00eb shum\u00eb t\u00eb shk\u00eblqyer. Por problemi \u00ebsht\u00eb se Terraform inicializon backendin n\u00eb faz\u00ebn e par\u00eb. Dhe ai nuk mund t\u00eb p\u00ebrdor\u00eb ndonj\u00eb variab\u00ebl n\u00eb k\u00ebto parametra, gjithmon\u00eb duhet t'i shkruajm\u00eb ato n\u00eb form\u00eb teksti. <\/p>\n<p><\/p>\n<p>Si rezultat, kur dikush krijon nj\u00eb burim t\u00eb ri, ai kopjon nj\u00eb pjes\u00eb kode nga dosje t\u00eb tjera. Dhe ai mund t\u00eb gaboj\u00eb me \u00e7el\u00ebsin ose me bucket-in. P.sh., ai krijon nj\u00eb gj\u00eb n\u00eb sandbox dhe pastaj n\u00eb production. K\u00ebshtu mund t\u00eb ndodh\u00eb q\u00eb bucket-i n\u00eb production t\u00eb p\u00ebrdoret nga sandbox. Sigurisht, kjo do t\u00eb zbuloheshin shpejt. Mund t\u00eb rregullohet ndonj\u00ebher\u00eb, por megjithat\u00eb \u00ebsht\u00eb humbje kohe dhe n\u00eb nj\u00eb far\u00eb mase burimesh. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/757294dc6a1a27fc4a5fe174cc4aa7d7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb m\u00eb pas? Para se t\u00eb filloni t\u00eb punoni me Terraform, duhen b\u00ebr\u00eb inicializimet e tij. Gjat\u00eb procesit t\u00eb inicializimit, Terraform shkarkon t\u00eb gjith\u00eb pluginat. Ato, n\u00eb nj\u00eb far\u00eb momenti, u ndan\u00eb nga nj\u00eb monolit n\u00eb nj\u00eb arkitektur\u00eb m\u00eb mikroservisore. Dhe gjithmon\u00eb duhet t\u00eb b\u00ebni Terraform init q\u00eb t\u00eb t\u00ebrheq\u00eb t\u00eb gjith\u00eb modulat, t\u00eb gjith\u00eb pluginat.<\/p>\n<p><\/p>\n<p>Dhe mund t\u00eb p\u00ebrdorim nj\u00eb skrit shell q\u00eb, s\u00eb pari, do t\u00eb mund t\u00eb nxjerr\u00eb t\u00eb gjith\u00eb variablat. Skedar\u00eb shell nuk kan\u00eb ndonj\u00eb kufizim. Pastaj, rrug\u00ebt. N\u00ebse gjithmon\u00eb p\u00ebrdorim at\u00eb rrug\u00eb q\u00eb \u00ebsht\u00eb n\u00eb repository si nj\u00eb \u00e7el\u00ebs p\u00ebr skedarin e shtetit, at\u00ebher\u00eb, p\u00ebr pasoj\u00eb, gabimi k\u00ebtu do t\u00eb p\u00ebrjashtohet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b70dbc6d8edb1b255c64d722a7e40680.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nga ku t\u00eb nxjerrim t\u00eb dh\u00ebnat? Skedari JSON. Terraform lejon q\u00eb infrastruktura t\u00eb shkruhet jo vet\u00ebm n\u00eb hcl (HashiCorp Configuration Language), por edhe n\u00eb JSON.<\/p>\n<p><\/p>\n<p>JSON lexohen leht\u00eb nga skrit shell. P\u00ebr pasoj\u00eb, mund t\u00eb vendosim nj\u00eb sked\u00eb konfigurimi me bucket. Dhe ta p\u00ebrdorim k\u00ebt\u00eb bucket si n\u00eb kodin Terraform, ashtu edhe n\u00eb skritin shell p\u00ebr inicializimin. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/a18b92cac763003ec49af8d4a37e19d9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pse \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb keni nj\u00eb bucket p\u00ebr Terraform? Sepse ekziston nj\u00eb gj\u00eb si skedar\u00ebt e shtetit t\u00eb larg\u00ebt. Q\u00eb do t\u00eb thot\u00eb, kur krijoj nj\u00eb burim, q\u00eb t'i them Amazon: \"T\u00eb lutem, ngri nj\u00eb instance\", duhet t\u00eb specifikoj shum\u00eb parametra t\u00eb detyruesh\u00ebm. <\/p>\n<p><\/p>\n<p>Dhe k\u00ebto identifikues ruhen n\u00eb nj\u00eb dosje tjet\u00ebr. Dhe un\u00eb mund t\u00eb them: \"Terraform, shko te skedari i shtetit t\u00eb atij burimi dhe m\u00eb nxirr k\u00ebta identifikues\". K\u00ebshtu krijohet nj\u00eb uniformizim midis rajoneve t\u00eb ndryshme apo ambienteve.<\/p>\n<p><\/p>\n<p>Nuk \u00ebsht\u00eb gjithmon\u00eb e mundur t\u00eb p\u00ebrdoret skedari i shtetit t\u00eb larg\u00ebt. P.sh., ju keni krijuar me duar nj\u00eb VPC. Dhe ai kod Terraform q\u00eb krijon VPC krijon nj\u00eb VPC kaq t\u00eb ndrysh\u00ebm, saq\u00eb do t'ju duhet shum\u00eb koh\u00eb p\u00ebr ta p\u00ebrshtatur nj\u00ebri-tjetrin, k\u00ebshtu q\u00eb mund t\u00eb p\u00ebrdorni k\u00ebt\u00eb m\u00ebnyr\u00eb tjet\u00ebr. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/04ffcd97e2fae323d9b4d81e5f6c751a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Q\u00eb do t\u00eb thot\u00eb t\u00eb krijoni nj\u00eb modul q\u00eb si\u00e7 do t\u00eb krijoj\u00eb VPC dhe si\u00e7 do t'ju jap\u00eb identifikuesit, por n\u00eb t\u00eb v\u00ebrtet\u00eb \u00ebsht\u00eb thjesht nj\u00eb sked\u00eb me vlera t\u00eb koduara, e cila mund t\u00eb p\u00ebrdoret p\u00ebr t\u00eb krijuar at\u00eb nj\u00ebjt\u00eb instance.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9cd878c459f377caf5af9bf27b026187.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nuk \u00ebsht\u00eb gjithmon\u00eb e nevojshme t\u00eb ruani skedarin e shtetit n\u00eb cloud. P.sh., kur testohet moduli, mund t\u00eb p\u00ebrdoret inicializimi i backend-it, kur skedari do t\u00eb ruhen thjesht n\u00eb disk gjat\u00eb momentit t\u00eb testimit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/70fee8d4105cfddacafeec00825127b5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tani pak p\u00ebr testimin. \u00c7far\u00eb mund t\u00eb testohet n\u00eb Terraform? Ndoshta shum\u00eb, por un\u00eb do t\u00eb flas p\u00ebr k\u00ebto 4 aspekte.<\/p>\n<p><\/p>\n<p>HashiCorp ka nj\u00eb kuptim se si duhet t\u00eb formatohet kodi i Terraform. Dhe Terraform fmt ju lejon ta formatoni kodin q\u00eb ju po e redaktoni n\u00eb p\u00ebrputhje me k\u00ebt\u00eb besim. Prandaj, testet duhet t\u00eb verifikojn\u00eb patjet\u00ebr n\u00ebse formatimi p\u00ebrputhet me at\u00eb q\u00eb ka l\u00ebn\u00eb HashiCorp, q\u00eb t\u00eb mos ket\u00eb nevoj\u00eb t\u00eb ndryshoni pozitat e bra\u00e7kave, etj. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/bb99ffdd9f963f0f44ea7b5379689737.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E ardhshme \u2013 \u00ebsht\u00eb Terraform validate. Ai b\u00ebn pak m\u00eb shum\u00eb se sa thjesht verifikimi i sintaks\u00ebs \u2013 si t\u00eb themi, a jan\u00eb t\u00eb gjitha brackat t\u00eb \u00e7ift\u00ebzuara. \u00c7far\u00eb \u00ebsht\u00eb e r\u00ebnd\u00ebsishme k\u00ebtu? Infrastruktura jon\u00eb \u00ebsht\u00eb shum\u00eb e gjer\u00eb. Ka shum\u00eb dosje t\u00eb ndryshme. Dhe n\u00eb secil\u00ebn duhet t\u00eb ekzekutoj\u00eb Terraform validate.<\/p>\n<p><\/p>\n<p>Prandaj, p\u00ebr t\u00eb shpejtuar testimin, ne ekzekutojm\u00eb disa procese paralelisht, duke p\u00ebrdorur paralel. <\/p>\n<p><\/p>\n<p>Paraleli \u00ebsht\u00eb nj\u00eb gj\u00eb shum\u00eb e bukur, p\u00ebrdoreni.<\/p>\n<p><\/p>\n<p>Por \u00e7do her\u00eb q\u00eb ndodh inicializimi i Terraform, ai shkon te HashiCorp dhe pyet: \"Cilat jan\u00eb versionet m\u00eb t\u00eb fundit t\u00eb pluginave? Dhe ai plugin q\u00eb \u00ebsht\u00eb n\u00eb cache-in tim \u2013 a \u00ebsht\u00eb ai ose jo?\". Dhe kjo e ngadal\u00ebson \u00e7do hap. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/836e90327c7a60c493f42f0a055e248b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse i tregoni Terraform ku ndodhen pluginat, at\u00ebher\u00eb Terraform do t\u00eb thot\u00eb: \"Ok, ndoshta kjo \u00ebsht\u00eb m\u00eb e reja q\u00eb ekziston. Un\u00eb nuk do t\u00eb shkoj askund, do t\u00eb filloj menj\u00ebher\u00eb t\u00eb verifikoj kodin tuaj Terraform\".<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8ab344cf8de7087d30a1212d44691c20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb mbushur dosjen me pluginet e nevojshme, kemi nj\u00eb kod shum\u00eb t\u00eb thjesht\u00eb Terraform q\u00eb thjesht duhet t\u00eb inicializohet. K\u00ebtu, sigurisht, duhet t\u00eb spesifikoni t\u00eb gjith\u00eb ofruesit q\u00eb ndonj\u00ebher\u00eb jan\u00eb pjes\u00eb e kodit tuaj, p\u00ebrndryshe Terraform do t\u00eb thot\u00eb: \"Nuk e njoh ndonj\u00eb ofrues, sepse ai nuk \u00ebsht\u00eb n\u00eb cache.\"<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b8130753045624d38bce32ba08b56fb0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E ardhshmja \u2013 \u00ebsht\u00eb Terraform plan. Si\u00e7 e p\u00ebrmenda, zhvillimi \u00ebsht\u00eb ciklik. Ne shkruajm\u00eb kod me ndryshime. Dhe pastaj duhet t\u00eb kuptojm\u00eb se cilat ndryshime planifikohen p\u00ebr infrastruktur\u00ebn. <\/p>\n<p><\/p>\n<p>Dhe kur infrastruktura \u00ebsht\u00eb shum\u00eb e madhe, mund t\u00eb ndryshoni nj\u00eb modul, t\u00eb riparoni nj\u00eb ambient testimi ose ndonj\u00eb rajon specifik dhe t\u00eb thyeni ndonj\u00eb t\u00eb af\u00ebrt. Prandaj, Terraform plan duhet t\u00eb b\u00ebhet p\u00ebr t\u00eb gjith\u00eb infrastruktur\u00ebn dhe t\u00eb tregoj\u00eb cilat ndryshime planifikohen.<\/p>\n<p><\/p>\n<p>Kjo mund t\u00eb b\u00ebhet me men\u00e7uri. Ne, p\u00ebr shembull, kemi shkruar nj\u00eb skript n\u00eb Python q\u00eb zgjidh var\u00ebsit\u00eb. Dhe n\u00eb var\u00ebsi t\u00eb asaj se \u00e7far\u00eb \u00ebsht\u00eb ndryshuar: moduli Terraform ose thjesht ndonj\u00eb komponent specifik, ai b\u00ebn plane p\u00ebr t\u00eb gjitha dosjet var\u00ebsore.<\/p>\n<p><\/p>\n<p>Terraform plan duhet t\u00eb b\u00ebhet me k\u00ebrkes\u00eb. T\u00eb pakt\u00ebn, kjo \u00ebsht\u00eb ajo q\u00eb b\u00ebjm\u00eb ne. <\/p>\n<p><\/p>\n<p>Testet, natyrisht, jan\u00eb t\u00eb mira t\u00eb b\u00ebhen p\u00ebr \u00e7do ndryshim, p\u00ebr \u00e7do commit, por planet \u2013 jan\u00eb nj\u00eb gj\u00eb mjaft e shtrenjt\u00eb. Dhe ne n\u00eb pull request themi: \"T\u00eb lutem, m\u00eb dha planet.\" Aktivizohet nj\u00eb robot. Dhe ai d\u00ebrgon n\u00eb komente ose n\u00eb bashk\u00ebngjitje t\u00eb gjitha planet q\u00eb priten nga ndryshimet tuaja. <\/p>\n<p><\/p>\n<p>Plani \u2013 \u00ebsht\u00eb nj\u00eb gj\u00eb mjaft e shtrenjt\u00eb. Ai merr koh\u00eb, sepse Terraform shkon n\u00eb Amazon dhe pyet: \"A ekziston ende ky instance? A ka k\u00ebto parametra t\u00eb sakt\u00eb kjo autoscale?\". Dhe p\u00ebr ta p\u00ebrshpejtuar k\u00ebt\u00eb, mund t\u00eb p\u00ebrdorni nj\u00eb parametrin si refresh=false. Kjo do t\u00eb thot\u00eb se Terraform do t\u00eb nxjerr\u00eb nga S3 state. Dhe do t\u00eb besoj\u00eb se state do t\u00eb p\u00ebrputhet sakt\u00ebsisht me at\u00eb q\u00eb ndodhet n\u00eb Amazon.<\/p>\n<p><\/p>\n<p>Ky Terraform plan kalon shum\u00eb m\u00eb shpejt, por state duhet t\u00eb p\u00ebrputhet me infrastruktur\u00ebn tuaj, dometh\u00ebn\u00eb, diku, nj\u00ebher\u00eb duhet t\u00eb aktivizohet Terraform refresh. Terraform refresh b\u00ebn sakt\u00ebsisht at\u00eb q\u00eb ka p\u00ebr detyr\u00eb, q\u00eb state t\u00eb p\u00ebrputhet me at\u00eb q\u00eb ndodhet n\u00eb infrastruktur\u00ebn reale. <\/p>\n<p><\/p>\n<p>Dhe duhet t\u00eb flas p\u00ebr sigurin\u00eb. K\u00ebt\u00eb do t\u00eb duhej ta kisha filluar. Atje ku ju e aktivizoni Terraform, dhe Terraform punon me infrastruktur\u00ebn tuaj, ka nj\u00eb vulnerabilitet. Dometh\u00ebn\u00eb, ju, n\u00eb thelb, po ekzekutoni kod. Dhe n\u00ebse pull request p\u00ebrmban ndonj\u00eb kod t\u00eb d\u00ebmsh\u00ebm, ai mund t\u00eb ekzekutohet n\u00eb infrastruktur\u00ebn q\u00eb ka tep\u00ebr shum\u00eb akses. Prandaj, ndani kujdes, ku e aktivizoni Terraform plan.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/2153cc01acf2b1f46978f837b82b317e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E ardhshmja, p\u00ebr t\u00eb cil\u00ebn do t\u00eb doja t\u00eb flisja, \u00ebsht\u00eb testimi i user-data.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb \u00ebsht\u00eb user-data? N\u00eb Amazon, kur krijojm\u00eb nj\u00eb instance, mund t\u00eb d\u00ebrgojm\u00eb nj\u00eb let\u00ebr \u2013 meta-t\u00eb dh\u00ebna nga instance. Kur instance ndizet, cloud init \u00ebsht\u00eb gjithmon\u00eb i pranish\u00ebm n\u00eb k\u00ebto instance. Cloud init lexon k\u00ebt\u00eb let\u00ebr dhe thot\u00eb: \"Ok, sot un\u00eb jam \u2013 load balancer\". Dhe n\u00eb p\u00ebrputhje me k\u00ebto urdhra kryen disa veprime.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/406ac9341e102f5e0d7ca239d10675cd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por, fatkeq\u00ebsisht, kur b\u00ebjm\u00eb Terraform plan dhe Terraform apply, user-data shfaqet si nj\u00eb grumbull i till\u00eb numrash. Dometh\u00ebn\u00eb, ai thjesht ju d\u00ebrgon nj\u00eb hash. Dhe \u00e7do gj\u00eb q\u00eb mund t\u00eb shikoni n\u00eb plan \u00ebsht\u00eb n\u00ebse do t\u00eb ket\u00eb disa ndryshime ose hash do t\u00eb mbetet i nj\u00ebjt\u00eb. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse k\u00ebt\u00eb nuk e keni parasysh, at\u00ebher\u00eb n\u00eb Amazon, n\u00eb infrastruktur\u00ebn reale mund t\u00eb d\u00ebrgohet ndonj\u00eb skedar t\u00eb d\u00ebmtuar tekstual. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/cd7b56f1149d9cbebb0ad3228c0eeb5f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si nj\u00eb mund\u00ebsi, mund t\u00eb specifikoni vet\u00ebm template dhe t\u00eb k\u00ebrkoni n\u00eb kod: \"T\u00eb lutem, m\u00eb shfaq k\u00ebt\u00eb template n\u00eb ekran.\" Dhe n\u00eb p\u00ebrfundim mund t\u00eb merrni nj\u00eb printim se si do t\u00eb duken t\u00eb dh\u00ebnat tuaja n\u00eb Amazon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/86da779cdf7f9cacfd80a196efde47f7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb mund\u00ebsi tjet\u00ebr \u2013 \u00ebsht\u00eb t\u00eb p\u00ebrdorni nj\u00eb modul p\u00ebr gjenerimin e user-data. Ju do ta aplikoni k\u00ebt\u00eb modul. Merrni nj\u00eb sked\u00eb n\u00eb disk. E krahasoni at\u00eb me referenc\u00ebn. Dhe k\u00ebshtu, n\u00ebse ndonj\u00eb junior vendos ta ndryshoj\u00eb pak user-data, testet tuaja do t\u00eb thon\u00eb: \"Ok, k\u00ebtu dhe k\u00ebtu ka disa ndryshime \u2013 kjo \u00ebsht\u00eb n\u00eb rregull\".<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/7e69ec1b2c04710066d93ee48f872254.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E ardhshmja, p\u00ebr t\u00eb cil\u00ebn do t\u00eb doja t\u00eb flisja m\u00eb shum\u00eb, \u00ebsht\u00eb Automate Terraform apply.<\/p>\n<p><\/p>\n<p>Natyrisht, \u00ebsht\u00eb mjaft e frikshme t\u00eb b\u00ebsh Terraform apply n\u00eb m\u00ebnyr\u00eb automatike, sepse, kush e di, \u00e7far\u00eb ndryshimesh kan\u00eb ardhur dhe sa shkat\u00ebrruese mund t\u00eb jen\u00eb ato p\u00ebr infrastruktur\u00ebn aktive. <\/p>\n<p><\/p>\n<p>P\u00ebr ambientin e testimit \u2013 kjo \u00ebsht\u00eb gjith\u00e7ka n\u00eb rregull. Dometh\u00ebn\u00eb, job-i q\u00eb krijon ambientin e testimit, \u00ebsht\u00eb ajo q\u00eb u nevojitet t\u00eb gjith\u00eb zhvilluesve. Dhe shprehja si \"un\u00eb kam pasur gjith\u00e7ka t\u00eb funksionoj\u00eb\" \u2013 nuk \u00ebsht\u00eb nj\u00eb meme qesharake, por nj\u00eb d\u00ebshmi se personi ka punuar, ka ngritur stek, ka ekzekutuar disa teste n\u00eb k\u00ebt\u00eb stek. Dhe \u00ebsht\u00eb siguruar q\u00eb gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull dhe tha: \"Ok, ai kod q\u00eb po l\u00ebshoj, \u00ebsht\u00eb testuar.\"<\/p>\n<p><\/p>\n<p>N\u00eb ambientet e production, sandbox dhe t\u00eb tjera q\u00eb kan\u00eb r\u00ebnd\u00ebsi m\u00eb t\u00eb madhe p\u00ebr biznesin, \u00ebsht\u00eb e mundur t\u00eb aplikoni pjes\u00ebrisht disa burime mjaft t\u00eb sigurta, sepse kjo nuk \u00e7on n\u00eb pasoja fatale. K\u00ebtu jan\u00eb: grupet autoscale, grupet e siguris\u00eb, roles, route53 dhe lista mund t\u00eb jet\u00eb mjaft e gjat\u00eb. Por b\u00ebni kujdes me at\u00eb q\u00eb ndodh, lexoni raportet p\u00ebr aplikimet automatike. <\/p>\n<p><\/p>\n<p>Atje ku aplikimi \u00ebsht\u00eb i rreziksh\u00ebm ose i friksh\u00ebm, p\u00ebr shembull, n\u00ebse b\u00ebhet fjal\u00eb p\u00ebr disa burime me persistent, si bazat e t\u00eb dh\u00ebnave, merini raportet p\u00ebr ndonj\u00eb ndryshim t\u00eb pap\u00ebrfunduar n\u00eb ndonj\u00eb pjes\u00eb t\u00eb infrastruktur\u00ebs. Pastaj, inxhinieri, n\u00ebn mbik\u00ebqyrje, aktivizon pun\u00ebt p\u00ebr t\u00eb aplikuar ose e b\u00ebn k\u00ebt\u00eb nga konsola e tij. <\/p>\n<p><\/p>\n<p>N\u00eb Amazon ekziston nj\u00eb funksion i quajtur Terminate protection. Ai mund t\u00eb mbroj\u00eb n\u00eb disa raste nga ndryshime q\u00eb nuk jan\u00eb t\u00eb nevojshme p\u00ebr ju. Kjo do t\u00eb thot\u00eb, Terraform shkon n\u00eb Amazon dhe thot\u00eb: 'M\u00eb duhet t\u00eb vras k\u00ebt\u00eb instance, p\u00ebr t\u00eb krijuar nj\u00eb tjet\u00ebr'. Dhe Amazon thot\u00eb: 'M\u00eb fal, jo sot. Ne kemi vendosur Terminate protection'.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9f4258d8688556829586a1e308f5a1e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe si\u00e7 e do kavaj\u00ebn e \u00ebmb\u00ebl \u2013 kjo \u00ebsht\u00eb optimizimi i kodit. Kur punojm\u00eb me kodin Terraform, duhet t\u00eb kalojm\u00eb shum\u00eb parametra n\u00eb modul. K\u00ebta paramet\u00ebr jan\u00eb t\u00eb nevojsh\u00ebm p\u00ebr t\u00eb krijuar ndonj\u00eb burim. K\u00ebshtu, kodi kthehet n\u00eb lista t\u00eb m\u00ebdha parametrash q\u00eb duhet t\u00eb kalojn\u00eb nga nj\u00eb modul n\u00eb tjetrin, sidomos n\u00ebse modulat jan\u00eb t\u00eb ngjitura. <\/p>\n<p><\/p>\n<p>Dhe kjo \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb p\u00ebr t'u lexuar. \u00cbsht\u00eb shum\u00eb e v\u00ebshtir\u00eb t\u00eb b\u00ebsh review. Shpesh ndodh q\u00eb disa parametra kalojn\u00eb n\u00eb review dhe nuk jan\u00eb pik\u00ebrisht ata q\u00eb nevojiten. Kjo merr koh\u00eb dhe para p\u00ebr t'u korrigjuar m\u00eb von\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/ad7e8a91692212fda9f2561854b881c9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prandaj, ju sugjeroj t\u00eb p\u00ebrdorni nj\u00eb parametr t\u00eb komplikuar q\u00eb p\u00ebrfshin nj\u00eb pem\u00eb vlerash. Kjo do t\u00eb thot\u00eb q\u00eb iu nevojitet nj\u00eb dosje, ku jan\u00eb t\u00eb sh\u00ebnuara t\u00eb gjitha vlerat q\u00eb d\u00ebshironi t\u00eb keni n\u00eb ndonj\u00eb ambient.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/909632949eb30057bf86b116239d9077.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe duke thirrur k\u00ebt\u00eb modul, mund t\u00eb merrni nj\u00eb pem\u00eb q\u00eb gjenerohet n\u00eb nj\u00eb modul t\u00eb p\u00ebrbashk\u00ebt, q\u00eb funksionin nj\u00ebsoj p\u00ebr t\u00ebr\u00eb infrastruktur\u00ebn.<\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb modul mund t\u00eb b\u00ebni disa llogaritje duke p\u00ebrdorur nj\u00eb ve\u00e7ori t\u00eb re n\u00eb Terraform, si\u00e7 jan\u00eb locals. Dhe pastaj, me nj\u00eb output mund t\u00eb jepni ndonj\u00eb parametr t\u00eb komplikuar, q\u00eb mund t\u00eb p\u00ebrmbaj\u00eb hash-e, masa etj. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/25c14e0397f8d95c301e0dfe6ae761df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb pik\u00eb p\u00ebrfundojn\u00eb t\u00eb gjitha zbulimet m\u00eb t\u00eb mira q\u00eb kam. Dhe do t\u00eb doja t\u00eb tregoj nj\u00eb histori p\u00ebr Kolumbin. Kur ai k\u00ebrkonte para p\u00ebr ekspedit\u00ebn e tij p\u00ebr t\u00eb zbuluar Indin\u00eb (si\u00e7 mendonte ai at\u00ebher\u00eb), askush nuk i besonte dhe e konsideronin t\u00eb pamundur. At\u00ebher\u00eb ai tha: 'B\u00ebni q\u00eb t\u00eb mos bie m\u00ebndafshi'. T\u00eb gjith\u00eb bankier\u00ebt, njer\u00ebz shum\u00eb t\u00eb pasur dhe ndoshta t\u00eb men\u00e7ur, p\u00ebrpiqeshin n\u00eb ndonj\u00eb m\u00ebnyr\u00eb t\u00eb vendosnin m\u00ebndafshin, dhe ai gjithmon\u00eb binte. Pastaj Kolumbi mori m\u00ebndafshin, e shtyu pak. Pjesa e jashtme iu tkurr dhe m\u00ebndafshi mbeti i pal\u00ebvizur. Ata than\u00eb: 'O, kjo \u00ebsht\u00eb shum\u00eb e thjesht\u00eb!'. Dhe Kolumbi u p\u00ebrgjigj: 'Po, kjo \u00ebsht\u00eb shum\u00eb e thjesht\u00eb. Kur t\u00eb zbuloj Indin\u00eb, t\u00eb gjith\u00eb do ta p\u00ebrdorin k\u00ebt\u00eb rrug\u00eb tregtare'. <\/p>\n<p><\/p>\n<p>Dhe ajo q\u00eb ju tregova tani, ndoshta \u00ebsht\u00eb mjaft e thjesht\u00eb dhe triviale. Dhe kur e m\u00ebson ato dhe fillon t\u2019i p\u00ebrdor\u00ebsh, \u00ebsht\u00eb krejt\u00ebsisht n\u00eb rregull. Pra, p\u00ebrdoreni. Dhe n\u00ebse p\u00ebr ju k\u00ebto jan\u00eb gj\u00ebra krejt normale, t\u00eb pakt\u00ebn e dini se si t\u00eb vendosni m\u00ebndafshin q\u00eb t\u00eb mos bjer\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/37bf83d04b99f089f2319c8d2e8aaeb4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le t\u00eb b\u00ebjm\u00eb nj\u00eb p\u00ebrmbledhje: <\/p>\n<p><\/p>\n<ul>\n<li>P\u00ebrpiquni t\u00eb evitoni d\u00ebborat. Sa m\u00eb pak t\u00eb ket\u00eb d\u00ebboras, aq m\u00eb pak burime do t'ju nevojiten p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime n\u00eb t\u00ebr\u00eb infrastruktur\u00ebn tuaj t\u00eb madhe. <\/li>\n<li>Ndryshime t\u00eb vazhdueshme. Do t\u00eb thot\u00eb, kur ka pasur ndonj\u00eb ndryshim n\u00eb kod, duhet t\u00eb sjell\u00eb sa m\u00eb shpejt t\u00eb mundshme infrastruktur\u00ebn tuaj n\u00eb p\u00ebrputhje me k\u00ebto ndryshime. Nuk duhet t\u00eb ket\u00eb situata kur dikush vjen pas dy-tre muajsh p\u00ebr t\u00eb par\u00eb Elasticsearch, b\u00ebn Terraform plan, dhe atje ka shum\u00eb ndryshime q\u00eb nuk i priste. Dhe harxhon shum\u00eb koh\u00eb p\u00ebr t'i sjell\u00eb p\u00ebrs\u00ebri n\u00eb rregull. <\/li>\n<li>Testet dhe automatizimi. Sa m\u00eb shum\u00eb t\u00eb jet\u00eb kodi juaj i mbuluar me teste dhe ve\u00e7ori, aq m\u00eb shum\u00eb do t\u00eb keni besim se po b\u00ebni gjith\u00e7ka n\u00eb m\u00ebnyr\u00eb t\u00eb duhur. Dhe d\u00ebrgimi automatik do ta rris\u00eb besimin tuaj shum\u00ebfish. <\/li>\n<li>Kodi p\u00ebr ambientet testuese dhe ato n\u00eb production duhet t\u00eb jet\u00eb pothuajse identik. Pothuajse, sepse n\u00eb fund t\u00eb fundit production \u00ebsht\u00eb pak ndryshe dhe gjithsesi do t\u00eb ket\u00eb disa nuanca q\u00eb do t\u00eb dalin jasht\u00eb korniz\u00ebs s\u00eb ambientit testues. Por gjithsesi, n\u00eb m\u00eb pak e m\u00eb shum\u00eb mund t\u00eb sigurohet kjo. <\/li>\n<li>Dhe n\u00ebse keni shum\u00eb kod Terraform dhe mbajtja e tij n\u00eb gjendje t\u00eb azhurnuar k\u00ebrkon shum\u00eb koh\u00eb, kurr\u00eb nuk \u00ebsht\u00eb von\u00eb t\u00eb b\u00ebni refaktorim dhe ta sillni at\u00eb n\u00eb nj\u00eb form\u00eb t\u00eb mir\u00eb. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/68f3946536f44eed33939b234fb3ca0d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Infrastruktur\u00eb t\u00eb pal\u00ebvizshme. D\u00ebrgimi i AMI-s\u00eb sipas nj\u00eb plani. <\/li>\n<li>Struktura p\u00ebr route53, kur keni shum\u00eb t\u00eb dh\u00ebna dhe d\u00ebshironi q\u00eb ato t\u00eb jen\u00eb n\u00eb nj\u00eb rend t\u00eb rregullt. <\/li>\n<li>Kund\u00ebrvajtja ndaj kufijve t\u00eb API. Kur Amazon thot\u00eb: \u00abT\u00eb gjitha, nuk mund t\u00eb pranoj m\u00eb k\u00ebrkesa, lutem prisni\u00bb. Dhe gjysma e kompanis\u00eb pret derisa t\u00eb mund t\u00eb aktivizoj\u00eb infrastruktur\u00ebn e saj. <\/li>\n<li>Instancat Spot. Amazon \u00ebsht\u00eb nj\u00eb aktivitet i shtrenjt\u00eb dhe instancat Spot lejojn\u00eb kursime t\u00eb konsiderueshme. Mund t\u00eb flitet shum\u00eb p\u00ebr k\u00ebt\u00eb. <\/li>\n<li>Siguria dhe rolet IAM. <\/li>\n<li>Gjetja e burimeve t\u00eb humbura, kur keni instanca t\u00eb paqart\u00eb n\u00eb Amazon, ato shpenzojn\u00eb para. Edhe n\u00ebse nj\u00eb instanc\u00eb kushton 100-150 dollar\u00eb n\u00eb muaj \u2013 p\u00ebr nj\u00eb vit kjo \u00ebsht\u00eb mbi 1,000. Gjetja e k\u00ebtyre burimeve \u00ebsht\u00eb nj\u00eb mund\u00ebsi fitimi. <\/li>\n<li>Dhe instancat e rezervuara. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin\u00eb (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/69ddbf4c726bcc15aea1a1e2d67a3fc8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb gjith\u00e7ka nga ana ime. Terraform \u2013 \u00ebsht\u00eb shum\u00eb e shk\u00eblqyer, p\u00ebrdorni at\u00eb. Faleminderit!<\/p>\n<p><\/p>\n<p>Pyetje<\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr prezantimin! Ju keni skedarin e gjendjes n\u00eb S3, por si e zgjidhni problemin q\u00eb disa njer\u00ebz mund ta marrin k\u00ebt\u00eb skedar gjendjeje dhe t\u00eb p\u00ebrpiqen t\u00eb eklipsojn\u00eb at\u00eb?<\/em><\/p>\n<p><\/p>\n<p>S\u00eb pari, ne nuk nxitojm\u00eb. S\u00eb dyti, ka flamuj q\u00eb tregojn\u00eb se ne po punojm\u00eb n\u00eb nj\u00eb pjes\u00eb t\u00eb caktuar t\u00eb kodit. Pra, pavar\u00ebsisht se infrastruktura \u00ebsht\u00eb shum\u00eb e madhe, kjo nuk do t\u00eb thot\u00eb se dikush \u00ebsht\u00eb duke aplikuar vazhdimisht. Gjat\u00eb faz\u00ebs aktive \u2013 kjo ishte nj\u00eb problem, skedari i gjendjes ton\u00eb ishte ruajtur n\u00eb Git. Kjo ishte e r\u00ebnd\u00ebsishme, p\u00ebrndryshe dikush mund t\u00eb krijonte nj\u00eb skedar gjendjeje dhe na duhej ta mbledhim at\u00eb manualisht p\u00ebr t\u00eb vazhduar. Tani ky problem nuk ekziston. N\u00eb p\u00ebrgjith\u00ebsi, Terraform zgjidhi k\u00ebt\u00eb problem. Dhe n\u00ebse gjith\u00e7ka po ndryshon vazhdimisht, at\u00ebher\u00eb mund t\u00eb p\u00ebrdorim bllokime q\u00eb parandalojn\u00eb at\u00eb q\u00eb that\u00eb.<\/p>\n<p><\/p>\n<p><em>A p\u00ebrdorni versionin e hapur apo at\u00eb enterprise?<\/em><\/p>\n<p><\/p>\n<p>Nuk ka asnj\u00eb enterprise, pra, gjith\u00e7ka q\u00eb mund t\u00eb shkarkoni falas. <\/p>\n<p><\/p>\n<p><em>Emri im \u00ebsht\u00eb Stanislav. Doja t\u00eb b\u00ebja nj\u00eb shtes\u00eb t\u00eb vog\u00ebl. Ju fol\u00ebt p\u00ebr nj\u00eb ve\u00e7ori t\u00eb Amazon q\u00eb lejon t\u00eb krijoni nj\u00eb instanc\u00eb t\u00eb pazhbeshme. Kjo \u00ebsht\u00eb gjithashtu e pranishme n\u00eb Terraform, n\u00eb blokun Life Second mund t\u00eb specifikoni ndalimin e ndryshimit ose shkat\u00ebrrimit.<\/em> <\/p>\n<p><\/p>\n<p>Kam qen\u00eb i kufizuar n\u00eb koh\u00eb. Nj\u00eb v\u00ebrejtje e mir\u00eb. <\/p>\n<p><\/p>\n<p><em>D\u00ebshiroja t\u00eb pyesja dy gj\u00ebra. S\u00eb pari, ju fol\u00ebt p\u00ebr testimin. A keni p\u00ebrdorur ndonj\u00eb mjet p\u00ebr testimin? Kam d\u00ebgjuar p\u00ebr plugins Test Kitchen. Ndoshta ka di\u00e7ka tjet\u00ebr. Dhe doja gjithashtu t\u00eb pyesja p\u00ebr Vlerat Lokale. \u00c7far\u00eb dallimi kan\u00eb ato nga Variablat e Input? Dhe pse nuk mund t\u00eb parametrizoj di\u00e7ka vet\u00ebm p\u00ebrmes Vlerave Lokale? Kam p\u00ebrpiqur t\u00eb kuptoj k\u00ebt\u00eb tem\u00eb, por nuk arrita ta kuptoj.<\/em><\/p>\n<p><\/p>\n<p>Mund t\u00eb flasim m\u00eb n\u00eb detaje pas k\u00ebtij salloni. Mjetet p\u00ebr testim \u2013 jan\u00eb gjith\u00e7ka nga ne. Nuk ka asgj\u00eb t\u00eb till\u00eb p\u00ebr t\u00eb testuar. N\u00eb p\u00ebrgjith\u00ebsi, ka mund\u00ebsi kur testet automatike ngrijn\u00eb infrastruktur\u00ebn diku, kontrollojn\u00eb q\u00eb ajo \u00ebsht\u00eb n\u00eb rregull, dhe pastaj gjith\u00e7ka shkat\u00ebrrohet me nj\u00eb raport q\u00eb infrastruktura juaj \u00ebsht\u00eb ende n\u00eb form\u00eb t\u00eb mir\u00eb. Ne nuk e kemi k\u00ebt\u00eb, sepse steket e testimit ngrihen \u00e7do dit\u00eb. Dhe kjo \u00ebsht\u00eb e mjaftueshme. Dhe n\u00ebse di\u00e7ka fillon t\u00eb prish\u00eb, at\u00ebher\u00eb ajo do t\u00eb filloj\u00eb t\u00eb prish\u00eb pa ndonj\u00eb prov\u00eb t\u00eb m\u00ebtejshme. <\/p>\n<p><\/p>\n<p>P\u00ebr Vlerat Lokale, le t\u00eb vazhdojm\u00eb bised\u00ebn jasht\u00eb sall\u00ebs. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr prezantimin! Shum\u00eb informativ. Ju theksonit se keni shum\u00eb kod t\u00eb nj\u00ebjt\u00eb p\u00ebr p\u00ebrshkrimin e infrastruktur\u00ebs. A keni shqyrtuar ndonj\u00ebher\u00eb mund\u00ebsin\u00eb e gjenerimit t\u00eb k\u00ebtij kodi?<\/em><\/p>\n<p><\/p>\n<p>Pyetje e shk\u00eblqyer, faleminderit! \u00c7\u00ebshtja \u00ebsht\u00eb se, kur ne p\u00ebrdorim infrastruktur\u00ebn si kod, ne supozojm\u00eb se ne shohim kodin dhe kuptojm\u00eb se cila infrastruktur\u00eb q\u00ebndron pas k\u00ebtij kodi. N\u00ebse kodi gjenerohet, na nevojitet t\u00eb paraqesim se cili kod do t\u00eb gjenerohet p\u00ebr t\u00eb kuptuar se cila infrastruktur\u00eb do t\u00eb jet\u00eb aty. Ose ne e gjenerojm\u00eb kodin, e d\u00ebrgojm\u00eb dhe, me thelb, rezulton e nj\u00ebjt\u00eb. Prandaj ne zgjodh\u00ebm rrug\u00ebn q\u00eb e kemi shkruar, dhe k\u00ebt\u00eb e mor\u00ebm. Plus, gjenerator\u00ebt erdh\u00ebn disa koh\u00eb m\u00eb von\u00eb, kur filluam t\u00eb b\u00ebjm\u00eb. Dhe tashm\u00eb ishte von\u00eb p\u00ebr ta ndryshuar.<\/p>\n<p><\/p>\n<p><em>Keni d\u00ebgjuar di\u00e7ka p\u00ebr jsonnet?<\/em><\/p>\n<p><\/p>\n<p>Jo. <\/p>\n<p><\/p>\n<p><em>Shiko, kjo \u00ebsht\u00eb nj\u00eb gj\u00eb e shk\u00eblqyer. Un\u00eb shoh nj\u00eb rast konkret ku mund ta aplikoja dhe t\u00eb gjeneroja struktur\u00ebn e t\u00eb dh\u00ebnave.<\/em> <\/p>\n<p><\/p>\n<p>Gjenerator\u00ebt jan\u00eb t\u00eb mir\u00eb kur keni, si n\u00eb nj\u00eb shaka p\u00ebr makin\u00ebn e rruajtjes. Pra, her\u00ebn e par\u00eb fytyra \u00ebsht\u00eb ndryshe, por pastaj t\u00eb gjith\u00eb kan\u00eb t\u00eb nj\u00ebjt\u00ebn fytyr\u00eb. Gjenerator\u00ebt funksionojn\u00eb shum\u00eb mir\u00eb. Por fatkeq\u00ebsisht, fytyrat tona jan\u00eb pak ndryshe. Kjo \u00ebsht\u00eb nj\u00eb problem. <\/p>\n<p><\/p>\n<p><em>Thjesht shiko. Faleminderit!<\/em><\/p>\n<p><\/p>\n<p><em>Emri im \u00ebsht\u00eb Maksim, un\u00eb jam nga Sberbank. Ju fol\u00ebt pak se keni tentuar t\u00eb sillni Terraform n\u00eb analogjin\u00eb e nj\u00eb gjuhe programuesi. A nuk \u00ebsht\u00eb m\u00eb e leht\u00eb t\u00eb p\u00ebrdorni Ansible?<\/em><\/p>\n<p><\/p>\n<p>K\u00ebto jan\u00eb shum\u00eb gj\u00ebra t\u00eb ndryshme. Mund t\u00eb krijosh burime me Ansible, gjithashtu mund t\u00eb krijosh burime me Puppet n\u00eb Amazon. Por Terraform \u00ebsht\u00eb specifikisht i dedikuar. <\/p>\n<p><\/p>\n<p><em>A keni vet\u00ebm Amazon?<\/em><\/p>\n<p><\/p>\n<p>\u00c7\u00ebshtja nuk \u00ebsht\u00eb se kemi vet\u00ebm Amazon. Ne kemi pothuajse vet\u00ebm Amazon. Por karakteristika kryesore \u00ebsht\u00eb se Terraform e mban mend. N\u00eb Ansible, n\u00ebse thoni: \u00abNgrije 5 instanca p\u00ebr mua\u00bb, ai do t'i ngrej\u00eb, dhe pastaj ju thoni: \u00abTani m\u00eb duhen 3\u00bb. Dhe Terraform do t\u00eb thot\u00eb: \u00abOk, do t\u00eb heq 2\u00bb, nd\u00ebrsa Ansible do t\u00eb thot\u00eb: \u00abOk, k\u00ebtu ka 3\u00bb. Dhe p\u00ebrfundimisht, do t\u00eb kemi 8.<\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr prezantimin tuaj! Ishte shum\u00eb interesante t\u00eb d\u00ebgjoj p\u00ebr Terraform. Dua t\u00eb jap nj\u00eb koment t\u00eb vog\u00ebl n\u00eb lidhje me faktin se Terraform, megjithat\u00eb, nuk ka nj\u00eb l\u00ebshim stabile, prandaj duhet t\u00eb jeni shum\u00eb t\u00eb kujdessh\u00ebm me Terraform.<\/em><\/p>\n<p><\/p>\n<p>Nj\u00eb lug\u00eb e mir\u00eb p\u00ebr drek\u00eb. Q\u00eb do t\u00eb thot\u00eb, n\u00ebse keni nevoj\u00eb p\u00ebr nj\u00eb zgjidhje, ndonj\u00ebher\u00eb e shtyni at\u00eb q\u00eb nuk \u00ebsht\u00eb e q\u00ebndrueshme, etj., por funksionon dhe na ka ndihmuar. <\/p>\n<p><\/p>\n<p><em>Kam nj\u00eb pyetje. P\u00ebrdorni backend t\u00eb larg\u00ebt, p\u00ebrdorni S3. Pse nuk p\u00ebrdorni backendin zyrtar?<\/em><\/p>\n<p><\/p>\n<p>Zyrtar?<\/p>\n<p><\/p>\n<p><em>Terraform Cloud.<\/em><\/p>\n<p><\/p>\n<p>Kur u shfaq?<\/p>\n<p><\/p>\n<p><em>Koh\u00ebzgjatja prej 4 muajsh.<\/em> <\/p>\n<p><\/p>\n<p>N\u00ebse do t\u00eb ishte shfaqur 4 vjet m\u00eb par\u00eb, ndoshta do t\u00eb kisha p\u00ebrgjigjur n\u00eb pyetjen tuaj.<\/p>\n<p><\/p>\n<p><em>Aty ka tashm\u00eb nj\u00eb funksion t\u00eb integruar dhe locks, dhe mund t\u00eb ruani skedarin state. Provoni. Por un\u00eb gjithashtu nuk e kam testuar.<\/em><\/p>\n<p><\/p>\n<p>Ne po udh\u00ebtojm\u00eb n\u00eb nj\u00eb tren t\u00eb madh, i cili l\u00ebviz me nj\u00eb shpejt\u00ebsi t\u00eb madhe. Dhe nuk mund thjesht t\u00eb hiqni disa vagon\u00eb. <\/p>\n<p><\/p>\n<p><em>Folat p\u00ebr flakes, por p\u00ebrse nuk p\u00ebrdor\u00ebt branch? Pse nuk doli ashtu?<\/em><\/p>\n<p><\/p>\n<p>Ne kemi nj\u00eb qasje t\u00eb till\u00eb, q\u00eb t\u00eb gjith\u00eb infrastruktura \u00ebsht\u00eb n\u00eb nj\u00eb repository. Terraform, Puppet, t\u00eb gjitha skriptet q\u00eb kan\u00eb lidhje me k\u00ebt\u00eb, jan\u00eb t\u00eb gjitha n\u00eb nj\u00eb repository. K\u00ebshtu, mundemi t\u00eb garantojm\u00eb q\u00eb ndryshimet inkrementale jan\u00eb testuar nj\u00eb pas nj\u00eb. N\u00ebse do t\u00eb ishte nj\u00eb mori branches, projekti i till\u00eb \u00ebsht\u00eb praktikisht i pamundur t\u00eb menaxhohet. Kalojn\u00eb gjasht\u00eb muaj dhe ato t\u00eb shk\u00ebputen aq shum\u00eb sa q\u00eb \u00ebsht\u00eb thjesht nj\u00eb d\u00ebnim. Kjo \u00ebsht\u00eb ajo nga e cila d\u00ebshironim t\u00eb iknim para refaktorizimit. <\/p>\n<p><\/p>\n<p><em>Q\u00eb do t\u00eb thot\u00eb, kjo nuk funksionon?<\/em><\/p>\n<p><\/p>\n<p>Kjo n\u00eb fakt nuk funksionon.<\/p>\n<p><\/p>\n<p>N\u00eb branch kam hequr diapazonin e dosjeve. Q\u00eb do t\u00eb thot\u00eb, n\u00ebse e b\u00ebni p\u00ebr \u00e7do stack testues, p\u00ebr shembull, ekipi A - ka dosjen e tij, ekipi B ka dosjen e tij, at\u00ebher\u00eb kjo gjithashtu nuk funksionon. Ne krijuam nj\u00eb kod t\u00eb unifikuar p\u00ebr mjedisin e testit, i cili ishte mjaft fleksib\u00ebl p\u00ebr t'i p\u00ebrshtatur t\u00eb gjith\u00ebve. Q\u00eb do t\u00eb thot\u00eb, ne mbajt\u00ebm nj\u00eb kod. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Emri im \u00ebsht\u00eb Yura! Faleminderit p\u00ebr prezantimin! Kam nj\u00eb pyetje n\u00eb lidhje me modulet. Ju thoni se p\u00ebrdorni module. Si e zgjidhni problematik\u00ebn n\u00ebse b\u00ebni ndryshime n\u00eb nj\u00eb modul, t\u00eb cilat nuk jan\u00eb t\u00eb p\u00ebrshtatshme me ndryshimet e dikujt tjet\u00ebr? A e p\u00ebrkufizoni ndonj\u00ebher\u00eb versionet e moduleve ose p\u00ebrpiqeni t\u00eb b\u00ebni nj\u00eb gj\u00eb perfekte n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb p\u00ebrputheni me dy k\u00ebrkesa?<\/em><\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb nj\u00eb problem i madh i flakes. Kjo \u00ebsht\u00eb ajo q\u00eb ne vuajm\u00eb, kur ndonj\u00eb ndryshim i pafajsh\u00ebm mund t\u00eb prish nj\u00eb pjes\u00eb t\u00eb infrastruktur\u00ebs. Dhe kjo do t\u00eb jet\u00eb e dukshme vet\u00ebm pas nj\u00eb kohe t\u00eb gjat\u00eb.<\/p>\n<p><\/p>\n<p><em>Q\u00eb do t\u00eb thot\u00eb, ende nuk po zgjidhet?<\/em><\/p>\n<p><\/p>\n<p>B\u00ebni m\u00f3dulo t\u00eb universale. Shmangni flakes. Dhe gjith\u00e7ka do t\u00eb dal\u00eb mir\u00eb. Pjesa e dyt\u00eb e prezantimit \u00ebsht\u00eb se si ta evitoni k\u00ebt\u00eb.<\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr prezantimin! Doja t\u00eb sqaroj. Ka mbetur nj\u00eb grumbull i madh, p\u00ebr t\u00eb cilin erdha. Si jan\u00eb t\u00eb integruar Puppet dhe shp\u00ebrndarja e roleve?<\/em><\/p>\n<p><\/p>\n<p>User-data.<\/p>\n<p><\/p>\n<p><em>Q\u00eb do t\u00eb thot\u00eb, thjesht e nxirrni nj\u00eb sked\u00eb dhe sipas saj b\u00ebni ndonj\u00eb gj\u00eb?<\/em><\/p>\n<p><\/p>\n<p>User-data \u00ebsht\u00eb si nj\u00eb sh\u00ebnim, q\u00eb do t\u00eb thot\u00eb, kur ne b\u00ebjm\u00eb nj\u00eb klon t\u00eb imazhit, atje ngrihet nj\u00eb Daemon dhe duke u p\u00ebrpjekur t\u00eb kuptoj\u00eb se kush \u00ebsht\u00eb, lexon sh\u00ebnimin q\u00eb \u00ebsht\u00eb nj\u00eb load balancer.<\/p>\n<p><\/p>\n<p><em>Q\u00eb do t\u00eb thot\u00eb, \u00ebsht\u00eb nj\u00eb proces i ve\u00e7ant\u00eb q\u00eb i jepet?<\/em><\/p>\n<p><\/p>\n<p>Nuk e kemi shpikur ne. E p\u00ebrdorim. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Kam pik\u00ebrisht nj\u00eb pyetje n\u00eb lidhje me User-data. Ju that\u00eb se ka probleme, q\u00eb dikush mund t\u00eb d\u00ebrgoj\u00eb di\u00e7ka gabim. A ka ndonj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb ruajtur user-data n\u00eb t\u00eb nj\u00ebjtin Git, q\u00eb gjithmon\u00eb t\u00eb jet\u00eb e qart\u00eb se p\u00ebr \u00e7far\u00eb i referohet User-data?<\/em><\/p>\n<p><\/p>\n<p>Ne e gjenerojm\u00eb User-data nga template. Q\u00eb do t\u00eb thot\u00eb, aty hyjn\u00eb nj\u00eb sasi e caktuar variab\u00ebl. Dhe Terraform gjeneron rezultatin p\u00ebrfundimtar. Prandaj, nuk mund ta shihni thjesht template dhe t\u00eb thoni se \u00e7far\u00eb do t\u00eb dal\u00eb, sepse t\u00eb gjith\u00eb problemet lidhen me faktin se zhvilluesi mendon se po d\u00ebrgon nj\u00eb string n\u00eb k\u00ebt\u00eb variab\u00ebl, por aty hyjn\u00eb nj\u00eb mori. Dhe ai \u2013 bum dhe un\u00eb \u2013 ajo, ajo, rreshti tjet\u00ebr, dhe gjith\u00e7ka shkat\u00ebrrohet. N\u00ebse \u00ebsht\u00eb nj\u00eb burim i ri dhe dikush e ngre at\u00eb, sheh q\u00eb di\u00e7ka nuk funksionon, kjo zgjidhet shpejt. Por n\u00ebse kjo \u00ebsht\u00eb nj\u00eb grup autoscale q\u00eb p\u00ebrdit\u00ebsohet, at\u00ebher\u00eb n\u00eb nj\u00eb moment instancat n\u00eb grupin autoscale fillojn\u00eb t\u00eb z\u00ebvend\u00ebsohen. Dhe hop, di\u00e7ka nuk funksionon. Kjo \u00ebsht\u00eb e pak\u00ebndshme.<\/p>\n<p><\/p>\n<p><em>Pra, duket se zgjidhja e vetme \u00ebsht\u00eb t\u00eb testoni?<\/em><\/p>\n<p><\/p>\n<p>Po, ju shihni problemin, dhe shtoni hapa testues. Q\u00eb do t\u00eb thot\u00eb, mund t\u00eb testoni gjithashtu output-in. Ndoshta, nuk \u00ebsht\u00eb aq e leht\u00eb, por gjithashtu mund t\u00eb vendosni disa marka \u2013 kontrolloni se User-data \u00ebsht\u00eb k\u00ebtu e lidhur fort. <\/p>\n<p><\/p>\n<p><em>Emri im \u00ebsht\u00eb Timur. \u00cbsht\u00eb shum\u00eb mir\u00eb q\u00eb ka prezantime p\u00ebr se si t\u00eb organizohet sakt\u00eb Terraform.<\/em><\/p>\n<p><\/p>\n<p>Un\u00eb as q\u00eb nuk kam filluar.<\/p>\n<p><\/p>\n<p><em>Mendoj se n\u00eb konferenc\u00ebn tjet\u00ebr, ndoshta, do t\u00eb ket\u00eb. Kam nj\u00eb pyetje t\u00eb thjesht\u00eb. Pse e keni hardkoduar vler\u00ebn n\u00eb nj\u00eb modul t\u00eb ve\u00e7ant\u00eb, dhe jo p\u00ebrdorni tfvars, q\u00eb do t\u00eb thot\u00eb, \u00e7far\u00eb \u00ebsht\u00eb m\u00eb mir\u00eb nj\u00eb modul me vlera, sesa tfvars?<\/em><\/p>\n<p><\/p>\n<p>Q\u00eb do t\u00eb thot\u00eb, k\u00ebtu (slid: Production\/environment\/settings.tf) duhet t\u00eb shkruaj: domain = variabla, domain vpcnetwork, variabla vpcnetwork dhe stvars \u2013 t\u00eb nxjerr gjithashtu t\u00eb nj\u00ebjt\u00ebn gj\u00eb?<\/p>\n<p><\/p>\n<p><em>Ne e \u00e7far\u00eb b\u00ebjm\u00eb. Referohemi n\u00eb modulin setting source, p\u00ebr shembull.<\/em><\/p>\n<p><\/p>\n<p>N\u00eb thelb, kjo \u00ebsht\u00eb nj\u00eb tfvars. Tfvars \u00ebsht\u00eb shum\u00eb e p\u00ebrshtatshme n\u00eb mjedisin e testing. Kam tfvars p\u00ebr instance t\u00eb m\u00ebdha, p\u00ebr ato t\u00eb vogla. Dhe kam hedhur nj\u00eb skedar n\u00eb dosje. Dhe kam marr\u00eb at\u00eb q\u00eb doja. Kur gdhendim infrastruktur\u00ebn, duam t\u00eb mund t\u00eb shohim dhe t\u00eb kuptojm\u00eb gjith\u00e7ka menj\u00ebher\u00eb. Por ndodhi q\u00eb duhet t\u00eb shikoja k\u00ebtu, pastaj t\u00eb shikoja n\u00eb tfvars.<\/p>\n<p><\/p>\n<p><em>Pra, a \u00ebsht\u00eb e nevojshme q\u00eb gjith\u00e7ka t\u00eb jet\u00eb n\u00eb nj\u00eb vend?<\/em><\/p>\n<p><\/p>\n<p>Po, tfvars \u2013 \u00ebsht\u00eb kur keni nj\u00eb kod. Dhe ai p\u00ebrdoret n\u00eb disa vende t\u00eb ndryshme me nuanca t\u00eb ndryshme. At\u00ebher\u00eb do ta hedhnit tfvars dhe do t\u00eb merrnit nuancat tuaja. Dhe ne \u2013 kjo \u00ebsht\u00eb infrastruktura si kod n\u00eb m\u00ebnyr\u00eb t\u00eb past\u00ebr. E shikon dhe e kupton. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! A keni hasur situata t\u00eb tilla kur ofruesi i cloud nd\u00ebrhyn n\u00eb at\u00eb q\u00eb keni b\u00ebr\u00eb me Terraform? P\u00ebr shembull, ne po ndryshojm\u00eb metadatat. Aty jan\u00eb \u00e7el\u00ebsat ssh. Dhe Google vazhdimisht i vendos metadat e tij dhe \u00e7el\u00ebsat e tij atje. Dhe Terraform gjithmon\u00eb thot\u00eb se ka ndryshime. Pasi t\u00eb kaloni \u00e7do her\u00eb, edhe n\u00ebse nuk ka asnj\u00eb ndryshim, ai gjithmon\u00eb thot\u00eb se tani do t\u00eb p\u00ebrdit\u00ebsoj\u00eb k\u00ebt\u00eb fush\u00eb.<\/em><\/p>\n<p><\/p>\n<p>Me \u00e7el\u00ebsat, por \u2013 po, nj\u00eb pjes\u00eb e infrastruktur\u00ebs \u00ebsht\u00eb e prekur nga kjo, dmth. Terraform nuk mund t\u00eb ndryshoj\u00eb asgj\u00eb. Ne po ashtu nuk mund t\u00eb ndryshojm\u00eb asgj\u00eb me duar. Deri tani po e p\u00ebrballojm\u00eb k\u00ebt\u00eb.<\/p>\n<p><\/p>\n<p><em>Dometh\u00ebn\u00eb, keni hasur me k\u00ebt\u00eb, por nuk keni gjetur nj\u00eb zgjidhje, ai vazhdon t\u00eb veproj\u00eb vet\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Fatkeq\u00ebsisht, po. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Un\u00eb quhem Starkov Stanislav. Mail.ru Group. Si e zgjidhni problemin me gjenerimin e etiket\u00ebs n\u00eb \u2026, si e d\u00ebrgoni at\u00eb brenda? Mendoj se e b\u00ebni p\u00ebrmes User \u2014 data, p\u00ebr t\u00eb specifikuar emrin e host-it, p\u00ebr t\u00eb drejtuar Puppet? Dhe pjesa e dyt\u00eb e pyetjes. Si e zgjidhni k\u00ebt\u00eb \u00e7\u00ebshtje n\u00eb SG, dmth. kur gjeneroni SG, nj\u00eb qind instance t\u00eb ngjashme, si t'i em\u00ebrtoni ato si\u00e7 duhet?<\/em><\/p>\n<p><\/p>\n<p>Ato instance q\u00eb jan\u00eb shum\u00eb t\u00eb r\u00ebnd\u00ebsishme p\u00ebr ne, ne i em\u00ebrtojm\u00eb bukur. Ato q\u00eb nuk nevojiten, aty ka nj\u00eb shtes\u00eb, q\u00eb \u00ebsht\u00eb nj\u00eb grup autoscale. Dhe n\u00eb teori, kjo mund t\u00eb mbyllet, dhe t\u00eb merrni nj\u00eb t\u00eb re. <\/p>\n<p><\/p>\n<p>P\u00ebrsa i p\u00ebrket problemit me etiket\u00ebn, nuk ka nj\u00eb problem t\u00eb till\u00eb, por ka nj\u00eb detyr\u00eb t\u00eb till\u00eb. Dhe etiketat tona p\u00ebrdoren shum\u00eb, sepse infrastruktura \u00ebsht\u00eb e madhe dhe e shtrenjt\u00eb. Dhe duhet t\u00eb shohim se ku shkojn\u00eb parat\u00eb, prandaj etiketat lejojn\u00eb t\u00eb shqyrtojm\u00eb se \u00e7far\u00eb dhe ku shkuan. Dhe, p\u00ebrkat\u00ebsisht, t\u00eb gjejm\u00eb at\u00eb, q\u00eb ndonj\u00ebher\u00eb k\u00ebtu shpenzohen shum\u00eb para. <\/p>\n<p><\/p>\n<p>P\u00ebr \u00e7far\u00eb tjet\u00ebr ishte pyetjes?<\/p>\n<p><\/p>\n<p><em>Kur SG krijon nj\u00eb qind instance, duhet ndonj\u00ebher\u00eb t\u00eb ndahen ata?<\/em><\/p>\n<p><\/p>\n<p>Jo, nuk ka nevoj\u00eb. \u00c7do instance ka nj\u00eb agjent q\u00eb njofton se kam nj\u00eb problem. N\u00ebse agjenti njofton, at\u00ebher\u00eb agjenti e di p\u00ebr t\u00eb dhe, sa t\u00eb pakt\u00ebn, adresa e IP ekziston. At\u00ebher\u00eb mund t\u00eb veprohet. P\u00ebr m\u00eb tep\u00ebr, ne p\u00ebrdorim Consul p\u00ebr Discovery, aty ku nuk \u00ebsht\u00eb Kubernetes. Dhe Consul gjithashtu tregon adres\u00ebn IP t\u00eb instances.<\/p>\n<p><\/p>\n<p><em>Dometh\u00ebn\u00eb, orientoheni pik\u00ebrisht n\u00eb IP, dhe jo n\u00eb emrin e hostit?<\/em><\/p>\n<p><\/p>\n<p>Nuk mund t\u00eb orientoheshe sipas emrit t\u00eb hostit, dometh\u00ebn\u00eb, jan\u00eb shum\u00eb. Ka identifikues t\u00eb instances \u2013 AE etj. Ajo mund t\u00eb gjendet n\u00eb ndonj\u00eb vend, mund ta hidhni n\u00eb k\u00ebrkes\u00eb. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Kuptova se Terraform \u00ebsht\u00eb nj\u00eb gj\u00eb e mir\u00eb, e krijuar p\u00ebr cloud.<\/em> <\/p>\n<p><\/p>\n<p>Jo vet\u00ebm. <\/p>\n<p><\/p>\n<p><em>Ky \u00ebsht\u00eb pyetja q\u00eb m\u00eb intereson. N\u00ebse vendosni t\u00eb kaloni masivisht n\u00eb Bare Metal me t\u00eb gjith\u00eb instance tuaj? A do t\u00eb ket\u00eb ndonj\u00eb problem? Ose mund t\u00eb jet\u00eb e nevojshme t\u00eb p\u00ebrdorni produkte t\u00eb tjera, p\u00ebr shembull, Ansible q\u00eb u p\u00ebrmend k\u00ebtu?<\/em><\/p>\n<p><\/p>\n<p>Ansible \u00ebsht\u00eb pak m\u00eb ndryshe. Dometh\u00ebn\u00eb, Ansible funksionon at\u00ebher\u00eb kur instance \u00ebsht\u00eb nisur. Nd\u00ebrsa Terraform funksionon para se t\u00eb nis\u00eb instance. Kalimi n\u00eb Bare Metal \u2013 jo. <\/p>\n<p><\/p>\n<p><em>Aktualisht jo, por kur vjen biznesi dhe thot\u00eb: \u00abHajde\u00bb.<\/em><\/p>\n<p><\/p>\n<p>Kalimi n\u00eb nj\u00eb cloud tjet\u00ebr \u2013 po, por k\u00ebtu ka nj\u00eb p\u00ebrvoj\u00eb t\u00eb ndryshme. Duhet t\u00eb shkruani kodin Terraform n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb me sa m\u00eb pak mundim t\u00eb kaloni n\u00eb ndonj\u00eb cloud tjet\u00ebr. <\/p>\n<p><\/p>\n<p>Fillimisht u vendos nj\u00eb detyr\u00eb e till\u00eb, q\u00eb t\u00eb gjith\u00eb infrastruktura jon\u00eb t\u00eb jet\u00eb agnostike, dometh\u00ebn\u00eb \u00e7do cloud duhet t\u00eb p\u00ebrshtatet, por n\u00eb nj\u00eb moment biznesi u dor\u00ebzua dhe tha: \u201cOk, p\u00ebr vitet e ardhshme N ne nuk do t\u00eb ikim askund, mund t\u00eb p\u00ebrdorim sh\u00ebrbimet e Amazon.\u201d<\/p>\n<p><\/p>\n<p>Terraform lejon t\u00eb krijoni pun\u00eb Front-End, t\u00eb konfiguroni PagerDuty, data doc etj. Ka shum\u00eb funskion t\u00eb ndrysh\u00ebm. Ai praktikisht mund t\u00eb kontrolloj\u00eb gjith\u00eb bot\u00ebn.<\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr prezantimin! Edhe un\u00eb kam kat\u00ebr vjet q\u00eb punoj me Terraform. N\u00eb faz\u00ebn e kalimit t\u00eb but\u00eb n\u00eb Terraform, n\u00eb infrastruktur\u00ebn me p\u00ebrshkrim deklarativ, kemi hasur situata kur dikush b\u00ebri di\u00e7ka manualisht, nd\u00ebrsa ti p\u00ebrpiqesh t\u00eb b\u00ebsh nj\u00eb plan. Dhe merrje nj\u00eb gabim t\u00eb caktuar. Si i zgjidhni k\u00ebto probleme? Si gjeni burimet e humbura, t\u00eb cilat ishin specifikuar?<\/em><\/p>\n<p><\/p>\n<p>N\u00eb t\u00eb shumt\u00ebn e rasteve me duar dhe sy, n\u00ebse shohim di\u00e7ka t\u00eb \u00e7uditshme n\u00eb raport, at\u00ebher\u00eb analizojm\u00eb se \u00e7far\u00eb ndodh atje, ose thjesht e eliminojm\u00eb. Dhe n\u00eb p\u00ebrgjith\u00ebsi, k\u00ebrkesat e t\u00ebrheqjes jan\u00eb nj\u00eb praktik\u00eb e zakonshme. <\/p>\n<p><\/p>\n<p><em>N\u00ebse ka nj\u00eb gabim, a b\u00ebni rollback? A keni provuar t\u00eb b\u00ebni di\u00e7ka t\u00eb till\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Jo, kjo \u00ebsht\u00eb nj\u00eb vendim i njeriut n\u00eb momentin kur sheh \u00e7\u00ebshtjen.<\/p>\n<p>Burimi: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patterny-v-terraform-dlya-borby-s-haosom-i-ruchnoj-rutinoj-maksim-kostrikin-ixtens\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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:description\" content=\"\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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\udd47Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale. Maksim Kostrikkin (Ixtens) | ProHoster","description":"Duket se zhvilluesit e Terraform ofrojn\u00eb praktika t\u00eb mira mjaft t\u00eb p\u00ebrshtatshme p\u00ebr pun\u00ebn me infrastruktur\u00ebn AWS. Megjithat\u00eb, ka nj\u00eb nuanc\u00eb. Me kalimin e koh\u00ebs, numri i mjediseve rritet, secili ka karakteristikat e tij. P\u00ebraf\u00ebrsisht, krijohet nj\u00eb kopje e stack-ut t\u00eb aplikacioneve n\u00eb rajonin fqinj. Dhe kodi i Terraform-it duhet kopjuar dhe redaktuar me kujdes sipas k\u00ebrkesave t\u00eb reja apo krijuar nj\u00eb \"snowflake\". Prezantimi im fokusohet n\u00eb modelet n\u00eb Terraform p\u00ebr t'u p\u00ebrballur me","canonical_url":"https:\/\/prohoster.info\/sq\/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":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\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:description":"\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","og:url":"https:\/\/prohoster.info\/sq\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/98123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=98123"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/98123\/revisions"}],"predecessor-version":[{"id":164071,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/98123\/revisions\/164071"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/98124"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=98123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=98123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=98123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}