{"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 rutinat manuale. Maksim Kostrikin (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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/ec13125c702f42863bbe774cd805442b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Duket se zhvilluesit e Terraform ofrojn\u00eb praktikat m\u00eb t\u00eb mira mjaft t\u00eb p\u00ebrshtatshme p\u00ebr t\u00eb punuar me infrastruktur\u00ebn AWS. Por ka nj\u00eb nuanc\u00eb. Me kalimin e koh\u00ebs, numri i ambienteve rritet, me secilin duke pasur ve\u00e7orit\u00eb e veta. P nearly nj\u00eb kopje e piles s\u00eb aplikacioneve n\u00eb nj\u00eb region fqinj. Dhe kodi i Terraform-it duhet t\u00eb kopjohet me kujdes dhe t\u00eb redaktohet sipas k\u00ebrkesave t\u00eb reja ose t\u00eb b\u00ebhet nj\u00eb \u2018snowflake\u2019.<\/p>\n<p><\/p>\n<p>Referati im p\u00ebr modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutin\u00ebn manuale n\u00eb projekte t\u00eb m\u00ebdha dhe t\u00eb gjata.<\/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 rutinat manuale. Maksim Kostrikin (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, kam 20 vjet n\u00eb IT. Kam punuar 12 vjet n\u00eb kompanin\u00eb Ixtens. Ne merremi me zhvillimin e drejtuar nga ecommerce. Dhe 5 vjet praktikoj praktikat DevOps.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8b14b3adaa45d69278d76580baa99042.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Historia ime 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 p\u00ebrmend, duke u mb\u00ebshtetur n\u00eb marr\u00ebveshjen e moszbulimit. <\/p>\n<p><\/p>\n<p>Numrat n\u00eb slajd jan\u00eb t\u00eb treguar p\u00ebr t\u00eb kuptuar shkall\u00ebn e projektit. Dhe gjith\u00e7ka q\u00eb do t\u00eb them m\u00eb pas lidhet me Amazon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 kulmin e tij po kalonte nj\u00eb ristrukturim t\u00eb infrastruktur\u00ebs, sepse projekti ishte rritur. Dhe ato modele q\u00eb ishin p\u00ebrdorur nuk ishin m\u00eb t\u00eb p\u00ebrshtatshme. Dhe me t\u00eb gjith\u00eb rritjen e planifikuar t\u00eb projektit, duhej t\u00eb mendonim di\u00e7ka t\u00eb re. <\/p>\n<p><\/p>\n<p>Faleminderit Matvej, i cili dje tregoi se \u00e7far\u00eb ka ndodhur n\u00eb Dodo Pizza. Kjo \u00ebsht\u00eb ajo q\u00eb ndodhi me ne 4 vjet m\u00eb par\u00eb. <\/p>\n<p><\/p>\n<p>Ekipi i zhvilluesve erdhi dhe filloi t\u00eb b\u00ebnte kodin e infrastruktur\u00ebs. <\/p>\n<p><\/p>\n<p>Momentet m\u00eb t\u00eb obvious, p\u00ebrse ishte e nevojshme, ishin p\u00ebr shkak t\u00eb koh\u00ebs p\u00ebr treg. Duhej t\u00eb siguroja q\u00eb ekipi DevOps t\u00eb mos ishte pika e ngusht\u00eb gjat\u00eb zhvendosjes. Dhe p\u00ebrve\u00e7 t\u00eb gjitha, n\u00eb nivelin e par\u00eb 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 rutinat manuale. Maksim Kostrikin (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 rutinat manuale. Maksim Kostrikin (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 q\u00eb ne mund ta p\u00ebrshkruajm\u00eb infrastruktur\u00ebn ton\u00eb dhe t'u k\u00ebrkojm\u00eb disa robote t\u00eb b\u00ebjn\u00eb q\u00eb t\u00eb marrim 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=\"makina virtuale\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4196\">makina virtuale<\/a>. Ne do ta p\u00ebrshkruajm\u00eb, do t\u00eb shtojm\u00eb disa parametra t\u00eb detyruesh\u00ebm. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 qasjen n\u00eb Amazon. Dhe do t'i k\u00ebrkojm\u00eb Terraform plan. Terraform plan do t\u00eb thot\u00eb: \"Ok, p\u00ebr burimin tuaj mund t\u00eb b\u00ebjm\u00eb k\u00ebto gj\u00ebra\". Dhe, si t\u00eb pakt\u00ebn, nj\u00eb burim do t\u00eb shtohet. Dhe nuk pritet asnj\u00eb ndryshim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/879e645596121ee5d05ac247b4be19ee.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pasi gjith\u00e7ka ju p\u00ebrshtatet, mund t'i 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 re tuaj.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/77b7fe4d6abcc9116233f48caa887465.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00eb tej, projekti yn\u00eb po zhvillohet. Ne po shtojm\u00eb disa ndryshime atje. K\u00ebrkojm\u00eb m\u00eb shum\u00eb instance, po shtojm\u00eb nj\u00eb regjist\u00ebr 53.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/98ce7e1f9d1f85aa5e78c269a0708ac1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe e p\u00ebrs\u00ebrisim. K\u00ebrkojm\u00eb planin. Shohim cilat ndryshime jan\u00eb planifikuar. I aplikojm\u00eb. Dhe k\u00ebshtu infrastruktura jon\u00eb rritet. <\/p>\n<p><\/p>\n<p>Terraform p\u00ebrdor di\u00e7ka si skedar\u00eb state. Pra, t\u00eb gjitha ndryshimet q\u00eb shkojn\u00eb n\u00eb Amazon, ai i ruan n\u00eb nj\u00eb skedar, ku p\u00ebr \u00e7do burim q\u00eb keni p\u00ebrshkruar, ekzistojn\u00eb burimet p\u00ebrkat\u00ebse q\u00eb jan\u00eb krijuar n\u00eb Amazon. K\u00ebshtu, kur ndryshoni p\u00ebrshkrimin e ndonj\u00eb burimi, Terraform e di sakt\u00ebsisht se \u00e7far\u00eb duhet t\u00eb ndryshohet n\u00eb Amazon.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 state fillimisht ishin thjesht skedar\u00eb. Dhe ne i ruanim n\u00eb Git, q\u00eb ishte jasht\u00ebzakonisht e par\u00ebnd\u00ebsishme. Vazhdimisht dikush harronte t\u00eb komitonte ndryshimet, duke shkaktuar 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 tregohet n\u00eb cilin bucket, sipas \u00e7el\u00ebsit duhet t\u00eb ruaj\u00eb skedarin state. Dhe Terraform do t\u00eb kujdeset vet\u00eb p\u00ebr t\u00eb nxjerr\u00eb k\u00ebt\u00eb skedar state, p\u00ebr t\u00eb b\u00ebr\u00eb gjith\u00eb magjin\u00eb dhe p\u00ebr ta vendosur p\u00ebrs\u00ebri rezultatin p\u00ebrfundimtar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/e6687463a9fe3cff979f44ac7778b4e8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Infrastruktura jon\u00eb po rritet. K\u00ebtu \u00ebsht\u00eb 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 rutinat manuale. Maksim Kostrikin (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 b\u00ebjm\u00eb nj\u00eb gj\u00eb t\u00eb till\u00eb si modul, pra ta p\u00ebrshkruajm\u00eb 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 rutinat manuale. Maksim Kostrikin (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\u00e7 do t\u00eb b\u00ebnim duke ekzekutuar Terraform apply brenda modulit. P\u00ebr testim do t\u00eb ket\u00eb nj\u00eb kod t\u00eb till\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/fa4c16e3835a4507a858d2ddb767daf3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr prodhim ne mund t\u00eb d\u00ebrgojm\u00eb disa ndryshime atje, sepse n\u00eb testim nuk na duhen instance t\u00eb m\u00ebdha, n\u00eb prodhim instance t\u00eb m\u00ebdha do t\u00eb ishin t\u00eb dobishme.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/19478de23da2278567e66bacef78a0a9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe m\u00eb pas do t\u00eb kthehem p\u00ebrs\u00ebri n\u00eb projekt. Ishte nj\u00eb detyr\u00eb e v\u00ebshtir\u00eb, infrastruktura ishte planifikuar shum\u00eb e madhe. Dhe duhej t\u00eb vendosej ndonj\u00ebher\u00eb e gjith\u00eb kodi, q\u00eb t\u00eb ishte e p\u00ebrshtatshme p\u00ebr t\u00eb gjith\u00eb: p\u00ebr ata q\u00eb b\u00ebjn\u00eb mir\u00ebmbajtjen e k\u00ebtij kodi, dhe p\u00ebr ata q\u00eb b\u00ebjn\u00eb ndryshime. Ishte planifikuar q\u00eb \u00e7do zhvillues mund t\u00eb shkoj\u00eb dhe t\u00eb rregulloj\u00eb infrastruktur\u00ebn si\u00e7 \u00ebsht\u00eb 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 vet\u00eb HashiCorp, n\u00ebse keni nj\u00eb projekt t\u00eb madh dhe ka kuptim t\u00eb ndani t\u00eb gjith\u00eb infrastruktur\u00ebn n\u00eb disa pjes\u00eb t\u00eb vogla, dhe \u00e7do pjes\u00eb t\u00eb p\u00ebrshkruhet 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, n\u00eb testim dhe n\u00eb prodhim mund t\u00eb th\u00ebrrasim p\u00ebr rreth 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 rutinat manuale. Maksim Kostrikin (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 plot\u00ebsisht e p\u00ebrshtatshme, sepse testi i stack-ut p\u00ebr zhvilluesit ose p\u00ebr testim duhej t\u00eb ishte m\u00eb i thjesht\u00eb p\u00ebr t'u marr\u00eb. Nuk doja t\u00eb shkoja n\u00ebp\u00ebr dosje dhe t\u00eb aplikoja n\u00eb nj\u00eb rend t\u00eb caktuar, duke u shqet\u00ebsuar n\u00ebse baza do ngrihej dhe pastaj do ngrihej instanca q\u00eb p\u00ebrdor k\u00ebt\u00eb baz\u00eb. Prandaj, t\u00eb gjitha testet filluan nga nj\u00eb dosje e vetme. Atje u thirr\u00ebn t\u00eb nj\u00ebjtat module, por e gjitha u kalua n\u00eb nj\u00eb shtes\u00eb.<\/p>\n<p><\/p>\n<p>Terraform merret me t\u00eb gjitha var\u00ebsit\u00eb. Dhe gjithmon\u00eb krijon burimet n\u00eb rendin q\u00eb lejon marrjen e nj\u00eb adrese IP, p\u00ebr shembull, nga instanca e sapo krijuar, dhe merr k\u00ebt\u00eb adres\u00eb IP n\u00eb regjistrimin route53. <\/p>\n<p><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, platforma \u00ebsht\u00eb shum\u00eb e madhe. Dhe nisja e stack-ut t\u00eb testit, edhe n\u00ebse \u00ebsht\u00eb p\u00ebr nj\u00eb or\u00eb, edhe n\u00ebse p\u00ebr 8 or\u00eb \u2013 \u00ebsht\u00eb nj\u00eb proces mjaft i kushtuesh\u00ebm. <\/p>\n<p><\/p>\n<p>Dhe ne e automatizuam k\u00ebt\u00eb proces. Dhe pun\u00ebsimi i Jenkins mund\u00ebsonte nisjen e stack-ut. Duhej t\u00eb nisnim k\u00ebrkes\u00ebn p\u00ebr t\u00ebrheqje me ndryshimet q\u00eb zhvilluesi d\u00ebshironte t\u00eb testonte, duke treguar t\u00eb gjitha opsionet e nevojshme, komponent\u00ebt, si dhe dimensionet. N\u00ebse ai d\u00ebshiron testim t\u00eb performanc\u00ebs, mund t\u00eb marr\u00eb m\u00eb shum\u00eb instance. N\u00ebse thjesht d\u00ebshiron t\u00eb kontrolloj\u00eb q\u00eb nj\u00eb formular hapet, mund t\u00eb filloj\u00eb me minimumet. Gjithashtu, duhej t\u00eb tregonte n\u00ebse duhej nj\u00eb klaster ose jo, etj. <\/p>\n<p><\/p>\n<p>Dhe pastaj Jenkins e shtypte skriptin e shell-it, i cili modifikonte pak kodin n\u00eb dosjen Terraform. Hiqte skedar\u00ebt e panevojsh\u00ebm, shtonte skedar\u00ebt e nevojsh\u00ebm. Dhe pastaj, me nj\u00eb kalim, Terraform apply ngrihej stack-u. <\/p>\n<p><\/p>\n<p>Pas k\u00ebsaj vinin hapat e tjer\u00eb, n\u00eb t\u00eb cilat nuk d\u00ebshiroj t\u00eb thellohem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 duhej pak m\u00eb shum\u00eb mund\u00ebsi sesa n\u00eb prodhim, na duhej t\u00eb b\u00ebnim kopje t\u00eb moduleve, n\u00eb m\u00ebnyr\u00eb q\u00eb n\u00eb k\u00ebto kopje t\u00eb mund t\u00eb shtonim ato karakteristika q\u00eb jan\u00eb t\u00eb nevojshme vet\u00ebm p\u00ebr testim. <\/p>\n<p><\/p>\n<p>Dhe k\u00ebshtu ndodhi q\u00eb n\u00eb testim duket se d\u00ebshirohej t\u00eb testoheshin ato ndryshime q\u00eb p\u00ebrfundimisht do shkonin n\u00eb prodhim. Por n\u00eb t\u00eb v\u00ebrtet\u00eb, nj\u00eb gj\u00eb u testua, nd\u00ebrsa n\u00eb prodhim aplikohej di\u00e7ka tjet\u00ebr. Dhe kishte nj\u00eb munges\u00eb t\u00eb vog\u00ebl t\u00eb marr\u00ebdh\u00ebnies, q\u00eb n\u00eb prodhim t\u00eb gjitha ndryshimet aplikohej nga ekipi operativ. Dhe ndonj\u00ebher\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 t\u00eb till\u00eb se nj\u00eb sh\u00ebrbim i ri ishte shtuar, q\u00eb dallohej pak nga ndonj\u00eb sh\u00ebrbim 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, at\u00ebher\u00eb ne e deklarojm\u00eb. Dhe gjith\u00e7ka funksionon.<\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb moment, kur ishte duke u diskutuar nj\u00eb nga k\u00ebrkesat e mia p\u00ebr bashkimin, nj\u00eb nga koleg\u00ebt tha se nuk duhet t\u00eb prodhohen flok\u00eb. Un\u00eb u interesova se \u00e7far\u00eb donte t\u00eb thoshte ai. Ekziston nj\u00eb fakt shkencor, se n\u00eb bot\u00eb nuk ekzistojn\u00eb dy flok\u00eb t\u00eb nj\u00ebjt\u00eb, t\u00eb gjith\u00eb ata dallohet pak. Dhe sa her\u00eb q\u00eb e d\u00ebgjova k\u00ebt\u00eb, ndjeva menj\u00ebher\u00eb t\u00ebr\u00eb pesh\u00ebn e kodit Terraform. Sepse kur ishte e nevojshme t\u00eb kalonit nga nj\u00eb version n\u00eb nj\u00eb tjet\u00ebr, Terraform k\u00ebrkonte ndryshime t\u00eb r\u00ebnd\u00ebsishme, dometh\u00ebn\u00eb kodi nuk ishte m\u00eb i p\u00ebrputhsh\u00ebm me versionin tjet\u00ebr. Dhe duhej b\u00ebr\u00eb nj\u00eb k\u00ebrkes\u00eb p\u00ebr bashkimin, e cila mb covering almost half of the files in the infrastructure to bring the infrastructure to the next version of Terraform.<\/p>\n<p><\/p>\n<p>Dhe pas shfaqjes s\u00eb k\u00ebtij floku, t\u00ebr\u00eb kodi Terraform q\u00eb kishim shnd\u00ebrrohej n\u00eb nj\u00eb grumbull t\u00eb madh floku. <\/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 k\u00ebrkes\u00eb p\u00ebr bashkimin, burimi i tij u ndez. Dhe kjo \u00ebsht\u00eb, m\u00eb tej nuk \u00ebsht\u00eb brengosja e tij. Por, ekipi DevOps, i cili ndjek q\u00eb gjith\u00e7ka t\u00eb jet\u00eb n\u00eb rregull, duhet t\u00eb b\u00ebj\u00eb t\u00eb gjitha k\u00ebto ndryshime. Dhe kostoja e k\u00ebtyre ndryshimeve rritej shum\u00eb me \u00e7do cop\u00eb t\u00eb \u0625\u0636\u0627\u0641uar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 seminar pikturon me leck\u00eb n\u00eb bord dy rreth t\u00eb p\u00ebrsosur. Dhe profesori habitet se si ia doli kaq mir\u00eb pa kompast. Studenti p\u00ebrgjigjet: \u201cShum\u00eb thjesht, kam rrotulluar nj\u00eb makin\u00eb mishi p\u00ebr dy vjet n\u00eb ushtri.\u201d <\/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, rreth dy vjet kam punuar me Terraform. Dhe, sigurisht, kam disa truke, disa k\u00ebshilla, se si mund ta thjeshtoj kodin Terraform, ta p\u00ebrdor si nj\u00eb gjuh\u00eb programuese dhe t\u00eb ulem ngarkes\u00ebn p\u00ebr zhvilluesit, t\u00eb cil\u00ebt duhet ta mbajn\u00eb k\u00ebt\u00eb kod n\u00eb gjendje t\u00eb p\u00ebrdit\u00ebsuar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9413c6adf1933482dcc822b021773df9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E para, \u00e7ka d\u00ebshiroj t\u00eb filloj, jan\u00eb Symlinks. Terraform ka shum\u00eb kode t\u00eb p\u00ebrs\u00ebritura. P\u00ebr shembull, thirrja e ofruesit \u00ebsht\u00eb praktikisht n\u00eb \u00e7do pik\u00eb ku ne krijojm\u00eb nj\u00eb cop\u00eb infrastrukture, e nj\u00ebjt\u00eb. Dhe \u00ebsht\u00eb logjike ta nxjerrim n\u00eb nj\u00eb dosje t\u00eb ve\u00e7ant\u00eb. E n\u00eb \u00e7do vend ku k\u00ebrkohet ofruesi, t\u00eb krijojm\u00eb 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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/6dcf36cc8c94e7a70cf6ab1456cc1215.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr shembull, n\u00eb prodhim keni nj\u00eb rol t\u00eb supozuar, q\u00eb ju lejon t\u00eb fitoni t\u00eb drejta p\u00ebr ndonj\u00eb llogari t\u00eb jashtme n\u00eb Amazon. Dhe duke ndryshuar nj\u00eb skedar, t\u00eb gjitha skedar\u00ebt e tjer\u00eb n\u00eb pem\u00ebn e burimeve do t\u00eb ken\u00eb t\u00eb drejtat e nevojshme, q\u00eb Terraform t\u00eb dij\u00eb n\u00eb cilin segment t\u00eb Amazon-it t\u00eb drejtohet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 thash\u00eb, n\u00eb Terraform ka skedar\u00eb state. Dhe ata jan\u00eb shum\u00eb, shum\u00eb t\u00eb shk\u00eblqyer. Por problemi \u00ebsht\u00eb se Terraform inicializon backend-in n\u00eb t\u00eb parin. Dhe ai nuk mund t\u00eb p\u00ebrdor\u00eb n\u00eb k\u00ebto parametra ndonj\u00eb variab\u00ebl, gjithmon\u00eb duhet t'i shkruani ato n\u00eb tekst. <\/p>\n<p><\/p>\n<p>Si rezultat, kur dikush krijon nj\u00eb burim t\u00eb ri, ai kopjon nj\u00eb pjes\u00eb t\u00eb kodit nga dosje t\u00eb tjera. Dhe mund t\u00eb gaboj\u00eb me \u00e7el\u00ebsin ose me bucket-in. P\u00ebr shembull, ai nga sandbox b\u00ebn di\u00e7ka nga sandbox, dhe pastaj e b\u00ebn n\u00eb prodhim. Dhe k\u00ebshtu mund t\u00eb ndodhi q\u00eb bucket-i n\u00eb prodhim t\u00eb p\u00ebrdoret nga sandbox. Sigurisht, kjo do t\u00eb zbuloheshin shpejt. Mund t\u00eb rregullohet ndonj\u00ebher\u00eb, por megjithat\u00eb kjo \u00ebsht\u00eb nj\u00eb humbje kohe dhe n\u00eb nj\u00eb far\u00eb m\u00ebnyre burimesh. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 tej? Para se t\u00eb punojm\u00eb me Terraform, duhet ta inicializojm\u00eb at\u00eb. N\u00eb momentin e inicializimit, Terraform shkarkon t\u00eb gjitha plugin-et. Ato n\u00eb nj\u00eb moment u ndan\u00eb nga monoliti n\u00eb nj\u00eb arkitektur\u00eb m\u00eb mikrosherbimesh. Dhe gjithmon\u00eb duhet t\u00eb b\u00ebni Terraform init, q\u00eb t\u00eb t\u00ebrheq\u00eb t\u00eb gjith\u00eb modul\u00ebt, t\u00eb gjitha plugin-et.<\/p>\n<p><\/p>\n<p>Dhe mund t\u00eb p\u00ebrdorni nj\u00eb skrypt shell, i cili, n\u00eb radh\u00eb t\u00eb par\u00eb, mund t\u00eb nxjerr\u00eb t\u00eb gjitha variablat. Skripti shell nuk ka kufizime. Dhe, n\u00eb radh\u00eb t\u00eb dyt\u00eb, rrug\u00ebt. N\u00ebse ne gjithmon\u00eb p\u00ebrdorim at\u00eb rrug\u00eb, e cila \u00ebsht\u00eb n\u00eb depo si \u00e7el\u00ebsi p\u00ebr skedarin e state-it, at\u00ebher\u00eb, sipas rrethanave, 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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b70dbc6d8edb1b255c64d722a7e40680.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nga ku mund t\u00eb merret t\u00eb dh\u00ebna? Skedari JSON. Terraform lejon regjistrimin e infrastruktur\u00ebs jo vet\u00ebm n\u00eb hcl (HashiCorp Configuration Language), por gjithashtu n\u00eb JSON.<\/p>\n<p><\/p>\n<p>JSON leht\u00ebsisht lexon nga skripti shell. Prandaj, mund t\u00eb vendosni diku skedarin e konfigurimit me bucket. Dhe t\u00eb p\u00ebrdorni k\u00ebt\u00eb bucket si n\u00eb kodin Terraform, ashtu edhe n\u00eb skriptin shell p\u00ebr inicializim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/a18b92cac763003ec49af8d4a37e19d9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrse \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kesh nj\u00eb bucket p\u00ebr Terraform? Sepse ekziston di\u00e7ka si skedar\u00ebt remote state. Pra, kur ngrej nj\u00eb burim, duhet t'i tregoj Amazon-it: \"T\u00eb lutem, ngre instance\", dhe duhet t\u00eb listoj shum\u00eb parametra t\u00eb detyruesh\u00ebm. <\/p>\n<p><\/p>\n<p>Dhe k\u00ebto identifikues ruhen n\u00eb nj\u00eb folder tjet\u00ebr. Dhe un\u00eb mund t\u00eb them: \"Terraform, shko t\u00eb lutem n\u00eb skedarin state t\u00eb atij burimi dhe m\u00eb nxirr k\u00ebta identifikues.\" K\u00ebshtu, krijohet nj\u00eb form\u00eb unifikimi midis rajoneve t\u00eb ndryshme ose mjediseve.<\/p>\n<p><\/p>\n<p>Nuk \u00ebsht\u00eb gjithmon\u00eb e mundur t\u00eb p\u00ebrdor\u00ebsh nj\u00eb skedar remote state. P\u00ebr shembull, n\u00ebse e ke krijuar manualisht nj\u00eb VPC. Dhe kodi Terraform q\u00eb krijon VPC-n\u00eb \u00ebsht\u00eb kaq i ndrysh\u00ebm q\u00eb do t\u00eb duhet ta p\u00ebrshtas\u00ebsh p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, k\u00ebshtu q\u00eb mund t\u00eb p\u00ebrdorim nj\u00eb truk tjet\u00ebr. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/04ffcd97e2fae323d9b4d81e5f6c751a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pra, t\u00eb krijosh nj\u00eb modul q\u00eb si\u00e7 do krijonte nj\u00eb VPC dhe do t\u00eb t\u00eb jepte identifikuesit, nd\u00ebrsa n\u00eb t\u00eb v\u00ebrtet\u00eb ka nj\u00eb sked\u00eb me vlera t\u00eb koduara q\u00eb mund t\u00eb p\u00ebrdoren p\u00ebr t\u00eb krijuar t\u00eb nj\u00ebjtin instance.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 ruhet nj\u00eb skedar state n\u00eb cloud. P\u00ebr shembull, kur testohen modul\u00ebt, mund t\u00eb p\u00ebrdoret inicializimi i backend-it, ku skedari do t\u00eb ruhet thjesht n\u00eb disk gjat\u00eb testimit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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? Sigurisht, shum\u00eb gj\u00ebra mund t\u00eb testohet, por un\u00eb do t\u00eb flas p\u00ebr k\u00ebto 4 elemente.<\/p>\n<p><\/p>\n<p>HashiCorp ka nj\u00eb kuptim se si duhet t\u00eb formatohet kodi Terraform. Dhe Terraform fmt t\u00eb lejon t\u00eb formatosh kodin q\u00eb po redakton n\u00eb p\u00ebrputhje me k\u00ebt\u00eb besim. Prandaj, testet duhet patjet\u00ebr t\u00eb kontrollojn\u00eb n\u00ebse formati p\u00ebrputhet me at\u00eb q\u00eb ka l\u00ebn\u00eb HashiCorp, p\u00ebr t\u00eb mos pasur nevoj\u00eb t\u00eb ndryshosh vendosjen e thonj\u00ebve etj. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/bb99ffdd9f963f0f44ea7b5379689737.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tjetra \u00ebsht\u00eb Terraform validate. Ai b\u00ebn pak m\u00eb shum\u00eb se kontrolli i sintaks\u00ebs - si, a jan\u00eb t\u00eb gjitha thonj\u00ebzat \u00e7ift. \u00c7far\u00eb \u00ebsht\u00eb e r\u00ebnd\u00ebsishme k\u00ebtu? Infrastruktura jon\u00eb \u00ebsht\u00eb shum\u00eb e zmadhuar. Ka shum\u00eb foldere t\u00eb ndryshme. Dhe n\u00eb \u00e7do nj\u00eb prej tyre duhet t\u00eb ekzekutojm\u00eb Terraform validate.<\/p>\n<p><\/p>\n<p>Pra, p\u00ebr t\u00eb p\u00ebrshpejtuar testimin, ne ekzekutojm\u00eb disa procese paralelisht, duke p\u00ebrdorur paralelizmin. <\/p>\n<p><\/p>\n<p>Paralelizmi \u00ebsht\u00eb nj\u00eb gj\u00eb shum\u00eb e shk\u00eblqyer, 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 plugin\u00ebve? Dhe ai plugin q\u00eb kam n\u00eb cache \u2013 \u00ebsht\u00eb ai apo jo?\". Dhe kjo n\u00eb \u00e7do hap krijon nj\u00eb ngadal\u00ebsim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/836e90327c7a60c493f42f0a055e248b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse i jepet Terraformit vendndodhja e plugin\u00ebve, ai do t\u00eb thot\u00eb: \"Ok, ndoshta kjo \u00ebsht\u00eb m\u00eb e fresk\u00ebt q\u00eb ka. Nuk do t\u00eb shkoj askund, do t\u00eb filloj menj\u00ebher\u00eb t\u00eb validioj kodin tuaj Terraform.\"<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/8ab344cf8de7087d30a1212d44691c20.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr ta mbushur dosjen me plugin\u00ebt e nevojsh\u00ebm, kemi nj\u00eb kod shum\u00eb t\u00eb thjesht\u00eb Terraform q\u00eb duhet thjesht t\u00eb inicializohet. K\u00ebtu, sigurisht, duhet t\u00eb tregojm\u00eb t\u00eb gjith\u00eb ofruesit q\u00eb jan\u00eb p\u00ebrfshir\u00eb n\u00eb kodin tuaj, p\u00ebrndryshe Terraform do t\u00eb thot\u00eb: \"Nuk e di 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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/b8130753045624d38bce32ba08b56fb0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E nes\u00ebrmja \u00ebsht\u00eb Terraform plan. Si\u00e7 e thash\u00eb, zhvillimi \u00ebsht\u00eb ciklik. Ne b\u00ebjm\u00eb kod me ndryshime. Dhe m\u00eb pas 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- shum\u00eb e madhe, mund t\u00eb ndryshosh nj\u00eb modul, t\u00eb rregullosh nj\u00eb ambient testi ose ndonj\u00eb rajon konkret dhe t\u00eb thysh ndonj\u00eb t\u00eb af\u00ebrt. Prandaj, plani i Terraform 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>K\u00ebt\u00eb mund ta b\u00ebsh n\u00eb m\u00ebnyr\u00eb inteligjente. 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 q\u00eb \u00ebsht\u00eb ndryshuar: moduli Terraform ose thjesht ndonj\u00eb komponent konkret, ai b\u00ebn plane p\u00ebr t\u00eb gjitha dosjet e varura.<\/p>\n<p><\/p>\n<p>Plani i Terraform 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 p\u00ebr \u00e7do ndryshim, p\u00ebr \u00e7do komit, por planet \u2013 jan\u00eb nj\u00eb gj\u00eb mjaft e kushtueshme. Dhe n\u00eb pull request themi: \"T\u00eb lutem, m\u00eb jep planet.\" Aktivizohet nj\u00eb robot. Dhe ai d\u00ebrgon n\u00eb komente ose n\u00eb attach t\u00eb gjitha planet q\u00eb priten nga ndryshimet tuaja. <\/p>\n<p><\/p>\n<p>Plani \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 ky autoscale t\u00eb nj\u00ebjtat parametra?\". Dhe p\u00ebr ta p\u00ebrshpejtuar k\u00ebt\u00eb, mund t\u00eb p\u00ebrdorim nj\u00eb parametr\u00eb si refresh=false. Kjo do t\u00eb thot\u00eb se Terraform do t\u00eb shkarkoj\u00eb nga S3 state. Dhe do t\u00eb besoj\u00eb se state do t\u00eb p\u00ebrputhet sakt\u00ebsisht me at\u00eb q\u00eb gjendet n\u00eb Amazon.<\/p>\n<p><\/p>\n<p>Ky Terraform plan kalon ndjesh\u00ebm m\u00eb shpejt, por state duhet t\u00eb p\u00ebrputhet me infrastruktur\u00ebn tuaj, dmth. diku, dikur duhet t\u00eb aktivizohet Terraform refresh. Terraform refresh b\u00ebn at\u00eb q\u00eb duhet p\u00ebr t\u00eb siguruar q\u00eb state p\u00ebrputhet me at\u00eb q\u00eb \u00ebsht\u00eb n\u00eb infrastruktur\u00ebn reale. <\/p>\n<p><\/p>\n<p>Dhe duhet t\u00eb flasim p\u00ebr sigurin\u00eb. K\u00ebtu duhej t\u00eb fillonim. Atje ku ju aktivizoni Terraform, dhe Terraform punon me infrastruktur\u00ebn tuaj, ka nj\u00eb vulnerabilitet. Dometh\u00ebn\u00eb, 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 shum\u00eb akses. Prandaj, jini t\u00eb kujdessh\u00ebm 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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/2153cc01acf2b1f46978f837b82b317e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E next q\u00eb 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 nga instance - meta-t\u00eb dh\u00ebna. Kur instance starton, zakonisht 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 zakone kryen disa veprime.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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 duket si nj\u00eb grumbull me numra. Dometh\u00ebn\u00eb, ai thjesht ju d\u00ebrgon nj\u00eb hash. Dhe e gjith\u00eb ajo q\u00eb mund t\u00eb shihni n\u00eb plan \u00ebsht\u00eb n\u00ebse do t\u00eb ket\u00eb ndonj\u00eb ndryshim ose hash do t\u00eb mbetet i nj\u00ebjt\u00eb. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse nuk i kushtoni v\u00ebmendje, at\u00ebher\u00eb n\u00eb Amazon, n\u00eb infrastruktur\u00ebn reale, mund t\u00eb shkoj\u00eb ndonj\u00eb skedar i ndotur tekstual. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/cd7b56f1149d9cbebb0ad3228c0eeb5f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si nj\u00eb opsion, mund t\u00eb tregoni gjat\u00eb ekzekutimit jo t\u00eb gjith\u00eb infrastruktur\u00ebn, por vet\u00ebm template-in. Dhe n\u00eb kod, t\u00eb thoni: \"Ju lutem, m\u00eb tregoni k\u00ebt\u00eb template\". Dhe n\u00eb fund 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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/86da779cdf7f9cacfd80a196efde47f7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb opsion tjet\u00ebr \u00ebsht\u00eb t\u00eb p\u00ebrdorni nj\u00eb modul p\u00ebr gjenerimin e user-data. Do ta p\u00ebrdorni k\u00ebt\u00eb modul. Merrni nj\u00eb skedar n\u00eb disk. E krahasoni at\u00eb me referenc\u00ebn. Dhe n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, n\u00ebse ndonj\u00eb junior vendos t\u00eb p\u00ebrmir\u00ebsoj\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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/7e69ec1b2c04710066d93ee48f872254.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E next q\u00eb do t\u00eb doja t\u00eb flisja \u00ebsht\u00eb Automate Terraform apply.<\/p>\n<p><\/p>\n<p>Sigurisht, \u00ebsht\u00eb mjaft frik\u00ebshme t\u00eb b\u00ebsh Terraform apply n\u00eb m\u00ebnyr\u00eb automatike, sepse, kush e di se \u00e7far\u00eb ndryshimesh jan\u00eb b\u00ebr\u00eb dhe sa shkat\u00ebrruese mund t\u00eb jen\u00eb p\u00ebr infrastruktur\u00ebn e gjall\u00eb. <\/p>\n<p><\/p>\n<p>P\u00ebr nj\u00eb mjedis testimi \u2013 kjo \u00ebsht\u00eb gj\u00ebja e duhur. Do t\u00eb thot\u00eb, puna q\u00eb krijon nj\u00eb mjedis testimi \u00ebsht\u00eb ajo q\u00eb i nevojitet t\u00eb gjith\u00eb zhvilluesve. Dhe nj\u00eb shprehje si \"m\u00eb punoi gjith\u00e7ka\" \u2013 nuk \u00ebsht\u00eb nj\u00eb meme qesharake, por nj\u00eb prov\u00eb q\u00eb personi u angazhua, ngriti stakun, ekzekutoi disa teste mbi k\u00ebt\u00eb stak. Dhe u siguruar q\u00eb gjith\u00e7ka ishte n\u00eb rregull dhe tha: \"Ok, kodi q\u00eb po l\u00eb sho\u00eb \u00ebsht\u00eb testuar.\"<\/p>\n<p><\/p>\n<p>N\u00eb prodhim, sandbox dhe ambiente t\u00eb tjera, t\u00eb cilat jan\u00eb m\u00eb t\u00eb r\u00ebnd\u00ebsishme p\u00ebr biznesin, mund t\u00eb aplikohet pjes\u00ebrisht disa resurse mjaft t\u00eb sigurta, sepse kjo nuk \u00e7on n\u00eb ndonj\u00eb pasoj\u00eb fatale. K\u00ebto jan\u00eb: grupet autoscale, grupet e siguris\u00eb, rolet, route53 dhe lista mund t\u00eb jet\u00eb mjaft e madhe. Por monitoroni at\u00eb q\u00eb ndodh, lexoni raportet mbi aplikimet automatike. <\/p>\n<p><\/p>\n<p>Aty ku aplikimi \u00ebsht\u00eb i rreziksh\u00ebm ose friksh\u00ebm, p\u00ebr shembull, n\u00ebse jan\u00eb disa resurse me persistent, me baza t\u00eb dh\u00ebnash, merrni raportet p\u00ebr at\u00eb q\u00eb ka disa ndryshime t\u00eb paplikuar n\u00eb nj\u00eb pjes\u00eb t\u00eb infrastruktur\u00ebs. Dhe inxhinieri n\u00ebn mbik\u00ebqyrje ekzekuton 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 ka nj\u00eb funksion q\u00eb quhet Mbrojtja nga p\u00ebrfundimi. Dhe ajo mund t\u00eb mbroj\u00eb n\u00eb disa raste nga ndryshime t\u00eb paautorizuara p\u00ebr ju. Do t\u00eb thot\u00eb, Terraform shkoi n\u00eb Amazon dhe thot\u00eb: \"M\u00eb nevojitet 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. Kemi vendosur Mbrojtjen nga p\u00ebrfundimi.\"<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/9f4258d8688556829586a1e308f5a1e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe kokrra mbi tort\u00eb \u2013 \u00ebsht\u00eb optimizimi i kodit. Kur punojm\u00eb me kodin e Terraform, duhet t\u00eb kalojm\u00eb n\u00eb modul nj\u00eb num\u00ebr t\u00eb madh parametrash. K\u00ebto jan\u00eb parametrat q\u00eb nevojiten p\u00ebr t\u00eb krijuar nj\u00eb burim t\u00eb caktuar. Dhe kodi shnd\u00ebrrohet n\u00eb lista t\u00eb m\u00ebdha parametrash q\u00eb duhet t\u00eb kalohen nga moduli n\u00eb modul, nga moduli n\u00eb modul, sidomos n\u00ebse modulet jan\u00eb t\u00eb ngulitura. <\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb p\u00ebr t'u lexuar. \u00cbsht\u00eb shum\u00eb e v\u00ebshtir\u00eb p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb rishikim. Dhe shpesh ndodh q\u00eb disa parametra kalojn\u00eb rishikimin dhe nuk jan\u00eb plot\u00ebsisht ato q\u00eb nevojiten. Dhe kjo kushton koh\u00eb dhe para p\u00ebr t'u korrigjuar m\u00eb pas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/ad7e8a91692212fda9f2561854b881c9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prandaj, ju rekomandoj t\u00eb p\u00ebrdorni nj\u00eb funksion t\u00eb till\u00eb si parametri kompleks, i cili p\u00ebrfshin nj\u00eb pem\u00eb vlerash. Do t\u00eb thot\u00eb, ju nevojitet nj\u00eb dosje, ku jan\u00eb p\u00ebrshkruar t\u00eb gjitha vlerat, t\u00eb cilat d\u00ebshironi t\u00eb keni n\u00eb nj\u00eb ambient t\u00eb caktuar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (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, pra n\u00eb nj\u00eb modul t\u00eb p\u00ebrbashk\u00ebt q\u00eb funksionon nj\u00ebsoj p\u00ebr t\u00eb gjith\u00eb infrastruktur\u00ebn.<\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb modul mund t\u00eb b\u00ebni disa llogarira, duke p\u00ebrdorur nj\u00eb ve\u00e7ori t\u00eb re n\u00eb Terraform, si\u00e7 jan\u00eb locals. Dhe m\u00eb pas me nj\u00eb output mund t\u00eb ofroni nj\u00eb paramet\u00ebr t\u00eb komplikuar, i cili mund t\u00eb p\u00ebrfshij\u00eb hash, arrays, etj. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/25c14e0397f8d95c301e0dfe6ae761df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kjo q\u00eb kam p\u00ebrshkruar deri tani, \u00ebsht\u00eb ndoshta gj\u00ebra mjaft t\u00eb thjeshta dhe triviale. Dhe kur i njihni dhe filloni t'i p\u00ebrdorni, kjo \u00ebsht\u00eb e natyrshme. Pra, p\u00ebrdorini. Dhe n\u00ebse p\u00ebr ju k\u00ebto jan\u00eb gj\u00ebra krejt normale, at\u00ebher\u00eb t\u00eb pakt\u00ebn e dini se si t\u00eb vendosni nj\u00eb vez\u00eb q\u00eb t\u00eb mos bjer\u00eb. <\/p>\n<p><\/p>\n<p>Le t\u00eb p\u00ebrmblidhim: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Modelet n\u00eb Terraform p\u00ebr t\u00eb luftuar kaosin dhe rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/37bf83d04b99f089f2319c8d2e8aaeb4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrpiquni t\u00eb shmangni flok\u00ebt e bor\u00ebs. Dhe sa m\u00eb pak flok\u00eb bore t\u00eb ket\u00eb, aq m\u00eb pak burime do t'ju nevojiten p\u00ebr t\u00eb b\u00ebr\u00eb disa ndryshime n\u00eb t\u00ebr\u00eb infrastruktur\u00ebn tuaj t\u00eb madhe. <\/p>\n<p><\/p>\n<ul>\n<li>Ndryshime t\u00eb vazhdueshme. Pra, kur ka ndodhur ndonj\u00eb ndryshim n\u00eb kod, duhet sa m\u00eb shpejt t\u00eb p\u00ebrshtatni infrastruktur\u00ebn tuaj me k\u00ebto ndryshime. Nuk duhet t\u00eb ndodh\u00eb q\u00eb dikush pas dy-tre muajsh t\u00eb vij\u00eb t\u00eb shikoj\u00eb Elasticsearch, t\u00eb b\u00ebj\u00eb nj\u00eb Terraform plan, dhe t\u00eb ket\u00eb shum\u00eb ndryshime q\u00eb nuk i priste. Dhe ndyshimi i shum\u00eb gj\u00ebrave merr shum\u00eb koh\u00eb p\u00ebr t'u v\u00ebn\u00eb p\u00ebrs\u00ebri n\u00eb rregull. <\/li>\n<li>Testet dhe automatizimi. Sa m\u00eb shum\u00eb q\u00eb kodi juaj t\u00eb jet\u00eb i mbuluar me teste dhe ve\u00e7ori, aq m\u00eb shum\u00eb besim keni se po e b\u00ebni gjith\u00e7ka si\u00e7 duhet. Dhe dor\u00ebzimi automatik do t\u00eb rris\u00eb shum\u00ebfish besimin tuaj. <\/li>\n<li>Testet dhe automatizimi. Sa m\u00eb shum\u00eb q\u00eb kodi juaj t\u00eb jet\u00eb i mbuluar me teste dhe ve\u00e7ori, aq m\u00eb shum\u00eb besim keni se po e b\u00ebni gjith\u00e7ka si\u00e7 duhet. Dor\u00ebzimi automatik do t\u00eb rris\u00eb shum\u00ebfish besimin tuaj. <\/li>\n<li>Kodi p\u00ebr ambientet e testimit dhe prodhimit duhet t\u00eb jen\u00eb praktikisht t\u00eb nj\u00ebjt\u00eb. Praktikisht, sepse prodhimi \u00ebsht\u00eb pak ndryshe dhe gjithsesi do t\u00eb ket\u00eb ndonj\u00eb nuanc\u00eb q\u00eb do t\u00eb dal\u00eb jasht\u00eb ambicieve t\u00eb testimit. Por megjithat\u00eb, plus-minus mund ta sigurojm\u00eb k\u00ebt\u00eb. <\/li>\n<li>Dhe n\u00ebse keni shum\u00eb Kodi Terraform dhe p\u00ebr mbajtjen e k\u00ebtij kodi n\u00eb gjendje aktuale k\u00ebrkohet shum\u00eb koh\u00eb, kurr\u00eb nuk \u00ebsht\u00eb von\u00eb t\u00eb b\u00ebni refaktorizimin dhe ta sillni 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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/68f3946536f44eed33939b234fb3ca0d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Infrastruktura e pal\u00ebvizshme. Dor\u00ebzimi i AMI-s\u00eb sipas nj\u00eb programi. <\/li>\n<li>Struktura p\u00ebr route53, kur keni shum\u00eb regjistra dhe d\u00ebshironi q\u00eb ata t\u00eb jen\u00eb n\u00eb nj\u00eb rend t\u00eb rregullt. <\/li>\n<li>Lufta me kufijt\u00eb e normave t\u00eb API. Kjo \u00ebsht\u00eb kur Amazon thot\u00eb: \"T\u00eb gjitha, nuk mund t\u00eb pranoj m\u00eb k\u00ebrkesa, ju lutem prisni\". Dhe gjysma e kompanis\u00eb pret derisa t\u00eb jet\u00eb n\u00eb gjendje t\u00eb nis\u00eb infrastruktur\u00ebn e saj. <\/li>\n<li>Instancat Spot. Amazon \u2013 nj\u00eb aktivitet jo i lir\u00eb dhe spots lejojn\u00eb t\u00eb kurseni mjaft. Edhe mund t\u00eb flitet p\u00ebr k\u00ebt\u00eb me nj\u00eb raport t\u00eb plot\u00eb. <\/li>\n<li>Siguria dhe rolet IAM. <\/li>\n<li>K\u00ebrkimi i resurseve t\u00eb humbura, kur keni instancat me origjin\u00eb t\u00eb paqart\u00eb n\u00eb Amazon, ato konsumojn\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 m\u00eb shum\u00eb se 1,000. K\u00ebrkimi i k\u00ebtyre resurseve \u00ebsht\u00eb nj\u00eb biznes i dobish\u00ebm. <\/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 rutinat manuale. Maksim Kostrikin (Ixtens)\" src=\"\/wp-content\/uploads\/2020\/10\/69ddbf4c726bcc15aea1a1e2d67a3fc8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebt\u00eb kam p\u00ebr sot. Terraform \u2013 \u00ebsht\u00eb shum\u00eb e shk\u00eblqyer, p\u00ebrdoreni. Faleminderit!<\/p>\n<p><\/p>\n<p>Pyetje<\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr raportin! Ju keni skedarin e state n\u00eb S3, por si e zgjidhni problemin q\u00eb disa persona mund ta marrin k\u00ebt\u00eb skedar t\u00eb state dhe t\u00eb p\u00ebrpiqen t\u00eb zbatojn\u00eb?<\/em><\/p>\n<p><\/p>\n<p>S\u00eb pari, ne nuk nxitohemi. S\u00eb dyti, ka flag-e, n\u00eb t\u00eb cil\u00ebn njoftojm\u00eb se po punojm\u00eb mbi ndonj\u00eb segment kodi. K\u00ebshtu, p\u00ebrkund\u00ebr faktit q\u00eb infrastruktura \u00ebsht\u00eb shum\u00eb e madhe, kjo nuk do t\u00eb thot\u00eb q\u00eb gjithmon\u00eb dikush po aplikon ndonj\u00eb q\u00ebndrim. Dhe kur kishte nj\u00eb faz\u00eb aktive \u2013 kjo ishte nj\u00eb problem; skedar\u00ebt tan\u00eb t\u00eb state ishin ruajtur n\u00eb Git. Kjo ishte e r\u00ebnd\u00ebsishme, ndryshe dikush do t\u00eb b\u00ebnte nj\u00eb skedar t\u00eb state, dhe na duhej t\u00eb mbledhim ato manualisht q\u00eb gjith\u00e7ka t\u00eb vazhdonte. Tani nj\u00eb problem t\u00eb till\u00eb nuk ka. Megjithat\u00eb, Terraform ka zgjidhur k\u00ebt\u00eb \u00e7\u00ebshtje. Dhe n\u00ebse di\u00e7ka ndryshon vazhdimisht, mund t\u00eb p\u00ebrdoren locks, q\u00eb parandalojn\u00eb at\u00eb q\u00eb ju that\u00eb.<\/p>\n<p><\/p>\n<p><em>A p\u00ebrdorni versionin e hapur apo enterprise?<\/em><\/p>\n<p><\/p>\n<p>Asnj\u00eb enterprise, pra, gjith\u00e7ka q\u00eb mund t\u00eb shkoni dhe ta shkarkoni falas. <\/p>\n<p><\/p>\n<p><em>M\u00eb quajn\u00eb Stanislav. Doja t\u00eb b\u00ebja nj\u00eb shtes\u00eb t\u00eb vog\u00ebl. Ju fol\u00ebt p\u00ebr ve\u00e7orin\u00eb e Amazon-it q\u00eb lejon t\u00eb krijoni instanca t\u00eb pathyeshme. Kjo \u00ebsht\u00eb e pranishme edhe n\u00eb Terraform vet\u00eb, n\u00eb bllokun Life Second mund t\u00eb shkruani nj\u00eb ndalim t\u00eb ndryshimit, ose nj\u00eb ndalim t\u00eb shkat\u00ebrrimit.<\/em> <\/p>\n<p><\/p>\n<p>Ishte i kufizuar n\u00eb koh\u00eb. Nj\u00eb v\u00ebrejtje e mir\u00eb. <\/p>\n<p><\/p>\n<p><em>Po 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 testim? Kam d\u00ebgjuar p\u00ebr plugin-in Test Kitchen. Ndoshta ka di\u00e7ka tjet\u00ebr. Dhe do doja t\u00eb pyesja gjithashtu p\u00ebr Vlerat Lokale. Si i dallohen ato n\u00eb thelb nga Variablat e Input? Dhe pse nuk mund t\u00eb parametrizoj di\u00e7ka vet\u00ebm p\u00ebrmes Vlerave Lokale? Kam p\u00ebrpjekur t\u00eb kuptoj k\u00ebt\u00eb tem\u00eb, por nuk kam pasur fat.<\/em><\/p>\n<p><\/p>\n<p>Mund t\u00eb flasim m\u00eb n\u00eb holl\u00ebsi pas k\u00ebtij dhome. Mjetet p\u00ebr testim \u2013 p\u00ebr ne jan\u00eb krejt\u00ebsisht t\u00eb b\u00ebr\u00eb nga vetja. Nuk ka asgj\u00eb q\u00eb mund t\u00eb testohet aty. N\u00eb p\u00ebrgjith\u00ebsi, ka mund\u00ebsi kur testet automatike ngrejn\u00eb infrastruktur\u00ebn diku, kontrollojn\u00eb q\u00eb ajo \u00ebsht\u00eb mir\u00eb, dhe pastaj e shkat\u00ebrrojn\u00eb me nj\u00eb raport q\u00eb infrastruktura juaj \u00ebsht\u00eb ende n\u00eb form\u00eb t\u00eb mir\u00eb. Ne nuk kemi k\u00ebt\u00eb, sepse stekat provuese ngrihen \u00e7do dit\u00eb. Dhe kjo \u00ebsht\u00eb e mjaftueshme. N\u00ebse di\u00e7ka fillon t\u00eb prishet, do t\u00eb filloj\u00eb t\u00eb prishet pa ne q\u00eb e kontrollojm\u00eb m\u00eb par\u00eb diku tjet\u00ebr. <\/p>\n<p><\/p>\n<p>P\u00ebrsa i p\u00ebrket Vlerave Lokale, le t\u00eb vazhdojm\u00eb bised\u00ebn pas sall\u00ebs. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr leksionin! Ishte shum\u00eb informues. Ju fol\u00ebt se keni shum\u00eb kod nj\u00eblloj 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 p\u00ebrdorim infrastruktur\u00ebn si kod, ne supozojm\u00eb se po shohim kodin dhe kuptojm\u00eb se cila infrastruktur\u00eb q\u00ebndron pas k\u00ebtij Kodi. N\u00ebse kodi gjenerohet, at\u00ebher\u00eb na nevojitet t\u00eb imagjinojm\u00eb se cili kod do t\u00eb gjenerohet p\u00ebr t\u00eb kuptuar se cila infrastruktur\u00eb do t\u00eb jet\u00eb atje. Ose ne gjenerojm\u00eb kodin, e angazhojm\u00eb dhe, n\u00eb thelb, rezulton e nj\u00ebjta gj\u00eb. Prandaj ne e ndoq\u00ebm rrug\u00ebn si\u00e7 shkruajti, k\u00ebt\u00eb e mor\u00ebm. P\u00ebrve\u00e7 k\u00ebsaj, gjenerator\u00ebt u shfaq\u00ebn disa m\u00eb von\u00eb, kur ne filluam ta b\u00ebnim. Dhe tashm\u00eb ishte von\u00eb p\u00ebr t\u00eb nd\u00ebrruar.<\/p>\n<p><\/p>\n<p><em>A keni d\u00ebgjuar ndonj\u00ebher\u00eb 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 shum\u00eb e shk\u00eblqyer. Un\u00eb shoh nj\u00eb rast t\u00eb qart\u00eb ku mund ta aplikojm\u00eb dhe t\u00eb gjenerojm\u00eb struktur\u00ebn e t\u00eb dh\u00ebnave.<\/em> <\/p>\n<p><\/p>\n<p>Generator\u00ebt jan\u00eb t\u00eb mira, si\u00e7 thot\u00eb nj\u00eb anekdot\u00eb p\u00ebr makin\u00ebn e rruajtjes. Dometh\u00ebn\u00eb, her\u00ebn e par\u00eb fytyra \u00ebsht\u00eb e ndryshme, por m\u00eb von\u00eb t\u00eb gjith\u00ebve fytyra \u00ebsht\u00eb e nj\u00ebjt\u00eb. Generator\u00ebt jan\u00eb shum\u00eb t\u00eb mir\u00eb. Por ne, fatkeq\u00ebsisht, kemi fytyra paksa t\u00eb ndryshme. Kjo \u00ebsht\u00eb nj\u00eb problem. <\/p>\n<p><\/p>\n<p><em>Thjesht shiko. Faleminderit!<\/em><\/p>\n<p><\/p>\n<p><em>M\u00eb quajn\u00eb Maksim, un\u00eb jam nga Sberbank. Ju keni folur pak p\u00ebr p\u00ebrpjekjen p\u00ebr t\u00eb sjell\u00eb Terraformin n\u00eb nj\u00eb analogji me gjuh\u00ebn e programimit. 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, dhe mund t\u00eb krijosh burime me Puppet n\u00eb Amazon. Por Terraform \u00ebsht\u00eb krijuar pik\u00ebrisht p\u00ebr k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p><em>A keni vet\u00ebm Amazon?<\/em><\/p>\n<p><\/p>\n<p>Nuk \u00ebsht\u00eb se kemi vet\u00ebm Amazon. \u00c7do gj\u00eb \u00ebsht\u00eb pothuajse vet\u00ebm Amazon. Por karakteristika kryesore \u00ebsht\u00eb se Terraform mban n\u00eb mend. N\u00eb Ansible, n\u00ebse thua: \"M\u00eb ngri 5 instance\", ai do t'i ngrej\u00eb, dhe m\u00eb pas ti thua: \"Tani m\u00eb duhen 3\". Dhe Terraform do t\u00eb thot\u00eb: \"Ok, do t\u00eb heq 2\", nd\u00ebrsa Ansible do t\u00eb thot\u00eb: \"Ok, ja 3\". Pra, gjithsej 8.<\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr referatin tuaj! Ishte shum\u00eb interesante t\u00eb d\u00ebgjoja p\u00ebr Terraform. Menj\u00ebher\u00eb dua t\u00eb jap nj\u00eb koment t\u00eb vog\u00ebl n\u00eb lidhje me faktin se Terraform p\u00ebr fat t\u00eb keq nuk ka nj\u00eb version stabil, k\u00ebshtu q\u00eb duhet t\u00eb keni shum\u00eb kujdes kur e p\u00ebrdorni Terraform.<\/em><\/p>\n<p><\/p>\n<p>Nj\u00eb lug\u00eb \u00ebsht\u00eb e mir\u00eb n\u00eb drek\u00eb. Dometh\u00ebn\u00eb, n\u00ebse keni nevoj\u00eb p\u00ebr nj\u00eb zgjidhje, ndonj\u00ebher\u00eb e shtyni at\u00eb q\u00eb \u00ebsht\u00eb e paq\u00ebndrueshme etj., por ajo punon dhe na ka ndihmuar. <\/p>\n<p><\/p>\n<p><em>Kam nj\u00eb pyetje. Po p\u00ebrdorni Remote backend, po p\u00ebrdorni S3. Pse nuk e 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 ai?<\/p>\n<p><\/p>\n<p><em>Para rreth 4 muajve.<\/em> <\/p>\n<p><\/p>\n<p>N\u00ebse do t\u00eb kishte dal\u00eb 4 vjet m\u00eb par\u00eb, ndoshta do t\u00eb kisha p\u00ebrgjigjur pyetjes suaj.<\/p>\n<p><\/p>\n<p><em>Atje ka funksione t\u00eb nd\u00ebrtuara si locks dhe mund t\u00eb ruash skedarin e state-it. Provoni. Por un\u00eb gjithashtu nuk e kam testuar.<\/em><\/p>\n<p><\/p>\n<p>Ne udh\u00ebtojm\u00eb me nj\u00eb tren t\u00eb madh, q\u00eb l\u00ebviz me nj\u00eb shpejt\u00ebsi t\u00eb madhe. Dhe nuk mund t\u00eb heq\u00ebsh thjesht disa vagona. <\/p>\n<p><\/p>\n<p><em>Dhe ju that\u00eb di\u00e7ka p\u00ebr bor\u00ebn, pse nuk e p\u00ebrdor\u00ebt branch-in? Pse nuk ia dol\u00ebt t\u00eb b\u00ebni k\u00ebshtu?<\/em><\/p>\n<p><\/p>\n<p>Ne kemi nj\u00eb qasje t\u00eb till\u00eb, q\u00eb e gjith\u00eb infrastruktura \u00ebsht\u00eb n\u00eb nj\u00eb depo. Terraform, Puppet, t\u00eb gjitha skenaret q\u00eb kan\u00eb t\u00eb b\u00ebjn\u00eb me k\u00ebt\u00eb, jan\u00eb t\u00eb gjitha n\u00eb nj\u00eb depo. K\u00ebshtu mund t\u00eb garantojm\u00eb se ndryshimet inkrementale jan\u00eb testuar nj\u00eb pas nj\u00eb. N\u00ebse do t\u00eb ishte nj\u00eb mori branch-e, nj\u00eb projekt i till\u00eb \u00ebsht\u00eb praktikisht i pamundur p\u00ebr t'u mbajtur. Kalojn\u00eb gjasht\u00eb muaj dhe ata shk\u00ebputen aq shum\u00eb saq\u00eb \u00ebsht\u00eb thjesht nj\u00eb nd\u00ebshkim. Kjo \u00ebsht\u00eb ajo nga e cila doja t\u00eb ikja para ristrukturimit. <\/p>\n<p><\/p>\n<p><em>Dometh\u00ebn\u00eb, nuk funksionon?<\/em><\/p>\n<p><\/p>\n<p>Kjo nuk funksionon fare.<\/p>\n<p><\/p>\n<p>N\u00eb branch kam hequr sliden e dosjeve. Do t\u00eb thot\u00eb, n\u00ebse b\u00ebjm\u00eb nj\u00eb dosje p\u00ebr \u00e7do grup testimi, p\u00ebr shembull, p\u00ebr ekipin A \u2013 ka nj\u00eb dosje t\u00eb vet\u00ebn, p\u00ebr ekipin B nj\u00eb dosje tjet\u00ebr, at\u00ebher\u00eb kjo gjithashtu nuk funksionon. Krijuam nj\u00eb kod t\u00eb unifikuar p\u00ebr mjedisin e testimeve, i cili ishte mjaft fleksib\u00ebl p\u00ebr t'iu p\u00ebrshtatur t\u00eb gjith\u00ebve. Do t\u00eb thot\u00eb, e sh\u00ebrbenim nj\u00eb kod. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Emri im \u00ebsht\u00eb Jura! Faleminderit p\u00ebr prezantimin! Kam nj\u00eb pyetje rreth moduleve. Ju thoni se p\u00ebrdorni module. Si e zgjidhni problemin n\u00ebse n\u00eb nj\u00eb modul b\u00ebni ndryshime q\u00eb nuk jan\u00eb t\u00eb pajtueshme me ndryshimet e dikujt tjet\u00ebr? E b\u00ebni ndonj\u00eb versionim t\u00eb moduleve apo p\u00ebrpiqeni t\u00eb b\u00ebni nj\u00eb zgjidhje p\u00ebr t\u00eb p\u00ebrmbushur dy k\u00ebrkesa?<\/em><\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb nj\u00eb problem i madh dhe i komplikuar. Kjo \u00ebsht\u00eb ajo \u00e7ka ne vuajm\u00eb kur nj\u00eb ndryshim i duksh\u00ebm mund t\u00eb prish\u00eb nj\u00eb pjes\u00eb t\u00eb infrastruktur\u00ebs. Dhe kjo do t\u00eb ndjehet vet\u00ebm pas nj\u00eb periudhe t\u00eb gjat\u00eb.<\/p>\n<p><\/p>\n<p><em>Do t\u00eb thot\u00eb, ende nuk po zgjidhet?<\/em><\/p>\n<p><\/p>\n<p>Ju krijoni module universale. Shmangni copat e bardha. Dhe \u00e7do gj\u00eb do t\u00eb funksionoj\u00eb. Pjesa e dyt\u00eb e prezantimit \u00ebsht\u00eb p\u00ebr at\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. Pas mbrapa \u00ebsht\u00eb nj\u00eb grumbull i madh, p\u00ebr t\u00eb cilin kam ardhur. Si jan\u00eb integruar Puppet dhe ndarja e roleve?<\/em><\/p>\n<p><\/p>\n<p>User-data.<\/p>\n<p><\/p>\n<p><em>Do t\u00eb thot\u00eb, thjesht nxirrni nj\u00eb file dhe sipas tij si\u00e7 do t\u00eb veproni?<\/em><\/p>\n<p><\/p>\n<p>User-data \u2013 \u00ebsht\u00eb nj\u00eb sh\u00ebnim, do t\u00eb thot\u00eb, kur b\u00ebjm\u00eb nj\u00eb klon t\u00eb imazhit, at\u00ebher\u00eb ngrihet nj\u00eb Daemon q\u00eb p\u00ebrpiqet t\u00eb kuptoj\u00eb kush \u00ebsht\u00eb dhe lexon sh\u00ebnimin se \u00ebsht\u00eb load balancer.<\/p>\n<p><\/p>\n<p><em>Do t\u00eb thot\u00eb, \u00ebsht\u00eb nj\u00eb proces i ve\u00e7ant\u00eb, q\u00eb jepet?<\/em><\/p>\n<p><\/p>\n<p>Ne nuk e shpik\u00ebm at\u00eb. Ne po e p\u00ebrdorim. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Kam nj\u00eb pyetje rreth User-data. Ju that\u00eb se aty ka probleme, q\u00eb dikush mund t\u00eb d\u00ebrgoj\u00eb di\u00e7ka n\u00eb m\u00ebnyr\u00eb t\u00eb gabuar. 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 p\u00ebr \u00e7far\u00eb referohet User-data?<\/em><\/p>\n<p><\/p>\n<p>Ne generojm\u00eb User-data nga template. Kjo do t\u00eb thot\u00eb se n\u00eb t\u00eb p\u00ebrfshihen disa variabla. Dhe Terraform gjeneron rezultatin p\u00ebrfundimtar. Prandaj, nuk mund t\u00eb shikoni thjesht n\u00eb template dhe t\u00eb thoni se \u00e7far\u00eb do t\u00eb dal\u00eb, sepse t\u00eb gjitha problemet lidhen me faktin se zhvilluesi mendon se po d\u00ebrgon nj\u00eb varg n\u00eb k\u00ebt\u00eb variab\u00ebl, nd\u00ebrsa aty mb\u00ebrrin nj\u00eb array. Dhe befas, ja ku jemi \u2013 ajo q\u00eb ndodhi, rreshti tjet\u00ebr, dhe gjith\u00e7ka d\u00ebshtoi. N\u00ebse \u00ebsht\u00eb nj\u00eb burim i ri dhe personi e ngre at\u00eb, sheh se di\u00e7ka nuk funksionon, at\u00ebher\u00eb kjo zgjidhet shpejt. Por n\u00ebse kjo \u00ebsht\u00eb nj\u00eb grup autoscale q\u00eb u p\u00ebrdit\u00ebsua, at\u00ebher\u00eb n\u00eb nj\u00eb moment instancat n\u00eb grupin autoscale fillojn\u00eb t\u00eb nd\u00ebrrhen. Dhe befas, di\u00e7ka nuk funksionon. Kjo \u00ebsht\u00eb e m\u00ebrzitshme.<\/p>\n<p><\/p>\n<p><em>Pra, e vetmja zgjidhje \u00ebsht\u00eb t\u00eb testoni?<\/em><\/p>\n<p><\/p>\n<p>Po, ju e shihni problemin, i shtoni hapa testimi. Kjo do t\u00eb thot\u00eb se edhe output-i mund t\u00eb testohet. Ndoshta, nuk \u00ebsht\u00eb aq e rehatshme, por gjithashtu mund t\u00eb vendosni disa shenja \u2013 kontrolloni se \u00e7far\u00eb User-data \u00ebsht\u00eb k\u00ebtu e lidhur fort. <\/p>\n<p><\/p>\n<p><em>M\u00eb quajn\u00eb Timur. \u00cbsht\u00eb shum\u00eb mir\u00eb q\u00eb ka prezantime se si t\u00eb organizoni sakt\u00eb Terraform.<\/em><\/p>\n<p><\/p>\n<p>As nuk kam filluar.<\/p>\n<p><\/p>\n<p><em>Mendoj se n\u00eb konferenc\u00ebn e ardhshme ndoshta do t\u00eb ket\u00eb. Kam nj\u00eb pyetje t\u00eb thjesht\u00eb. Pse e hardcodoni vler\u00ebn n\u00eb nj\u00eb modul t\u00eb ve\u00e7ant\u00eb, dhe jo p\u00ebrdorni tfvars, pra, \u00e7far\u00eb \u00ebsht\u00eb m\u00eb mir\u00eb modul me vlera sesa tfvars?<\/em><\/p>\n<p><\/p>\n<p>Pra, k\u00ebtu (slajdi: 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 b\u00ebjm\u00eb gjithashtu k\u00ebshtu. Referojm\u00eb n\u00eb burimin e modulit t\u00eb cil\u00ebsis\u00eb, p\u00ebr shembull.<\/em><\/p>\n<p><\/p>\n<p>N\u00eb thelb, kjo \u00ebsht\u00eb nj\u00eb lloj tfvars. Tfvars \u00ebsht\u00eb shum\u00eb i p\u00ebrshtatsh\u00ebm n\u00eb mjedisin e testimit. Kam tfvars p\u00ebr instanca t\u00eb m\u00ebdha, p\u00ebr t\u00eb vogla. Dhe nj\u00eb skedar e hedh n\u00eb dosje. Dhe kam marr\u00eb at\u00eb q\u00eb doja. Kur ne nd\u00ebrtojm\u00eb infrastruktur\u00ebn, duam q\u00eb t\u00eb jet\u00eb e mundur t\u00eb shikosh dhe t\u00eb kuptosh menj\u00ebher\u00eb gjith\u00e7ka. Por k\u00ebshtu del q\u00eb duhet t\u00eb shohim k\u00ebtu, m\u00eb pas t\u00eb shohim n\u00eb tfvars.<\/p>\n<p><\/p>\n<p><em>Pra, do t\u00eb thot\u00eb q\u00eb t\u00eb gjitha t\u00eb jen\u00eb n\u00eb nj\u00eb vend?<\/em><\/p>\n<p><\/p>\n<p>Po, tfvars \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 t'i jepnit tfvars dhe do t\u00eb merrnit nuancat tuaja. Nd\u00ebrsa ne jemi \u2013 kjo \u00ebsht\u00eb infrastruktura si kod n\u00eb form\u00ebn m\u00eb t\u00eb past\u00ebr. E shikove dhe e kuptove. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Keni p\u00ebrjetuar ndonj\u00ebher\u00eb situata kur ofruesi i cloud-it nd\u00ebrhyn n\u00eb at\u00eb q\u00eb keni b\u00ebr\u00eb me Terraform? Supozoni se ne po modifikojm\u00eb metadatat. Aty jan\u00eb \u00e7el\u00ebsat ssh. Dhe Google vazhdimisht i fut metadatat e tij, \u00e7el\u00ebsat e tij. Dhe Terraform gjithmon\u00eb thot\u00eb se ka ndryshime. Pas \u00e7do ekzekutimi, edhe n\u00ebse nuk ka asnj\u00eb ndryshim, ai gjithmon\u00eb thot\u00eb se do ta azhurnoje 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 nj\u00eb gj\u00eb e till\u00eb, dometh\u00ebn\u00eb Terraform nuk mund t\u00eb ndryshoj\u00eb asgj\u00eb. Ne gjithashtu nuk mund t\u00eb b\u00ebjm\u00eb asnj\u00eb ndryshim me dor\u00eb. Deri tani jetojm\u00eb me k\u00ebt\u00eb.<\/p>\n<p><\/p>\n<p><em>Dometh\u00ebn\u00eb, ju e keni hasur k\u00ebt\u00eb, por nuk keni gjetur asnj\u00eb zgjidhje, ai b\u00ebn si b\u00ebn dhe vazhdon e b\u00ebn 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? Kam kuptuar, p\u00ebrmes User \u2014 data, p\u00ebr t\u00eb specifikuar emrin e host-it, ta drejtoni Puppet? Dhe pjesa e dyt\u00eb e pyetjes. Si e zgjidhni k\u00ebt\u00eb \u00e7\u00ebshtje n\u00eb SG, dometh\u00ebn\u00eb kur gjeneroni SG, nj\u00ebqind instanca t\u00eb ngjashme, si t'i quani ato sakt\u00ebsisht?<\/em><\/p>\n<p><\/p>\n<p>Instancat q\u00eb jan\u00eb shum\u00eb t\u00eb r\u00ebnd\u00ebsishme p\u00ebr ne, ne i em\u00ebrtojm\u00eb bukur. Ato q\u00eb nuk na nevojiten, atje ka nj\u00eb sh\u00ebnim q\u00eb \u00ebsht\u00eb grup autoscale. Dhe n\u00eb parim, kjo mund t\u00eb hiqet, dhe t\u00eb merret nj\u00eb e re. <\/p>\n<p><\/p>\n<p>Sa i p\u00ebrket problemit me etiket\u00ebn, nuk ekziston nj\u00eb problem, 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 na duhen p\u00ebr t\u00eb par\u00eb se ku shkojn\u00eb parat\u00eb, prandaj etiketat na lejojn\u00eb t\u00eb shohim se \u00e7far\u00eb dhe ku \u00ebsht\u00eb shpenzuar. Dhe, p\u00ebr pasoj\u00eb, t\u00eb gjejm\u00eb at\u00eb q\u00eb shpenzohet shum\u00eb para. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb tjet\u00ebr ishte pyetja?<\/p>\n<p><\/p>\n<p><em>Kur SG krijon nj\u00ebqind instanca, a duhet t'i dalloni ato ndonj\u00ebher\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Jo, nuk ka nevoj\u00eb. N\u00eb \u00e7do instanc\u00eb ka nj\u00eb agjent, i cili raporton se kam nj\u00eb problem. N\u00ebse agjenti raporton, agjenti e di p\u00ebr t\u00eb dhe, t\u00eb pakt\u00ebn, adresa e tij IP ekziston. Mund t\u00eb shkoni. 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 instanc\u00ebs.<\/p>\n<p><\/p>\n<p><em>Dometh\u00ebn\u00eb, ju orientoheni pik\u00ebrisht n\u00eb IP, dhe jo n\u00eb emrin e host-it?<\/em><\/p>\n<p><\/p>\n<p>Nuk \u00ebsht\u00eb e mundur t\u00eb orientohesh me emrin e host-it, dometh\u00ebn\u00eb, ato jan\u00eb shum\u00eb t\u00eb shumta. Ka identifikues instancash \u2013 AE etj. Mund ta gjeni diku, mund ta k\u00ebrkoni. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! E kuptova q\u00eb Terraform \u00ebsht\u00eb nj\u00eb gj\u00eb e mir\u00eb, e p\u00ebrshtatur p\u00ebr cloud.<\/em> <\/p>\n<p><\/p>\n<p>Jo vet\u00ebm. <\/p>\n<p><\/p>\n<p><em>Ky ky\u00e7 e pik\u00eblloj\u00eb mua. Po, n\u00ebse vendosni t\u00eb kaloni masivisht n\u00eb Bare Metal me t\u00eb gjith\u00eb instancat tuaja? A do t\u00eb ket\u00eb ndonj\u00eb problem? Apo ndoshta do t\u00eb duhet t\u00eb p\u00ebrdorni produkte t\u00eb tjera, si Ansible, q\u00eb u p\u00ebrmend k\u00ebtu?<\/em><\/p>\n<p><\/p>\n<p>Ansible merret pak ndryshe. Do t\u00eb thot\u00eb, Ansible funksionon vet\u00ebm pasi instanca t\u00eb ket\u00eb nisur. Nd\u00ebrsa Terraform funksionon para se t\u00eb nis\u00eb instanca. Kalimi n\u00eb Bare Metal \u2013 jo. <\/p>\n<p><\/p>\n<p><em>Tani nuk ka, por kur t\u00eb vij\u00eb biznesi dhe t\u00eb thot\u00eb: \u00abLe t\u00eb fillojm\u00eb\u00bb.<\/em><\/p>\n<p><\/p>\n<p>Kalimi n\u00eb nj\u00eb cloud tjet\u00ebr \u2013 po, por k\u00ebtu \u00ebsht\u00eb nj\u00eb tjet\u00ebr \u00e7\u00ebshtje. Duhet t\u00eb shkruani kodin Terraform k\u00ebshtu q\u00eb t\u00eb kaloni n\u00eb ndonj\u00eb cloud tjet\u00ebr pa shum\u00eb v\u00ebshtir\u00ebsi. <\/p>\n<p><\/p>\n<p>Fillimisht kishte nj\u00eb objektiv t\u00eb till\u00eb, q\u00eb t\u00eb gjith\u00eb infrastruktura jon\u00eb t\u00eb ishte agnostike, do t\u00eb thot\u00eb, \u00e7do cloud duhet t\u00eb ishte i p\u00ebrshtatsh\u00ebm, por n\u00eb nj\u00eb moment biznesi u dor\u00ebzua dhe tha: \u00abMir\u00eb, p\u00ebr vitet e ardhshme N, nuk do t\u00eb largohemi, mund t\u00eb p\u00ebrdorim sh\u00ebrbimet e Amazon\u00bb.<\/p>\n<p><\/p>\n<p>Terraform lejon krijimin e jobs n\u00eb Front-End, konfigurimin e PagerDuty, dokumentacionit t\u00eb t\u00eb dh\u00ebnave etj. Ka shum\u00eb funksione. Praktikisht mund t\u00eb kontrolloj\u00eb t\u00eb gjith\u00eb bot\u00ebn.<\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr prezantimin! Edhe un\u00eb po punoj me Terraform p\u00ebr 4 vjet. N\u00eb faz\u00ebn e kalimit t\u00eb but\u00eb n\u00eb Terraform, n\u00eb infrastruktur\u00eb, n\u00eb p\u00ebrshkrimin deklarativ, p\u00ebrballeshim me situata ku dikush b\u00ebnt\u00eb di\u00e7ka me dor\u00eb, nd\u00ebrsa ti p\u00ebrpiqeshe t\u00eb b\u00ebnte nj\u00eb plan. Dhe merrje ndonj\u00eb gabim atje. Si i zgjidhni k\u00ebto probleme? Si i gjeni burimet e humbura q\u00eb ishin t\u00eb p\u00ebrfshir\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Kryesisht me dor\u00eb dhe sy, n\u00ebse shohim di\u00e7ka t\u00eb \u00e7uditshme n\u00eb raport, analizojm\u00eb se \u00e7far\u00eb ndodh aty, ose thjesht e anulojm\u00eb. N\u00eb fakt, k\u00ebrkesat e t\u00ebrheqjes jan\u00eb nj\u00eb gj\u00eb e zakonshme. <\/p>\n<p><\/p>\n<p><em>N\u00ebse ka nj\u00eb gabim, a b\u00ebni rollback? E keni provuar ta b\u00ebni k\u00ebt\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Jo, ajo \u00ebsht\u00eb nj\u00eb vendim i njeriut n\u00eb momentin kur sheh problemin.<\/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 5.0.4 - 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\/sq\/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.4\" \/>\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: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 me kaosin dhe rutin\u00ebn manuale. Maksim Kostrikin (Ixtens) | ProHoster","description":"","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: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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/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}]}}