Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

Å Ä·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:

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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 modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

Terraform ir atvērtā koda projekts no HashiCorp. Un tiem, kas pat nezina, kas tas ir, daži nākamie slaidi.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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Ä«.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

Š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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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 modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

Terraform ļauj izveidot tādu lietu kā moduli, tas ir, aprakstÄ«t to paÅ”u kādā mapē.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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ā.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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ņā."

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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ā.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.ā€

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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."

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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ē.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

Å 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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

  • 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.

Terraform modeļi, lai cīnītos pret haosu un manuālu rutīnu. Maksims Kostrikins (Ikstens)

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