Å Ä·iet, ka Terraform izstrÄdÄtÄji piedÄvÄ diezgan Ärtu labÄko praksi darbam ar AWS infrastruktÅ«ru. Ir tikai nianse. Laika gaitÄ palielinÄs vidi skaits, un katrai no tÄm ir savas funkcijas. Blakus esoÅ”ajÄ reÄ£ionÄ parÄdÄs gandrÄ«z lietojumprogrammu kopas kopija. Un Terraform kods ir rÅ«pÄ«gi jÄpÄrkopÄ un jÄrediÄ£Ä atbilstoÅ”i jaunajÄm prasÄ«bÄm vai jÄveido sniegpÄrsliÅÄ.
Mans ziÅojums par Terraform modeļiem, lai cÄ«nÄ«tos pret haosu un manuÄlu rutÄ«nu lielos un garos projektos.
Video:
Man ir 40, IT jomÄ strÄdÄju 20 gadus. Es strÄdÄju Ixtens 12 gadus. MÄs nodarbojamies ar e-komercijas virzÄ«tu izstrÄdi. Un es praktizÄju DevOps praksi 5 gadus.
Mans stÄsts bÅ«s par manu pieredzi projektÄ uzÅÄmumÄ, kura nosaukumu neteikÅ”u, slÄpjoties aiz neizpauÅ”anas lÄ«guma.
Cipari uz slaida ir norÄdÄ«ti, lai saprastu projekta mÄrogu. Un viss, ko es teikÅ”u tÄlÄk, ir saistÄ«ts ar Amazon.
Es pievienojos Å”im projektam pirms 4 gadiem. Un infrastruktÅ«ras atjaunoÅ”ana ritÄja pilnÄ sparÄ, jo projekts bija audzis. Un modeļi, kas tika izmantoti, vairs nebija piemÄroti. Un, Åemot vÄrÄ visu plÄnoto projekta izaugsmi, bija jÄnÄk klajÄ ar kaut ko jaunu.
Paldies Matvejam, kurÅ” vakar mums pastÄstÄ«ja, kas notika Dodo Pizza. LÅ«k, kas Å”eit notika pirms 4 gadiem.
AtnÄca izstrÄdÄtÄji un sÄka veidot infrastruktÅ«ras kodu.
AcÄ«mredzamÄkie iemesli, kÄpÄc tas bija nepiecieÅ”ams, bija laiks, lai pÄrdotu. Bija nepiecieÅ”ams nodroÅ”inÄt, lai DevOps komanda izlaiÅ”anas laikÄ nebÅ«tu sastrÄgums. Un cita starpÄ Terraform un Puppet tika izmantoti paÅ”Ä pirmajÄ lÄ«menÄ«.
Terraform ir atvÄrtÄ koda projekts no HashiCorp. Un tiem, kas pat nezina, kas tas ir, daži nÄkamie slaidi.
InfrastruktÅ«ra kÄ kods nozÄ«mÄ, ka mÄs varam aprakstÄ«t savu infrastruktÅ«ru un lÅ«gt dažiem robotiem pÄrliecinÄties, ka mÄs saÅemam mÅ«su aprakstÄ«tos resursus.
PiemÄram, mums ir nepiecieÅ”ama virtuÄlÄ maŔīna. MÄs aprakstÄ«sim un pievienosim vairÄkus nepiecieÅ”amos parametrus.
PÄc tam mÄs konsolÄ konfigurÄsim piekļuvi Amazon. Un mÄs lÅ«gsim Terraform plÄnu. Terraform plÄnÄ bÅ«s teikts: "Labi, mÄs varam darÄ«t Ŕīs lietas jÅ«su resursiem." Un tiks pievienots vismaz viens resurss. Un nekÄdas izmaiÅas nav gaidÄmas.
Kad esat ar visu apmierinÄts, varat lÅ«gt Terraform pieteikties, un Terraform izveidos jums instanci, un jÅ«s saÅemsiet virtuÄlo maŔīnu savÄ mÄkonÄ«.
TÄlÄk mÅ«su projekts attÄ«stÄs. MÄs tur pievienojam dažas izmaiÅas. LÅ«dzam vairÄk gadÄ«jumu, pievienojam 53 ierakstus.
Un mÄs atkÄrtojam. LÅ«dzu plÄnojiet. MÄs redzam, kÄdas izmaiÅas ir plÄnotas. MÄs piesakÄmies. Un tÄ attÄ«stÄs mÅ«su infrastruktÅ«ra.
Terraform izmanto to, ko sauc par stÄvokļa failiem. Tas nozÄ«mÄ, ka viÅÅ” saglabÄ visas Amazon veiktÄs izmaiÅas failÄ, kurÄ katram jÅ«su aprakstÄ«tajam resursam ir atbilstoÅ”i Amazon izveidotie resursi. TÄdÄjÄdi, mainoties resursa aprakstam, Terraform precÄ«zi zina, kas ir jÄmaina Amazon.
Å ie stÄvokļa faili sÄkotnÄji bija tikai faili. Un mÄs tos uzglabÄjÄm GitÄ, kas bija ÄrkÄrtÄ«gi neÄrti. KÄds vienmÄr aizmirsa veikt izmaiÅas, un radÄs daudzi konflikti.
Tagad ir iespÄjams izmantot aizmugursistÄmu, t.i., Terraform ir norÄdÄ«ts, kurÄ spainÄ« un ar kÄdu atslÄgu jÄsaglabÄ stÄvokļa fails. Un pati Terraform parÅ«pÄsies par Ŕī stÄvokļa faila iegÅ«Å”anu, veicot visas burvju darbÄ«bas un atgriežot gala rezultÄtu.
MÅ«su infrastruktÅ«ra attÄ«stÄs. Å eit ir mÅ«su kods. Un tagad mÄs vÄlamies ne tikai izveidot virtuÄlo maŔīnu, bet arÄ« testa vidi.
Terraform ļauj izveidot tÄdu lietu kÄ moduli, tas ir, aprakstÄ«t to paÅ”u kÄdÄ mapÄ.
Un, piemÄram, testÄjot, izsauciet Å”o moduli un iegÅ«stiet to paÅ”u, it kÄ mÄs bÅ«tu izpildÄ«juÅ”i Terraform piemÄrot paÅ”Ä modulÄ«. TestÄÅ”anai bÅ«s Å”is kods.
RažoÅ”anai mÄs tur varam nosÅ«tÄ«t dažas izmaiÅas, jo testÄÅ”anÄ mums nav vajadzÄ«gi lieli gadÄ«jumi, ražoÅ”anÄ lielie gadÄ«jumi vienkÄrÅ”i noder.
Un tad es atgriezÄ«Å”os pie projekta. Tas bija grÅ«ts uzdevums, plÄnotÄ infrastruktÅ«ra bija ļoti liela. Un vajadzÄja kaut kÄ visu kodu novietot tÄ, lai tas bÅ«tu Ärti visiem: gan tiem, kas veic Ŕī koda apkopi, gan tiem, kas veic izmaiÅas. Un bija plÄnots, ka jebkurÅ” izstrÄdÄtÄjs varÄtu iet un salabot infrastruktÅ«ru pÄc vajadzÄ«bas savai platformas daļai.
Å is ir direktoriju koks, ko HashiCorp iesaka pats, ja jums ir liels projekts un ir lietderÄ«gi sadalÄ«t visu infrastruktÅ«ru dažos mazos gabaliÅos un aprakstÄ«t katru daļu atseviÅ”Ä·Ä mapÄ.
Å emot vÄrÄ plaÅ”u resursu bibliotÄku, testÄÅ”anÄ un ražoÅ”anÄ varat izsaukt aptuveni vienu un to paÅ”u.
MÅ«su gadÄ«jumÄ tas nebija pilnÄ«bÄ piemÄrots, jo izstrÄdÄtÄju vai testÄÅ”anas testa kaudze bija jÄiegÅ«st kaut kÄ vienkÄrÅ”Äk. Bet es negribÄju iet cauri mapÄm un lietot tÄs vajadzÄ«gajÄ secÄ«bÄ un uztraukties, ka datubÄze palielinÄsies, un tad palielinÄsies gadÄ«jums, kas izmanto Å”o datu bÄzi. TÄpÄc visa pÄrbaude tika uzsÄkta no vienas mapes. Tur tika izsaukti tie paÅ”i moduļi, bet viss tika izdarÄ«ts vienÄ piegÄjienÄ.
Terraform rÅ«pÄjas par visÄm atkarÄ«bÄm. Un tas vienmÄr izveido resursus secÄ«bÄ, lai jÅ«s varÄtu iegÅ«t IP adresi, piemÄram, no jaunizveidotas instances un iegÅ«t Å”o IP adresi marÅ”ruta53 ierakstÄ.
TurklÄt platforma ir ļoti liela. Un testa kaudzes palaiÅ”ana, pat ja uz stundu, pat ja uz 8 stundÄm, ir diezgan dÄrgs pasÄkums.
Un mÄs automatizÄjÄm Å”o lietu. Un Dženkinsa darbs ļÄva mums vadÄ«t steku. TajÄ bija nepiecieÅ”ams palaist izvilkÅ”anas pieprasÄ«jumu ar izmaiÅÄm, kuras izstrÄdÄtÄjs vÄlas pÄrbaudÄ«t, norÄdÄ«t visas nepiecieÅ”amÄs opcijas, komponentus un izmÄrus. Ja viÅÅ” vÄlas veikt veiktspÄjas pÄrbaudi, viÅÅ” var veikt vairÄk gadÄ«jumu. Ja viÅam tikai jÄpÄrbauda, āāvai atveras kÄda veidlapa, tad viÅÅ” varÄtu sÄkt ar minimÄlo algu. Un arÄ« norÄdiet, vai klasteris ir vajadzÄ«gs vai nÄ, utt.
Un tad Dženkinss nospieda Äaulas skriptu, kas nedaudz mainÄ«ja kodu Terraform mapÄ. Es noÅÄmu nevajadzÄ«gos failus un pievienoju nepiecieÅ”amos failus. Un tad ar vienu Terraform pieteikÅ”anos kaudze tika palielinÄta.
Un tad bija citi soļi, kuros es nevÄlos iedziļinÄties.
SakarÄ ar to, ka testÄÅ”anai mums vajadzÄja nedaudz vairÄk iespÄju nekÄ ražoÅ”anÄ, mums bija jÄveido moduļu kopijas, lai Å”ajÄs kopijÄs varÄtu pievienot tÄs funkcijas, kas bija nepiecieÅ”amas tikai testÄÅ”anai.
Un tÄ sagadÄ«jÄs, ka testÄÅ”anas laikÄ es gribu pÄrbaudÄ«t tÄs izmaiÅas, kas galu galÄ nonÄks ražoÅ”anÄ. Bet patiesÄ«bÄ tika pÄrbaudÄ«ta viena lieta, un ražoÅ”anÄ tika izmantota nedaudz cita. Un bija neliels pÄrtraukums modelÄ«, ka ražoÅ”anÄ visas izmaiÅas piemÄroja operÄcijas komanda. Un dažreiz izrÄdÄ«jÄs, ka tÄs izmaiÅas, kurÄm vajadzÄja pÄriet no testÄÅ”anas uz ražoÅ”anu, palika citÄ versijÄ.
TurklÄt radÄs tÄda problÄma, ka tika pievienots jauns pakalpojums, kas nedaudz atŔķīrÄs no kÄda jau esoÅ”Ä. Un tÄ vietÄ, lai pÄrveidotu esoÅ”u moduli, mums bija jÄizveido tÄ kopija un jÄpievieno nepiecieÅ”amÄs izmaiÅas.
BÅ«tÄ«bÄ Terraform nav Ä«sta valoda. Å Ä« ir deklarÄcija. Ja vajag kaut ko deklarÄt, tad deklarÄjam. Un tas viss darbojas.
KÄdÄ brÄ«dÄ«, kad tika apspriests viens no maniem vilkÅ”anas pieprasÄ«jumiem, viens no maniem kolÄÄ£iem teica, ka nevajag veidot sniegpÄrslas. Es prÄtoju, ko viÅÅ” ar to domÄja. Ir zinÄtnisks fakts, ka pasaulÄ nav divu vienÄdu sniegpÄrslu, tÄs visas nedaudz atŔķiras. Un, tiklÄ«dz es to dzirdÄju, es uzreiz sajutu visu Terraform koda smagumu. TÄ kÄ, kad bija jÄpÄriet no versijas uz versiju, Terraform prasÄ«ja pÄrrauÅ”anas Ä·Ädes izmaiÅas, t.i., kods vairs nebija savietojams ar nÄkamo versiju. Un mums bija jÄveic izvilkÅ”anas pieprasÄ«jums, kas aptvÄra gandrÄ«z pusi no infrastruktÅ«ras failiem, lai infrastruktÅ«ru pÄrnestu uz nÄkamo Terraform versiju.
Un pÄc tÄdas sniegpÄrsliÅas parÄdÄ«Å”anÄs viss Terraform kods, ko bijÄm pÄrvÄrtuÅ”i par lielu, lielu sniega kaudzi.
ÄrÄjam izstrÄdÄtÄjam, kurÅ” ir Ärpus operÄcijas, tam nav lielas nozÄ«mes, jo viÅÅ” veica izvilkÅ”anas pieprasÄ«jumu, sÄkÄs viÅa resurss. Un tas arÄ« viss, tas vairs nav viÅu rÅ«pes. Un DevOps komandai, kas pÄrliecinÄs, ka viss ir kÄrtÄ«bÄ, ir jÄveic visas Ŕīs izmaiÅas. Un Å”o izmaiÅu izmaksas ļoti, ļoti pieauga ar katru papildu sniegpÄrsliÅu.
Ir stÄsts par to, kÄ students seminÄrÄ ar krÄ«tu uz tÄfeles uzzÄ«mÄ divus perfektus apļus. Un skolotÄjs ir pÄrsteigts, kÄ viÅam izdevÄs tik gludi zÄ«mÄt bez kompasa. Students atbild: "Ä»oti vienkÄrÅ”i, divus gadus pavadÄ«ju armijÄ, griežot gaļas maŔīnÄ."
Un no Äetriem gadiem, kad esmu bijis iesaistÄ«ts Å”ajÄ projektÄ, es nodarbojos ar Terraform apmÄram divus gadus. Un, protams, man ir daži triki, daži padomi, kÄ vienkÄrÅ”ot Terraform kodu, strÄdÄt ar to kÄ programmÄÅ”anas valodu un samazinÄt slogu izstrÄdÄtÄjiem, kuriem Å”is kods ir jÄatjaunina.
PirmÄ lieta, ar ko es vÄlÄtos sÄkt, ir Symlinks. Terraform ir daudz atkÄrtota koda. PiemÄram, zvans pakalpojumu sniedzÄjam gandrÄ«z katrÄ vietÄ, kur mÄs veidojam infrastruktÅ«ras daļu, ir vienÄds. Un ir loÄ£iski to ievietot atseviÅ”Ä·Ä mapÄ. Un visur, kur pakalpojumu sniedzÄjam ir jÄizveido simboliskÄs saites uz Å”o failu.
PiemÄram, ražoÅ”anÄ jÅ«s izmantojat uzÅemÅ”anÄs lomu, kas ļauj iegÅ«t piekļuves tiesÄ«bas kÄdam ÄrÄjam Amazon kontam. Un, mainot vienu failu, visiem atlikuÅ”ajiem resursu kokÄ bÅ«s nepiecieÅ”amÄs tiesÄ«bas, lai Terraform zinÄtu, kuram Amazon segmentam piekļūt.
Kur neizdodas Symlinks? KÄ jau teicu, Terraform ir valsts faili. Un viÅi ir ļoti, ļoti forÅ”i. Bet lieta ir tÄda, ka Terraform vispirms inicializÄ aizmugursistÄmu. Un viÅÅ” nevar izmantot nekÄdus mainÄ«gos Å”ajos parametros, tie vienmÄr ir jÄraksta tekstÄ.
Un rezultÄtÄ, kad kÄds izveido jaunu resursu, viÅÅ” daļu koda kopÄ no citÄm mapÄm. Un viÅÅ” var kļūdÄ«ties ar atslÄgu vai spaini. PiemÄram, viÅÅ” no smilÅ”u kastes izgatavo smilÅ”u kastes lietu un pÄc tam to ražo. Un tÄ var izrÄdÄ«ties, ka ražoÅ”anÄ esoÅ”ais spainis tiks izmantots no smilÅ”u kastes. Protams, viÅi to Ätri atradÄ«s. To bÅ«s iespÄjams kaut kÄ labot, bet tomÄr tÄ ir laika un zinÄmÄ mÄrÄ resursu izŔķieÅ”ana.
Ko mÄs varam darÄ«t tÄlÄk? Pirms darba ar Terraform, tas ir jÄinicializÄ. InicializÄcijas laikÄ Terraform lejupielÄdÄ visus spraudÅus. KÄdÄ brÄ«dÄ« tie sadalÄ«jÄs no monolÄ«ta uz vairÄk mikropakalpojumu arhitektÅ«ru. Un vienmÄr ir jÄdara Terraform init, lai tas izvilktu visus moduļus, visus spraudÅus.
Un jÅ«s varat izmantot Äaulas skriptu, kas, pirmkÄrt, var iegÅ«t visus mainÄ«gos. Apvalka skripts nekÄdÄ veidÄ nav ierobežots. Un, otrkÄrt, ceļi. Ja mÄs vienmÄr izmantosim repozitorijÄ esoÅ”o ceļu kÄ stÄvokļa faila atslÄgu, tad attiecÄ«gi kļūda Å”eit tiks novÄrsta.
Kur es varu iegÅ«t datus? JSON fails. Terraform ļauj rakstÄ«t infrastruktÅ«ru ne tikai hcl (HashiCorp konfigurÄcijas valodÄ), bet arÄ« JSON.
JSON ir viegli nolasÄms no Äaulas skripta. AttiecÄ«gi kÄdÄ vietÄ var ievietot konfigurÄcijas failu ar spaini. Un izmantojiet Å”o spaini gan Terraform kodÄ, gan Äaulas skriptÄ inicializÄÅ”anai.
KÄpÄc ir svarÄ«gi, lai Terraform bÅ«tu spainis? Jo ir tÄda lieta kÄ attÄlÄ stÄvokļa faili. Tas ir, kad es piesaistu kÄdu resursu, lai pateiktu Amazon: āLÅ«dzu, paaugstiniet instanciā, man ir jÄnorÄda daudz nepiecieÅ”amo parametru.
Un Å”ie identifikatori tiek glabÄti kÄdÄ citÄ mapÄ. Un es varu iet un teikt: "Terraform, lÅ«dzu, atveriet Ŕī resursa stÄvokļa failu un saÅemiet man Å”os identifikatorus." Un tÄdÄjÄdi starp dažÄdiem reÄ£ioniem vai vidÄm parÄdÄs zinÄma apvienoÅ”anÄs.
Ne vienmÄr ir iespÄjams izmantot attÄlÄ stÄvokļa failu. PiemÄram, jÅ«s izveidojÄt VPC ar roku. Un Terraform kods, kas veido VPC, rada tik dažÄdus VPC, ka tas prasÄ«s ļoti ilgu laiku un jums bÅ«s jÄpielÄgo viens otram, tÄpÄc varat izmantot Å”Ädu triku.
Tas ir, izveidojiet moduli, kas, Ŕķiet, veido VPC un it kÄ dod jums identifikatorus, taÄu patiesÄ«bÄ ir vienkÄrÅ”i fails ar kodÄtÄm vÄrtÄ«bÄm, ko var izmantot, lai izveidotu to paÅ”u gadÄ«jumu.
Ne vienmÄr ir nepiecieÅ”ams saglabÄt statusa failu mÄkonÄ«. PiemÄram, testÄjot moduļus, varat izmantot aizmugursistÄmas inicializÄÅ”anu, kur fails testÄÅ”anas laikÄ vienkÄrÅ”i tiks saglabÄts diskÄ.
Tagad nedaudz par testÄÅ”anu. Ko jÅ«s varat pÄrbaudÄ«t Terraform? IespÄjams, daudz kas ir iespÄjams, bet es runÄÅ”u par Ŕīm 4 lietÄm.
HashiCorp ir izpratne par to, kÄ Terraform kods ir jÄformatÄ. Un Terraform fmt ļauj formatÄt rediÄ£Äto kodu saskaÅÄ ar Å”o uzskatu. AttiecÄ«gi testos noteikti jÄpÄrbauda, āāvai formatÄjums atbilst HashiCorp novÄlÄtajam, lai nebÅ«tu jÄmaina iekavÄs utt.
NÄkamais ir Terraform validÄt. Tas palÄ«dz tikai pÄrbaudÄ«t sintaksi ā vai visas iekavas ir savienotas pÄrÄ«. Kas Å”eit ir svarÄ«gs? MÅ«su infrastruktÅ«ra ir ļoti plaÅ”a. TajÄ ir daudz dažÄdu tÄti. Un katrÄ no tiem ir jÄpalaiž Terraform validate.
AttiecÄ«gi, lai paÄtrinÄtu testÄÅ”anu, mÄs paralÄli palaižam vairÄkus procesus, izmantojot paralÄli.
ParalÄli ir ļoti forÅ”a lieta, izmantojiet to.
Bet katru reizi, kad Terraform inicializÄ, tas dodas uz HashiCorp un jautÄ: āKÄdas ir jaunÄkÄs spraudÅa versijas? Un spraudnis, kas man ir keÅ”atmiÅÄ ā vai tas ir pareizais vai nepareizais? Un tas palÄninÄjÄs ik uz soļa.
Ja pateiksit Terraform, kur atrodas spraudÅi, tad Terraform sacÄ«s: āLabi, iespÄjams, tas ir jaunÄkais, kas tur ir. Es nekur neieÅ”u, nekavÄjoties sÄkÅ”u apstiprinÄt jÅ«su Terraform kodu.
Lai aizpildÄ«tu mapi ar nepiecieÅ”amajiem spraudÅiem, mums ir ļoti vienkÄrÅ”s Terraform kods, kas vienkÄrÅ”i ir jÄinicializÄ. Å eit, protams, ir jÄnorÄda visi pakalpojumu sniedzÄji, kas kaut kÄdÄ veidÄ piedalÄs jÅ«su kodÄ, pretÄjÄ gadÄ«jumÄ Terraform sacÄ«s: "Es nezinu noteiktu pakalpojumu sniedzÄju, jo tas nav keÅ”atmiÅÄ."
NÄkamais ir Terraform plÄns. KÄ jau teicu, attÄ«stÄ«ba ir cikliska. MÄs veicam izmaiÅas kodÄ. Un tad jÄnoskaidro, kÄdas izmaiÅas ir paredzÄtas infrastruktÅ«rÄ.
Un, kad infrastruktÅ«ra ir ļoti, ļoti liela, jÅ«s varat mainÄ«t vienu moduli, salabot kÄdu testa vidi vai noteiktu reÄ£ionu un izjaukt kÄdu blakus esoÅ”o. TÄpÄc Terraform plÄns bÅ«tu jÄveido visai infrastruktÅ«rai un jÄparÄda, kÄdas izmaiÅas ir plÄnotas.
To var izdarÄ«t gudri. PiemÄram, mÄs uzrakstÄ«jÄm Python skriptu, kas atrisina atkarÄ«bas. Un atkarÄ«bÄ no tÄ, kas tika mainÄ«ts: Terraform modulis vai tikai konkrÄts komponents, tas veido plÄnus visÄm saistÄ«tajÄm mapÄm.
Terases plÄni ir jÄsagatavo pÄc pieprasÄ«juma. TÄ vismaz mÄs darÄm.
Protams, ir labi veikt testus par katru izmaiÅu, par katru apÅemÅ”anos, taÄu plÄni ir diezgan dÄrga lieta. Un izvilkÅ”anas pieprasÄ«jumÄ mÄs sakÄm: "LÅ«dzu, iedodiet man plÄnus." Robots sÄk darboties. Un nosÅ«ta komentÄros vai pievieno visus plÄnus, kas tiek gaidÄ«ti no jÅ«su izmaiÅÄm.
PlÄns ir diezgan dÄrga lieta. Tas prasa laiku, jo Terraform dodas uz Amazon un jautÄ: "Vai Ŕī instance joprojÄm pastÄv? Vai Å”ai automÄtiskajai skalai ir tieÅ”i tÄdi paÅ”i parametri? Un, lai to paÄtrinÄtu, varat izmantot tÄdu parametru kÄ refresh=false. Tas nozÄ«mÄ, ka Terraform lejupielÄdÄs stÄvokli no S3. Un tÄ ticÄs, ka valsts precÄ«zi atbildÄ«s Amazones valstij.
Å Äds Terraform plÄns paiet daudz ÄtrÄk, bet valstij ir jÄatbilst tavai infrastruktÅ«rai, t.i., kaut kur, kaut kad jÄsÄk Terraform refresh. Terraform atsvaidzinÄÅ”ana dara tieÅ”i to: stÄvoklis atbilst faktiskajÄ infrastruktÅ«rÄ esoÅ”ajam.
Un mums ir jÄrunÄ par droŔību. Å eit mums bija jÄsÄk. VietÄ, kur jÅ«s izmantojat Terraform un Terraform darbojas jÅ«su infrastruktÅ«rÄ, ir ievainojamÄ«ba. Tas ir, jÅ«s bÅ«tÄ«bÄ izpildÄt kodu. Un, ja izvilkÅ”anas pieprasÄ«jumÄ ir ietverts kÄds ļaunprÄtÄ«gs kods, to var izpildÄ«t infrastruktÅ«rÄ, kurai ir pÄrÄk liela piekļuve. TÄpÄc esiet piesardzÄ«gs, kur izmantojat Terraform plÄnu.
NÄkamÄ lieta, par ko es vÄlÄtos runÄt, ir lietotÄja datu pÄrbaude.
Kas ir lietotÄja dati? Amazon, kad mÄs veidojam instanci, mÄs varam nosÅ«tÄ«t noteiktu vÄstuli ar instanci - meta datus. Kad instancÄ sÄkas, parasti mÄkoÅa iniciators vienmÄr ir pieejams Å”ajos gadÄ«jumos. Cloud init nolasa Å”o vÄstuli un saka: "Labi, Å”odien es esmu slodzes balansÄtÄjs." Un saskaÅÄ ar Ŕīm derÄ«bÄm viÅÅ” veic dažas darbÄ«bas.
Bet diemžÄl, kad mÄs piemÄrojam Terraform plÄnu un Terraform, lietotÄja dati izskatÄs kÄ Å”Äda veida skaitļu putra. Tas ir, viÅÅ” vienkÄrÅ”i nosÅ«ta jums hash. Un viss, ko jÅ«s varat apskatÄ«t plÄnÄ, ir tas, vai bÅ«s kÄdas izmaiÅas, vai hash paliks nemainÄ«gs.
Un, ja jÅ«s tam nepievÄrÅ”at uzmanÄ«bu, kÄds bojÄts teksta fails var nonÄkt Amazon, reÄlajÄ infrastruktÅ«rÄ.
AlternatÄ«vi, izpildot, varat norÄdÄ«t nevis visu infrastruktÅ«ru, bet tikai veidni. Un kodÄ sakiet: "LÅ«dzu, parÄdiet Å”o veidni manÄ ekrÄnÄ." TÄ rezultÄtÄ jÅ«s varat iegÅ«t izdruku par to, kÄ jÅ«su dati izskatÄ«sies vietnÄ Amazon.
VÄl viena iespÄja ir izmantot moduli, lai Ä£enerÄtu lietotÄja datus. JÅ«s lietosit Å”o moduli. JÅ«s saÅemat failu diskÄ. SalÄ«dziniet to ar atsauci. Un lÄ«dz ar to, ja kÄds puisis nolemj nedaudz labot lietotÄja datus, tad jÅ«su testi teiks: āLabi, Å”eit un tur ir dažas izmaiÅas ā tas ir normÄli.ā
NÄkamÄ lieta, par ko es vÄlÄtos runÄt, ir Terraformu automatizÄcija.
Protams, ir diezgan biedÄjoÅ”i, ka Terraform tiek lietots automÄtiski, jo kas zina, kÄdas izmaiÅas tur ir notikuÅ”as un cik tÄs var bÅ«t postoÅ”as āādzÄ«vajai infrastruktÅ«rai.
Testa vidÄ tas viss ir normÄli. Tas ir, darbs, kas rada testa vidi, ir tas, kas nepiecieÅ”ams visiem izstrÄdÄtÄjiem. Un tÄds izteiciens kÄ āviss man izdevÄsā nav smieklÄ«gs mÄms, bet gan pierÄdÄ«jums tam, ka cilvÄks apmulsa, pacÄla steku un veica dažus testus Å”ai stekai. Un viÅÅ” pÄrliecinÄjÄs, ka tur viss ir kÄrtÄ«bÄ, un teica: "Labi, kods, ko es izlaižu, ir pÄrbaudÄ«ts."
RažoÅ”anÄ, smilÅ”kastes un citÄs uzÅÄmÄjdarbÄ«bai svarÄ«gÄkÄs vidÄs jÅ«s varat daļÄji izmantot dažus resursus diezgan droÅ”i, jo tÄ rezultÄtÄ neviens nemirst. TÄs ir: automÄtiskÄs mÄrogoÅ”anas grupas, droŔības grupas, lomas, marÅ”ruts53, un saraksts tur var bÅ«t diezgan liels. Bet sekojiet lÄ«dzi notiekoÅ”ajam, lasiet automatizÄtos lietojumprogrammu pÄrskatus.
Ja ir bÄ«stami vai biedÄjoÅ”i pieteikties, piemÄram, ja tie ir daži pastÄvÄ«gi resursi no datu bÄzes, tad saÅemiet ziÅojumus, ka kÄdÄ infrastruktÅ«ras daÄ¼Ä ir nepielietotas izmaiÅas. Un inženieris uzraudzÄ«bÄ sÄk pieteiktos darbus vai veic to no savas pults.
Amazon ir tÄda lieta kÄ PÄrtraukt aizsardzÄ«bu. Un tas dažos gadÄ«jumos var pasargÄt no izmaiÅÄm, kas jums nav nepiecieÅ”amas. Tas ir, Terraform devÄs uz Amazon un teica: "Man ir jÄnogalina Å”is gadÄ«jums, lai izveidotu citu." Un Amazon saka: āAtvainojiet, ne Å”odien. Mums ir PÄrtraukt aizsardzÄ«bu."
Un glazÅ«ra uz kÅ«kas ir koda optimizÄcija. StrÄdÄjot ar Terraform kodu, modulim ir jÄnodod ļoti liels skaits parametru. Å ie ir parametri, kas nepiecieÅ”ami, lai izveidotu kÄdu resursu. Un kods pÄrvÄrÅ”as lielos parametru sarakstos, kas jÄpÄrsÅ«ta no moduļa uz moduli, no moduļa uz moduli, it Ä«paÅ”i, ja moduļi ir ligzdoti.
Un to ir ļoti grÅ«ti lasÄ«t. Ir ļoti grÅ«ti to pÄrskatÄ«t. Un ļoti bieži izrÄdÄs, ka daži parametri tiek pÄrskatÄ«ti, un tie nav Ä«sti nepiecieÅ”ami. Un tas maksÄ laiku un naudu, lai to vÄlÄk labotu.
TÄpÄc es iesaku jums izmantot Å”Ädu lietu kÄ sarežģītu parametru, kas ietver noteiktu vÄrtÄ«bu koku. Tas ir, jums ir nepiecieÅ”ama sava veida mape, kurÄ jums ir visas vÄrtÄ«bas, kuras vÄlaties iegÅ«t kÄdÄ vidÄ.
Un, izsaucot Å”o moduli, jÅ«s varat iegÅ«t koku, kas tiek Ä£enerÄts vienÄ kopÄjÄ modulÄ«, tas ir, kopÄjÄ modulÄ«, kas darbojas vienÄdi visai infrastruktÅ«rai.
Å ajÄ modulÄ« varat veikt dažus aprÄÄ·inus, izmantojot tik nesenu Terraform lÄ«dzekli kÄ vietÄjie iedzÄ«votÄji. Un tad ar vienu izvadi norÄdiet kÄdu sarežģītu parametru, kas var ietvert masÄ«va jaucÄjvÄrdus utt.
Å eit ir beiguÅ”ies visi labÄkie atradumi. Un es gribÄtu pastÄstÄ«t stÄstu par Kolumbu. Kad viÅÅ” meklÄja naudu savai ekspedÄ«cijai, lai atklÄtu Indiju (kÄ viÅÅ” toreiz domÄja), neviens viÅam neticÄja un uzskatÄ«ja, ka tas nav iespÄjams. Tad viÅÅ” teica: "PÄrliecinieties, ka ola nenokrÄ«t." Visi baÅÄ·ieri, ļoti bagÄti un, iespÄjams, gudri cilvÄki, mÄÄ£inÄja kaut kÄ novietot olu, un tÄ turpinÄja krist. Tad Kolumbs paÅÄma olu un to nedaudz paspieda. Äaumala saburzÄ«ja un ola palika nekustÄ«ga. ViÅi teica: "Ak, tas ir pÄrÄk viegli!" Un Kolumbs atbildÄja: "JÄ, tas ir pÄrÄk vienkÄrÅ”i. Un, kad es atvÄrÅ”u Indiju, visi izmantos Å”o tirdzniecÄ«bas ceļu."
Un tas, ko es jums tikko teicu, iespÄjams, ir diezgan vienkÄrÅ”as un triviÄlas lietas. Un, kad jÅ«s uzzinÄsit par tiem un sÄkat tos lietot, tas notiek lietu kÄrtÄ«bÄ. TÄpÄc izmantojiet priekÅ”rocÄ«bas. Un, ja jums tÄs ir pilnÄ«gi normÄlas lietas, tad vismaz zinÄt, kÄ olu novietot tÄ, lai tÄ nenokristu.
Apkoposim:
- Centieties izvairÄ«ties no sniegpÄrslÄm. Un jo mazÄk sniegpÄrslu, jo mazÄk resursu jums bÅ«s nepiecieÅ”ams, lai veiktu izmaiÅas visÄ lielajÄ infrastruktÅ«rÄ.
- PastÄvÄ«gas izmaiÅas. Tas ir, ja kodÄ tiek veiktas dažas izmaiÅas, jums ir pÄc iespÄjas ÄtrÄk jÄsaskaÅo infrastruktÅ«ra ar Ŕīm izmaiÅÄm. NevajadzÄtu bÅ«t situÄcijai, kad kÄds ierodas apskatÄ«t Elasticsearch divus vai trÄ«s mÄneÅ”us vÄlÄk, sastÄda Terraform plÄnu un ir daudz izmaiÅu, kuras viÅÅ” nebija gaidÄ«jis. Un, lai visu sakÄrtotu, ir vajadzÄ«gs daudz laika.
- Testi un automatizÄcija. Jo vairÄk jÅ«su kods ir pÄrklÄts ar testiem un funkcijÄm, jo āāāālielÄka ir pÄrliecÄ«ba, ka visu darÄt pareizi. Un automÄtiskÄ piegÄde daudzkÄrt palielinÄs jÅ«su pÄrliecÄ«bu.
- Testa un ražoÅ”anas vides kodam jÄbÅ«t gandrÄ«z vienÄdam. Praktiski, jo ražoÅ”ana joprojÄm ir nedaudz atŔķirÄ«ga un joprojÄm bÅ«s dažas nianses, kas iziet Ärpus testa vides. Bet tomÄr plus vai mÄ«nus to var nodroÅ”inÄt.
- Un, ja jums ir daudz Terraform koda un ir nepiecieÅ”ams daudz laika, lai Å”is kods bÅ«tu atjauninÄts, nekad nav par vÄlu pÄrveidot un uzlabot to.
- NemainÄ«ga infrastruktÅ«ra. AMI piegÄde pÄc grafika.
- MarÅ”ruta 53 struktÅ«ra, ja jums ir daudz ierakstu un vÄlaties, lai tie bÅ«tu konsekventÄ secÄ«bÄ.
- CÄ«Åa ar API Ätruma ierobežojumiem. Tas ir tad, kad Amazon saka: "Tas ir viss, es nevaru pieÅemt vairÄk pieprasÄ«jumu, lÅ«dzu, uzgaidiet." Un puse biroja gaida, kad varÄs uzsÄkt savu infrastruktÅ«ru.
- AtklÄjiet gadÄ«jumus. Amazon nav lÄts pasÄkums, un spots ļauj ietaupÄ«t diezgan daudz. Un tur par to var izstÄstÄ«t veselu reportÄžu.
- DroŔības un IAM lomas.
- MeklÄjot pazaudÄtos resursus, kad AmazonÄ ir nezinÄmas izcelsmes gadÄ«jumi, viÅi Äd naudu. Pat ja gadÄ«jumi maksÄ 100ā150 USD mÄnesÄ«, tas ir vairÄk nekÄ USD 1 gadÄ. Å Ädu resursu atraÅ”ana ir ienesÄ«gs bizness.
- Un rezervÄti gadÄ«jumi.
Tas man ir viss. Terraform ir ļoti forŔs, jūs to izmantojat. Paldies!
jautÄjumi
Paldies par ziÅojumu! JÅ«su stÄvokļa fails ir S3, bet kÄ atrisinÄt problÄmu, ka vairÄki cilvÄki var paÅemt Å”o stÄvokļa failu un mÄÄ£inÄt paplaÅ”inÄt?
PirmkÄrt, mÄs nesteidzamies. OtrkÄrt, ir karodziÅi, kuros mÄs ziÅojam, ka strÄdÄjam pie kÄda koda daļas. Tas ir, neskatoties uz to, ka infrastruktÅ«ra ir ļoti liela, tas nenozÄ«mÄ, ka kÄds pastÄvÄ«gi kaut ko izmanto. Un, kad bija aktÄ«va fÄze, tÄ bija problÄma; mÄs saglabÄjÄm stÄvokļa failus Git. Tas bija svarÄ«gi, pretÄjÄ gadÄ«jumÄ kÄds izveidoja valsts failu, un mums tie bija manuÄli jÄsaliek kopÄ, lai viss turpinÄtos. Tagad tÄdas problÄmas nav. KopumÄ Terraform Å”o problÄmu atrisinÄja. Un, ja kaut kas nemitÄ«gi mainÄs, tad varat izmantot slÄdzenes, kas novÄrÅ” jÅ«su teikto.
Vai izmantojat atvÄrtÄ pirmkoda vai uzÅÄmuma?
Nav uzÅÄmuma, t.i., viss, ko varat iet un lejupielÄdÄt bez maksas.
Mani sauc StaÅislavs. Es gribÄju veikt nelielu papildinÄjumu. JÅ«s runÄjÄt par Amazon funkciju, kas ļauj padarÄ«t gadÄ«jumu nenogalinÄmu. Tas ir arÄ« paÅ”Ä TerraformÄ; Life Second blokÄ varat norÄdÄ«t izmaiÅu aizliegumu vai iznÄ«cinÄÅ”anas aizliegumu.
Laiks bija ierobežots. Labs punkts.
Es arÄ« gribÄju jautÄt divas lietas. PirmkÄrt, jÅ«s runÄjÄt par testÄÅ”anu. Vai izmantojÄt kÄdus testÄÅ”anas rÄ«kus? Es dzirdÄju par Test Kitchen spraudni. VarbÅ«t ir kaut kas vairÄk. Un es arÄ« gribÄtu jautÄt par VietÄjÄm vÄrtÄ«bÄm. KÄ tie bÅ«tiski atŔķiras no ievades mainÄ«gajiem? Un kÄpÄc es nevaru kaut ko parametrÄt tikai caur VietÄjÄm vÄrtÄ«bÄm? Es mÄÄ£inÄju izdomÄt Å”o tÄmu, bet kaut kÄ es nevarÄju to izdomÄt pats.
MÄs varam runÄt sÄ«kÄk Ärpus Ŕīs telpas. MÅ«su testÄÅ”anas rÄ«ki ir pilnÄ«bÄ paÅ”u izgatavoti. Tur nav ko pÄrbaudÄ«t. KopumÄ ir iespÄjas, kad automatizÄtie testi paÅem infrastruktÅ«ru kaut kur, pÄrbauda, āāvai tÄ ir kÄrtÄ«bÄ, un pÄc tam visu iznÄ«cina ar ziÅojumu, ka jÅ«su infrastruktÅ«ra joprojÄm ir labÄ stÄvoklÄ«. Mums tas nav, jo katru dienu tiek palaisti testa skursteÅi. Un ar to pietiek. Un, ja kaut kas sÄk plÄ«st, tas sÄks lÅ«zt, mums to nepÄrbaudot kaut kur citur.
Par vietÄjÄm vÄrtÄ«bÄm turpinÄsim sarunu Ärpus telpas.
Sveiki! Paldies par ziÅojumu! Ä»oti informatÄ«vs. JÅ«s teicÄt, ka jums ir daudz tÄda paÅ”a veida koda, lai aprakstÄ«tu infrastruktÅ«ru. Vai esat apsvÄris iespÄju Ä£enerÄt Å”o kodu?
Lielisks jautÄjums, paldies! Lieta ir tÄda, ka, izmantojot infrastruktÅ«ru kÄ kodu, mÄs pieÅemam, ka mÄs skatÄmies uz kodu un saprotam, kÄda infrastruktÅ«ra slÄpjas aiz Ŕī koda. Ja tiek Ä£enerÄts kods, tad mums ir jÄiedomÄjas, kÄds kods tiks Ä£enerÄts, lai saprastu, kÄda veida infrastruktÅ«ra tur bÅ«s. Vai nu mÄs Ä£enerÄjam kodu, veicam to, un bÅ«tÄ«bÄ notiek tas pats. TÄ nu mÄs gÄjÄm pa ceļu, ko uzrakstÄ«jÄm, mÄs to saÅÄmÄm. Plus Ä£eneratori parÄdÄ«jÄs nedaudz vÄlÄk, kad sÄkÄm tos ražot. Un mainÄ«ties jau bija par vÄlu.
Vai esat kaut ko dzirdÄjuÅ”i par jsonnet?
NÄ.
Paskaties, Ŕī ir ļoti forÅ”a lieta. Es redzu konkrÄtu gadÄ«jumu, kad to var pielietot un Ä£enerÄt datu struktÅ«ru.
Ä¢eneratori ir labi, ja tie ir, kÄ jokÄ par skÅ«Å”anÄs maŔīnu. Tas ir, pirmo reizi seja ir atŔķirÄ«ga, bet pÄc tam visiem ir viena un tÄ pati seja. Ä¢eneratori strÄdÄ Ä¼oti labi. Bet diemžÄl mÅ«su sejas ir nedaudz atŔķirÄ«gas. TÄ ir problÄma.
VienkÄrÅ”i paskaties. Paldies!
Mani sauc Maksims, es esmu no Sberbank. JÅ«s nedaudz runÄjÄt par to, kÄ mÄÄ£inÄt Terraform padarÄ«t lÄ«dzvÄrtÄ«gu programmÄÅ”anas valodai. Vai nav vieglÄk izmantot Ansible?
TÄs ir ļoti dažÄdas lietas. JÅ«s varat izveidot resursus pakalpojumÄ Ansible, un Puppet var izveidot resursus pakalpojumÄ Amazon. Bet Terraform ir taisni uzasinÄta.
Vai jums ir tikai Amazon?
Nav tÄ, ka mums ir tikai Amazon. Mums ir gandrÄ«z tikai Amazon. Bet galvenÄ iezÄ«me ir tÄ, ka Terraform atceras. Ja programmÄ Ansible sakÄt: āDodiet man 5 gadÄ«jumusā, tas palielinÄsies, un tad jÅ«s sakÄt: āUn tagad man vajag 3.ā Un Terraform sacÄ«s: "Labi, es nogalinÄÅ”u 2", un Ansible sacÄ«s: "Labi, Å”eit ir 3 jums." KopÄ 8.
Sveiki! Paldies par ziÅojumu! Bija ļoti interesanti dzirdÄt par Terraform. Uzreiz gribu izteikt nelielu komentÄru par to, ka Terraform joprojÄm nav stabila izlaiduma, tÄpÄc izturieties pret Terraform ļoti piesardzÄ«gi.
Laba karote vakariÅÄm. Tas ir, ja jums ir nepiecieÅ”ams risinÄjums, tad dažreiz jÅ«s atliekat to, kas ir nestabils utt., bet tas darbojas un mums palÄ«dzÄja.
JautÄjums ir Å”Äds. JÅ«s izmantojat Remote backend, jÅ«s izmantojat S 3. KÄpÄc jÅ«s neizmantojat oficiÄlo aizmugursistÄmu?
OficiÄlÄ?
Terraforma mÄkonis.
Kad viÅÅ” parÄdÄ«jÄs?
ApmÄram pirms 4 mÄneÅ”iem.
Ja tas bÅ«tu parÄdÄ«jies pirms 4 gadiem, tad es droÅ”i vien bÅ«tu atbildÄjis uz jÅ«su jautÄjumu.
Jau ir iebÅ«vÄta funkcija un slÄdzenes, un jÅ«s varat saglabÄt stÄvokļa failu. PamÄÄ£inÄt. Bet es arÄ« neesmu pÄrbaudÄ«jis.
MÄs braucam ar lielu vilcienu, kas brauc lielÄ ÄtrumÄ. Un jÅ«s nevarat vienkÄrÅ”i paÅemt dažas automaŔīnas un izmest tÄs.
JÅ«s runÄjÄt par sniegpÄrslÄm, kÄpÄc neizmantojÄt zaru? KÄpÄc tas tÄ neizdevÄs?
MÅ«su pieeja ir tÄda, ka visa infrastruktÅ«ra atrodas vienÄ repozitorijÄ. Terraform, Puppet, visi skripti, kas kaut kÄ ir saistÄ«ti ar Å”o, tie visi ir vienÄ repozitorijÄ. TÄdÄ veidÄ mÄs varam nodroÅ”inÄt, ka pakÄpeniskas izmaiÅas tiek pÄrbaudÄ«tas viena pÄc otras. Ja tas bÅ«tu zaru Ä·ekars, tad Å”Ädu projektu bÅ«tu gandrÄ«z neiespÄjami uzturÄt. Paiet seÅ”i mÄneÅ”i, un tie tik ļoti atŔķiras, ka tas ir tikai sava veida sods. Tas ir tas, no kÄ es gribÄju izvairÄ«ties pirms pÄrstrukturÄÅ”anas.
TÄtad tas nedarbojas?
Tas vispÄr nedarbojas.
AtzarÄ izgriezu mapes slaidu. Tas ir, ja jÅ«s to darÄt katram testa kaudzei, piemÄram, komandai A ir sava mape, komandai B ir sava mape, tad arÄ« tas nedarbojas. MÄs izveidojÄm vienotu testa vides kodu, kas bija pietiekami elastÄ«gs, lai bÅ«tu piemÄrots ikvienam. Tas ir, mÄs apkalpojÄm vienu kodu.
Sveiki! Mani sauc Jura! Paldies par ziÅojumu! JautÄjums par moduļiem. JÅ«s sakÄt, ka izmantojat moduļus. KÄ atrisinÄt problÄmu, ja vienÄ modulÄ« ir veiktas izmaiÅas, kas nav saderÄ«gas ar citas personas veiktajÄm izmaiÅÄm? Vai jÅ«s kaut kÄ veidojat moduļu versijas vai mÄÄ£inÄt nodroÅ”inÄt wunderwaffle, lai tas atbilstu divÄm prasÄ«bÄm?
TÄ ir liela sniega kaudzes problÄma. Tas ir tas, no kÄ mÄs cieÅ”am, ja kÄdas nekaitÄ«gas izmaiÅas var sabojÄt kÄdu infrastruktÅ«ras daļu. Un tas bÅ«s pamanÄms tikai pÄc kÄda ilga laika.
Tas ir, tas vÄl nav atrisinÄts?
JÅ«s izgatavojat universÄlus moduļus. Izvairieties no sniegpÄrslÄm. Un viss izdosies. ZiÅojuma otrÄ puse ir par to, kÄ no tÄ izvairÄ«ties.
Sveiki! Paldies par ziÅojumu! Es gribÄtu precizÄt. AizkulisÄs bija liela kaudze, pÄc kuras es nÄcu. KÄ tiek integrÄta leļļu un lomu sadale?
LietotÄja dati.
Tas ir, jÅ«s vienkÄrÅ”i izspļÄvÄt failu un kaut kÄ to izpildÄt?
LietotÄja dati ir piezÄ«me, t.i., kad mÄs izveidojam attÄla klonu, DÄmons tur paceļas un, mÄÄ£inot saprast, kas viÅÅ” ir, nolasa piezÄ«mi, ka viÅÅ” ir slodzes balansÄtÄjs.
Tas ir, vai tas ir kaut kÄds atseviŔķs process, kas tiek atdots?
MÄs to neizdomÄjÄm. MÄs to izmantojam.
Sveiki! Man tikai jautÄjums par LietotÄja datiem. TeicÄt, ka tur ir problÄmas, kÄds var kaut ko nosÅ«tÄ«t ne uz vietu. Vai ir kÄds veids, kÄ saglabÄt lietotÄja datus tajÄ paÅ”Ä Git, lai vienmÄr bÅ«tu skaidrs, uz ko attiecas User-dati?
MÄs Ä£enerÄjam lietotÄja datus no veidnes. Tas ir, tur tiek izmantots noteikts skaits mainÄ«go. Un Terraform Ä£enerÄ gala rezultÄtu. TÄpÄc jÅ«s nevarat vienkÄrÅ”i apskatÄ«t veidni un pateikt, kas notiks, jo visas problÄmas ir saistÄ«tas ar to, ka izstrÄdÄtÄjs domÄ, ka viÅÅ” Å”ajÄ mainÄ«gajÄ nodod virkni, bet tur tiek izmantots masÄ«vs. Un viÅÅ” - bam un es - tÄ un tÄ, tÄ un tÄ, nÄkamÄ rinda, un viss salÅ«za. Ja tas ir jauns resurss un cilvÄks to paÅem un redz, ka kaut kas nedarbojas, tad tas Ätri tiek atrisinÄts. Un, ja Ŕī automÄtiskÄs mÄrogoÅ”anas grupa tiek atjauninÄta, kÄdÄ brÄ«dÄ« automÄtiskÄs mÄrogoÅ”anas grupas gadÄ«jumi tiek aizstÄti. Un blÄ«kŔķ, kaut kas nestrÄdÄ. Tas sÄp.
IzrÄdÄs, ka vienÄ«gais risinÄjums ir pÄrbaudÄ«t?
JÄ, jÅ«s redzat problÄmu, pievienojat pÄrbaudes darbÄ«bas. Tas ir, izvadi var arÄ« pÄrbaudÄ«t. VarbÅ«t tas nav tik Ärti, bet varat arÄ« atzÄ«mÄt dažas ā pÄrbaudiet, vai Å”eit ir norÄdÄ«ti lietotÄja dati.
Mani sauc Timurs. Ä»oti forÅ”i, ka ir ziÅojumi par to, kÄ pareizi organizÄt Terraform.
Es pat neesmu sÄcis.
DomÄju, ka varbÅ«t nÄkamajÄ konferencÄ bÅ«s. Man ir vienkÄrÅ”s jautÄjums. KÄpÄc jÅ«s cietatkodÄjat vÄrtÄ«bu atseviÅ”Ä·Ä modulÄ«, nevis izmantojat tfvars, t.i., kÄpÄc modulis ar vÄrtÄ«bÄm ir labÄks par tfvars?
Tas ir, vai man Å”eit bÅ«tu jÄraksta (slaids: RažoÅ”ana/vide/settings.tf): domÄns = mainÄ«gais, domÄna vpcnetwork, mainÄ«gais vpcnetwork un stvars ā vai es varu iegÅ«t to paÅ”u?
TieÅ”i to mÄs darÄm. MÄs atsaucamies, piemÄram, uz iestatÄ«jumu avota moduli.
BÅ«tÄ«bÄ tas ir tÄds tfvars. Tfvars ir ļoti Ärts testÄÅ”anas vidÄ. Man ir tfvars lieliem gadÄ«jumiem, maziem. Un es iemetu vienu failu mapÄ. Un es dabÅ«ju to, ko gribÄju. Griezot infrastruktÅ«ru, gribam, lai visu bÅ«tu iespÄjams apskatÄ«t un uzreiz saprast. Un tÄ sanÄk, ka vajag paskatÄ«ties te, tad paskaties tfvars.
Vai ir iespÄjams visu atrast vienuviet?
JÄ, tfvars ir tad, kad jums ir viens kods. Un tas tiek izmantots vairÄkÄs dažÄdÄs vietÄs ar dažÄdÄm niansÄm. Tad tu mestu tfvars un saÅemtu savas nianses. Un mÄs esam infrastruktÅ«ra kÄ kods tÄs tÄ«rÄkajÄ formÄ. PaskatÄ«jos un sapratu.
Sveiki! Vai esat saskÄruÅ”ies ar situÄcijÄm, kad mÄkoÅa pakalpojumu sniedzÄjs traucÄ Terraform izveidotajam? PieÅemsim, ka mÄs rediÄ£Äjam metadatus. Ir ssh atslÄgas. Un Google pastÄvÄ«gi ievieto savus metadatus un atslÄgas. Un Terraform vienmÄr raksta, ka tai ir izmaiÅas. PÄc katra skrÄjiena, pat ja nekas nemainÄs, viÅÅ” vienmÄr saka, ka tagad atjauninÄs Å”o lauku.
Ar atslÄgÄm, bet jÄ, daļu infrastruktÅ«ras Ŕī lieta skar, t.i., Terraform neko nevar mainÄ«t. MÄs arÄ« ar savÄm rokÄm neko nevaram mainÄ«t. PagaidÄm ar to dzÄ«vosim.
Tas ir, jÅ«s esat saskÄries ar kaut ko lÄ«dzÄ«gu, bet neko neesat izdomÄjis, kÄ viÅÅ” to dara un dara pats?
DiemžÄl jÄ.
Sveiki! Mani sauc Starkovs StaÅislavs. Pasts. ru Grupa. KÄ atrisinÄt atzÄ«mes Ä£enerÄÅ”anas problÄmu vietnÄ..., kÄ to nodot iekÅ”Ä? KÄ es saprotu, izmantojot User - data, lai norÄdÄ«tu resursdatora nosaukumu, iestatiet Puppet on? Un jautÄjuma otrÄ daļa. KÄ atrisinÄt Å”o problÄmu SG, t.i., kad Ä£enerÄjat SG simtiem viena veida gadÄ«jumu, kÄds ir to pareizais nosaukums?
Tos gadÄ«jumus, kas mums ir ļoti svarÄ«gi, mÄs tos skaisti nosaucam. Tie, kas nav vajadzÄ«gi, ir piezÄ«me, ka Ŕī ir automÄtiskÄs skalas grupa. Un teorÄtiski jÅ«s varat to pielakt un iegÅ«t jaunu.
Kas attiecas uz marÄ·Äjuma problÄmu, tad Å”Ädas problÄmas nav, bet ir Å”Äds uzdevums. Un tagus lietojam ļoti, ļoti intensÄ«vi, jo infrastruktÅ«ra ir liela un dÄrga. Un mums ir jÄskatÄs, kur nauda aiziet, tÄpÄc atzÄ«mes ļauj mums izjaukt, kas kur aizgÄja. Un attiecÄ«gi Å”eit tiek tÄrÄts kaut kas tÄds, kas nozÄ«mÄ daudz naudas.
Par ko vÄl bija jautÄjums?
Kad SG izveido simtiem gadÄ«jumu, vai tie ir kaut kÄ jÄnoŔķir?
NÄ, nevajag. KatrÄ gadÄ«jumÄ ir aÄ£ents, kas ziÅo, ka man ir problÄma. Ja aÄ£ents ziÅo, tad aÄ£ents par viÅu zina un vismaz viÅa IP adrese pastÄv. Var jau aizbÄgt. OtrkÄrt, mÄs izmantojam Consul for Discovery, kur Kubernetes nav. Un Consul parÄda arÄ« instances IP adresi.
Tas ir, vai jÅ«s koncentrÄjaties tieÅ”i uz IP, nevis uz resursdatora nosaukumu?
Nav iespÄjams orientÄties pÄc resursdatora nosaukuma, t.i., to ir daudz. Ir instanÄu identifikatori - AE utt. Var kaut kur atrast, var iemest meklÄÅ”anÄ.
Sveiki! Es sapratu, ka Terraform ir laba lieta, kas pielÄgota mÄkoÅiem.
Ne tikai.
TieÅ”i Å”is jautÄjums mani interesÄ. Ja jÅ«s nolemjat pÄriet, teiksim, uz Bare Metal masveidÄ ar visÄm jÅ«su instancÄm? Vai radÄ«sies kÄdas problÄmas? Vai arÄ« tomÄr bÅ«s jÄizmanto citi produkti, piemÄram, tas pats Ansible, kas Å”eit tika minÄts?
Ansible ir nedaudz par kaut ko citu. Tas ir, Ansible jau darbojas, kad instance ir sÄkusies. Un Terraform darbojas pirms instances sÄkuma. PÄreja uz Bare Metal - nÄ.
Ne tagad, bet bizness nÄks un teiks: "NÄc."
PÄrslÄgÅ”anÄs uz citu mÄkoni - jÄ, taÄu Å”eit ir nedaudz atŔķirÄ«gs triks. Terraform kods ir jÄraksta tÄ, lai ar mazÄku piepÅ«li varÄtu pÄrslÄgties uz kÄdu citu mÄkoni.
SÄkotnÄji tika izvirzÄ«ts uzdevums, ka visa mÅ«su infrastruktÅ«ra ir agnostiska, t.i., jebkuram mÄkonim ir jÄbÅ«t piemÄrotam, taÄu kÄdÄ brÄ«dÄ« bizness padevÄs un teica: āLabi, tuvÄko N gadu laikÄ mÄs nekur nebrauksim, varam izmantot servisus. no Amazon"
Terraform ļauj izveidot Front-End darbus, konfigurÄt PagerDuty, datu dokumentu utt. Tam ir daudz astes. ViÅÅ” var praktiski kontrolÄt visu pasauli.
Paldies par ziÅojumu! Es arÄ« izmantoju Terraform jau 4 gadus. VienmÄrÄ«gas pÄrejas posmÄ uz Terraform, uz infrastruktÅ«ru, uz deklaratÄ«vu aprakstu mÄs saskÄrÄmies ar situÄciju, kad kÄds kaut ko dara ar roku, bet jÅ«s mÄÄ£inÄt izveidot plÄnu. Un tur man radÄs sava veida kļūda. KÄ tiekat galÄ ar Å”ÄdÄm problÄmÄm? KÄ jÅ«s atrodat zaudÄtos resursus, kas ir uzskaitÄ«ti?
GalvenokÄrt ar rokÄm un acÄ«m, ja reportÄÅ¾Ä redzam ko dÄ«vainu, tad analizÄjam, kas tur notiek, vai vienkÄrÅ”i nogalinÄm. KopumÄ izvilkÅ”anas pieprasÄ«jumi ir izplatÄ«ta lieta.
Ja ir kļūda, vai jÅ«s atceļat? Vai esat mÄÄ£inÄjuÅ”i to darÄ«t?
NÄ, tas ir cilvÄka lÄmums tajÄ brÄ«dÄ«, kad viÅÅ” redz problÄmu.
Avots: www.habr.com