ProHoster > Блог > Maamulka > Sharaxaada kaabayaasha Terraform ee mustaqbalka. Anton Babenko (2018)
Sharaxaada kaabayaasha Terraform ee mustaqbalka. Anton Babenko (2018)
Dad badan ayaa yaqaan oo u isticmaala Terraform shaqadooda maalinlaha ah, laakiin hababka ugu wanaagsan ee loogu talagalay weli lama samayn. Koox kastaa waa inay hindisataa habab iyo habab u gaar ah.
Kaabayaashaada ayaa hubaal ah inay si fudud ku bilowdaan: dhowr ilo + dhowr horumariye. Waqti ka dib, waxay u koraan dhammaan noocyada jihooyinka. Ma helaysaa habab aad agabka ugu ururiso qaybaha Terraform, u habayso koodhka galka, iyo maxaa kale oo suurtogal ah inay khaldamaan? (ereyada ugu dambeeya ee caanka ah)
Waqtigu wuu dhaafaa oo waxaad dareemaysaa in kaabayaashaagu yahay xayawaankaaga cusub, laakiin waa maxay sababta? Waxaad ka welwelsan tahay isbeddellada aan la macnayn karin ee kaabayaasha, waxaad ka baqaysaa inaad taabato kaabayaasha iyo koodka - natiijada, waxaad dib u dhigaysaa shaqeyn cusub ama aad yareyso tayada ...
Ka dib seddex sano oo la maamulayay ururinta qaybaha bulshada ee Terraform ee AWS ee Github iyo dayactirka muddada dheer ee Terraform ee wax soo saarka, Anton Babenko wuxuu diyaar u yahay inuu la wadaago waayo-aragnimadiisa: sida loo qoro qaybaha TF si aysan u dhaawacmin mustaqbalka.
Dhammaadka hadalka, ka qaybgalayaashu waxay aad u baran doonaan mabaadi'da maareynta kheyraadka ee Terraform, hababka ugu fiican ee la xidhiidha cutubyada Terraform, iyo qaar ka mid ah mabaadi'da isdhexgalka joogtada ah ee la xidhiidha maareynta kaabayaasha.
Afeef:Waxaan ogsoonahay in warbixintani ay ku taariikhaysan tahay Noofambar 2018-2 sano ayaa ka soo wareegtay. Nooca Terraform 0.11 ee lagaga hadlay warbixinta hadda lama taageero. Labadii sano ee la soo dhaafay, 2 sii deyn oo cusub ayaa la sii daayay, kuwaas oo ka kooban waxyaabo badan oo cusub, horumarin iyo isbeddel. Fadlan u fiirso tan oo hubi dukumentiyada.
@antonbabenko - Twitter, iyo farabadan Slacks kala duwan
Magacaygu waa Anton Babenko. Malaha qaarkiin ayaa isticmaalay koodka aan qoray. Hadda waxaan arrintan uga hadli doonaa si ka kalsooni badan sidii hore, sababtoo ah waxaan heli karaa tirakoob.
Waxaan ka shaqeeyaa Terraform oo waxaan ahaa ka-qaybgale firfircoon oo wax ku biiriya tiro badan oo mashruucyo il furan oo la xidhiidha Terraform iyo Amazon ilaa 2015.
Tan iyo markaas waxaan qoray kood ku filan si aan u dhigo hab xiiso leh. Oo waxaan isku dayi doonaa inaan hadda kaaga sheego arrintan.
Waxaan ka hadli doonaa qallafsanaanta iyo waxyaabaha gaarka ah ee la shaqeynta Terraform. Laakiin taasi runtii maaha mawduuca HighLoad. Oo hadda waad fahmi doontaa sababta.
Muddo ka dib, waxaan bilaabay qorista cutubyada Terraform. Isticmaalayaasha ayaa qoray su'aalo, dib ayaan u qoray. Kadibna waxaan qoray adeegyo kala duwan si aan u qaabeeyo koodka anigoo isticmaalaya jillaab hore u go'aamiyay, iwm.
Waxaa jiray mashaariic badan oo xiiso leh. Waxaan jeclahay jiilka koodka sababtoo ah waxaan jeclahay kombuyuutarku inuu u qabto shaqo badan oo aniga iyo barnaamijka sameeya, markaa waxaan hadda ka shaqeynayaa koronto-dhaliyaha Terraform code-ka jaantusyada muuqaalka ah. Malaha qaarkiin waad aragteen. Kuwani waa sanduuqyo qurux badan oo leh fallaadho. Oo waxaan u maleynayaa inay aad u fiican tahay haddii aad riixi karto "Dhoofinta" badhanka oo aad u hesho dhammaan sida code.
Waxaan ka imid Ukraine Waxaan Norway ku noolaa sanado badan.
Sidoo kale, macluumaadka warbixintan waxaa laga soo ururiyay dadka magacayga yaqaan oo iga helay shabakadaha bulshada. Had iyo jeer waxaan leeyahay naanays isku mid ah.
Sida aan soo sheegay, waxaan ahay ilaaliyeha ugu weyn ee Terraform AWS modules, kaas oo ah mid ka mid ah kaydka ugu weyn ee GitHub halkaas oo aan ku martigelinno cutubyada hawlaha ugu caansan: VPC, Autoscaling, RDS.
Oo waxa aad hadda maqashay ayaa ugu aasaasiga ah. Haddii aad ka shakisan tahay inaad fahamtay waxa Terraform yahay, markaa way fiicantahay inaad waqti ku qaadato meel kale. Waxaa jiri doona shuruudo badan oo farsamo halkan. Mana aan ka waaban inaan ku dhawaaqo heerka warbixinta inuu yahay kii ugu sarreeyay. Tani waxay ka dhigan tahay in aan ku hadli karo dhammaan shuruudaha suurtagalka ah iyada oo aan wax sharraxaad ah lahayn.
Terraform wuxuu soo muuqday 2014 sidii utility kuu ogolaanaya inaad qorto, qorshayso oo aad maamusho kaabayaasha kood ahaan. Fikradda ugu muhiimsan halkan waa "kaabayaasha sida code."
Dhammaan dukumeentiyada, sidaan idhi, way ku qoran yihiin terraform.io. Waxaan rajeynayaa in dadka badankiis ay ogaadaan goobtan oo ay akhriyeen dukumeentiyada. Hadday sidaas tahay, markaa waxaad joogtaa meesha saxda ah.
Tani waa sida faylka qaabeynta Terraform-ka caadiga ah uu u eg yahay, halkaas oo aan marka hore qeexno doorsoomayaasha qaarkood.
Xaaladdan oo kale waxaan ku qeexnay "aws_gobolka".
Kadibna waxaan ku qeexnaa waxa kheyraadka aan rabno inaan abuurno.
Waxaan wadnaa amarada qaar, gaar ahaan "terraform init" si aan ugu shubno ku-tiirsanaanta iyo bixiyeyaasha.
Oo waxaan wadnaa amarka "terraform apply" si loo hubiyo in qaabeynta la cayimay ay la mid tahay kheyraadka aan abuurnay. Maadaama aynaan horay u abuurin wax, Terraform waxay nagu dhiirigelisaa inaan abuurno ilahan.
Waxa kale oo jira adeegyo badan oo la mid ah. Qaar badan oo idinka mid ah oo isticmaala Amazon waxay yaqaaniin AWS CloudFormation ama Google Cloud Deployment Manager ama Maareeyaha Khayraadka Azure. Mid kasta oo iyaga ka mid ah waxa uu leeyahay hirgelintiisa nooc ka mid ah si loo maareeyo ilaha mid kasta oo ka mid ah bixiyayaasha daruuraha dadweynaha. Terraform ayaa si gaar ah faa'iido u leh sababtoo ah waxay kuu ogolaaneysaa inaad maamusho in ka badan 100 bixiye. (Faah faahin dheeraad ah halkan)
Hadafyada ay Terraform higsanaysay bilowgii hore:
Terraform wuxuu bixiyaa hal aragti oo kheyraad ah.
Ku ogolaanayaa inaad taageerto dhammaan aaladaha casriga ah.
Terraform-na waxa loo nashqadeeyay bilowgii hore sidii qalab kuu ogolaanaya inaad beddesho kaabayaasha si badbaado leh oo la saadaalin karo.
Sannadkii 2014, ereyga "la saadaalin karo" wuxuu u ekaa mid aan caadi ahayn marka la eego macnaha guud.
Haddii aad rabto inaad abuurto VPC, markaa waxaad cayimaysaa qiyaastii 12kan sadar. Sharaxaad ka bixi gobolka aad rabto inaad ka abuurto, cidr_block ee ciwaanka IP-ga si aad u isticmaasho. Waa intaas.
Dabcan, mashruucu si tartiib tartiib ah ayuu u kori doonaa.
Oo waxaad ku dari doontaa farabadan waxyaabo cusub halkaas: ilaha, ilaha xogta, waxaad ku dhex milmi doontaa bixiyeyaasha cusub, si lama filaan ah waxaad u baahan doontaa inaad isticmaasho Terraform si aad u maamusho isticmaalayaasha xisaabtaada GitHub, iwm. Waxaa laga yaabaa inaad rabto inaad isticmaasho noocyo kala duwan Bixiyeyaasha DNS, ka gudub wax walba. Terraform ayaa tan ka dhigaysa mid fudud.
Aynu eegno tusaalaha soo socda.
Waxaad si tartiib tartiib ah ugu darsataa internet_gateway sababtoo ah waxaad ka rabtaa ilaha VPC gaaga si aad u hesho internet. Tani waa fikrad wanaagsan.
Natiijadu waa tan main.tf:
Tani waa qaybta ugu sareysa ee main.tf.
Tani waa qaybta hoose ee main.tf.
Kadib waxaad ku dari kartaa subnet. Marka aad rabto in aad ku darto NAT gateways, waddooyin, miisaska hagidda iyo farabadan ee subnets kale, ma lahaan doontid 38 sadar, laakiin qiyaastii 200-300 xariiq.
Taasi waa, faylkaaga main.tf si tartiib tartiib ah ayuu u korayaa. Badana dadku waxay wax walba ku ridaan hal fayl. 10-20 Kb ayaa ka muuqda main.tf. Bal qiyaas in 10-20 Kb ay ka kooban tahay qoraal. Wax walbana waxay ku xiran yihiin wax walba. Tani si tartiib tartiib ah ayey u adkaaneysaa in lagu shaqeeyo. 10-20 Kb waa kiis isticmaale oo wanaagsan, mararka qaarkoodna ka badan. Dadkuna mar walba uma malaynayaan in tani ay xun tahay.
Sida barnaamijyada caadiga ah, ie. ma aha kaabayaasha sida code, waxaan loo isticmaalaa in aan isticmaalo farabadan oo ka mid ah fasallo kala duwan, baakadaha, modules, kooxaynta. Terraform wuxuu kuu ogolaanayaa inaad sameyso wax badan oo isku mid ah.
Koodhku wuu sii kordhayaa.
Ku-tiirsanaanta u dhexeeya kheyraadka ayaa sidoo kale sii kordhaya.
Waxaana leennahay baahi weyn oo weyn. Waxaan fahamsanahay inaanan sidan ku sii noolaan karin. Xeerkayagu wuxuu noqonayaa mid aad u weyn. 10-20 Kb, dabcan, ma ahan mid aad u ballaaran, laakiin waxaan ka hadleynaa oo kaliya xirmooyinka shabakada, tusaale ahaan waxaad ku dartay oo kaliya ilaha shabakada. Kama hadlayno Hadhaaga Culayska Codsiga, Kutlada ES, Kubernetes, iwm., halkaas oo 100 Kb si fudud loogu tidcan karo. Haddii aad qorto waxaas oo dhan, waxaad dhawaan baran doontaa in Terraform ay bixiso cutubyada Terraform.
Qaybaha Terraform-ka waa qaabaynta Terraform-ka is-ka kooban oo loo maareeyo koox ahaan. Taasi waa waxa kaliya ee aad u baahan tahay inaad ka ogaato qaybaha Terraform. Iyagu maaha kuwo caqli-gal ah haba yaraatee, kuuma oggola inaad samayso xidhiidh adag oo ku xidhan shay. Dhammaan tani waxay ku dhacdaa garbaha horumariyeyaasha. Taasi waa, kani waa nooc ka mid ah qaabaynta Terraform oo aad hore u qortay. Waxaadna si fudud ugu wici kartaa koox ahaan.
Marka waxaan isku dayeynaa inaan fahanno sida aan u wanaajino 10-20-30 Kb ee koodkayaga. Waxaan si tartiib tartiib ah u ogaanay inaan u baahanahay inaan isticmaalno cutubyada qaarkood.
Nooca koowaad ee cutubyada aad la kulanto waa modules kheyraadka. Ma fahmayaan waxa kaabayaashaagu ku saabsan yahay, waxa ganacsigaagu ku saabsan yahay, meesha iyo waxa shuruudaha ku jira. Kuwani waa cutubyada aan, oo ay weheliyaan bulshada isha furan, maamulo, oo aan u soo bandhignay sidii dhismihii ugu horreeyay ee kaabayaashaaga.
Tusaale ahaan moduleka kheyraadka.
Marka aan u yeerno moduleka kheyraadka, waxaan cadeyneynaa dariiqa aan ka soo rareyno waxa ku jira.
Waxaan tilmaamaynaa nooca aan rabno inaan soo dejinno.
Waxaan halkaas ku dhaafinnaa doodo badan. Waa intaas. Taasi waa waxa kaliya ee aan u baahanahay inaan ogaano marka aan isticmaaleyno cutubkan.
Dad badan ayaa u maleynaya in haddii ay isticmaalaan nuqulkii ugu dambeeyay, wax walbaa waxay noqon doonaan kuwo xasilloon. Laakiin maya. Kaabayaasha dhaqaalaha waa in la qaabeeyey, waa in aan si cad uga jawaabnaa nooca kan ama qaybtaas la geeyey.
Waa kan koodka ku jira cutubkan. Kooxda amniga. Halkan waxaa ku qoran liiska 640aad. Abuuritaanka kheyraadka badbaadada-croup ee Amazon qaab kasta oo suurtagal ah waa hawl aan fududayn. Kuma filna inaad si fudud u abuurto koox ammaan oo aad u sheegto sharciyada loo gudbiyo. Waxay noqon lahayd mid aad u fudud. Waxaa jira hal milyan oo xayiraad oo kala duwan gudaha Amazon. Tusaale ahaan, haddii aad isticmaasho VPC dhamaadka, liiska horgalayaasha, APIs kala duwan oo isku dayaya in uu isku daro waxaas oo dhan wax kasta oo kale, ka dibna Terraform kuma ogola inaad tan sameyso. Amazon API-ga ma ogola middaan sidoo kale. Sidaa darteed, waxaan u baahanahay inaan ku qarsano dhammaan caqli-galnimadan xun ee moduleka oo aan siino koodka isticmaalaha oo u eg sidan oo kale.
Isticmaaluhu uma baahna inuu ogaado sida loogu sameeyo gudaha.
Nooca labaad ee cutubyada, oo ka kooban qaybaha kheyraadka, ayaa horeyba u xalliya dhibaatooyinka ku habboon ganacsigaaga. Inta badan tani waa meel u ah kordhinta Terraform oo dejisa qaar ka mid ah qiyamka adag ee calaamadaha, heerarka shirkadda. Waxa kale oo aad ku dari kartaa shaqeynta halkaas oo Terraform aanu hadda kuu oggolaan inaad isticmaasho. Tani waa hadda. Hadda nooca 0.11, kaas oo noqon doona wax la soo dhaafay. Laakiin weli, horudhacayaasha, jsonnet, cookiecutter iyo farabadan oo kale ayaa ah habka kaaliyaha ee ay tahay in loo isticmaalo shaqo buuxda.
Marka xigta waxaan tusi doonaa tusaaleyaal tan ah.
Habka kaabayaasha waxaa loo yaqaan si isku mid ah.
Meesha laga soo dejiyo waxa ku jira waa la tilmaamay.
Tiro badan oo qiyam ah ayaa la soo dhex mariyey oo loo gudbiyaa cutubkan.
Marka xigta, gudaha cutubkan, qaybo badan oo agab ah ayaa loogu yeedhayaa inay abuuraan VPC ama Balancer Load Application, ama inay abuuraan koox-ammaanka ama kooxda Adeegga Kontaynarada Elastic.
Waxaa jira laba nooc oo modules ah. Tani waa muhiim in la fahmo sababtoo ah inta badan macluumaadka aan ku ururiyay warbixintan kuma qorna warqadaha.
Iyo dukumeentiyada ku jira Terraform hadda waa dhib badan sababtoo ah waxay dhahayaan waxaa jira sifooyinkan, waad isticmaali kartaa. Laakiin ma sheegto sida loo isticmaalo sifooyinkan, sababta ay u fiican tahay in la isticmaalo. Sidaa darteed, dad aad u tiro badan ayaa qoraa wax aysan la noolaan karin.
Aynu eegno sida loo qoro cutubyada soo socda. Kadib waxaan arki doonaa sida loo waco iyo sida loogu shaqeeyo koodka.
Talada #0 waa inaadan qorin qaybaha agabka. Inta badan cutubyadan horeba adigaa loogu qoray. Sida aan idhi, waa ilo furan, kuma jiraan wax macquul ah ganacsigaaga, ma haystaan qiyam adag oo loogu talagalay cinwaannada IP-yada, furaha sirta ah, iwm. Moduleku waa mid aad u dabacsan. Waxayna u badan tahay in mar hore la qoray. Waxaa jira qaybo badan oo loogu talagalay ilaha Amazon. Qiyaastii 650. Badankooduna waa tayo wanaagsan.
Tusaalahan, qof ayaa kuu yimid oo ku yidhi, “Waxaan rabaa in aan awoodo in aan maamulo kaydka xogta. Abuur module si aan u sameeyo xog-ururin." Qofku ma garanayo tafaasiisha fulinta midkood Amazon ama Terraform. Wuxuu si fudud u leeyahay: "Waxaan rabaa inaan maamulo MSSQL." Taasi waa, waxaan ula jeednaa in ay soo wici doonto modulekayaga, dhaafi doonta nooca injiinka halkaas, oo ay muujin doonto aagga wakhtiga.
Qofna waa inuusan ogaanin inaan ku abuuri doono laba ilo oo kala duwan gudaha cutubkan: mid MSSQL ah, kan labaadna wax kasta oo kale, kaliya sababtoo ah Terraform 0.11 ma cayimi kartid qiyamka aagagga waqtiga ikhtiyaariga ah.
Marka laga baxo cutubkan, qofku wuxuu awoodi doonaa inuu si fudud u helo cinwaan. Isagu ma ogaan doono database-ka, khayraadka aan ka abuureyno waxaas oo dhan gudaha. Tani waa shay aad muhiim u ah qarinta. Tanina ma khusayso oo keliya cutubyada dadweynaha ee il furan, laakiin sidoo kale cutubyada aad ku qori doonto gudaha mashaariicdaada iyo kooxahaaga.
Tani waa doodda labaad, taas oo aad muhiim u ah haddii aad isticmaalaysay Terraform in muddo ah. Waxaad haysataa meel kayd ah oo aad ku dhejisay dhammaan qaybahaaga Terraform ee shirkaddaada. Waana wax iska caadi ah in muddo ka dib uu mashruucani kori doono cabbir dhan hal ama laba megabyte. Tani way fiican tahay.
Laakiin dhibaatadu waa sida Terraform ugu yeero cutubyadan. Tusaale ahaan, haddii aad wacdo cutub si aad u abuurto isticmaale kasta, Terraform ayaa marka hore ku shubi doona kaydka oo dhan ka dibna u sii socon doona galka meesha uu modulekaas gaarka ahi ku yaal. Sidan waxaad soo dejisan doontaa hal megabyte mar kasta. Haddii aad maamusho 100 ama 200 isticmaale, markaa waxaad soo dejisan doontaa 100 ama 200 megabytes, ka dibna aad geli doonta galkaas. Markaa si dabiici ah ma rabto inaad soo dejiso waxyaabo badan mar kasta oo aad garaacdo "Terraform init".
Waxaa jira laba xal oo dhibaatadan. Marka hore waa in la isticmaalo dariiqyo qaraabo ah. Sidan waxaad ku tusaysaa koodka in galku yahay mid maxali ah (./). Kahor intaadan bilaabin wax, waxaad samaynaysaa Git clone ee kaydkan gudaha. Sidan ayaad hal mar u samaynaysaa.
Waxaa jira, dabcan, waxyaabo badan oo hoos u dhac ah. Tusaale ahaan, ma isticmaali kartid versioning. Tanina mararka qaarkood way adag tahay in lala noolaado.
Xalka labaad. Haddii aad leedahay submodules badan oo aad hore u leedahay nooc ka mid ah dhuumaha la aasaasay, markaa waxaa jira mashruuca MBT, kaas oo kuu ogolaanaya inaad ka soo ururiso baakado badan oo kala duwan oo ka mid ah monorepository oo aad ku dhejiso S3. Tani waa hab aad u wanaagsan. Sidaa darteed, faylka iam-user-1.0.0.zip wuxuu miisaamayaa kaliya 1 Kb, sababtoo ah koodhka si loo abuuro kheyraadkan waa mid aad u yar. Waxayna u shaqayn doontaa si dhakhso badan.
Aynu ka hadalno waxa aan loo isticmaali karin modules.
Waa maxay sababta ay tani xumaan ugu tahay modules? Waxa ugu xun waa in la qaato isticmaale. Ka soo qaad isticmaaluhu inuu yahay ikhtiyaarka xaqiijinta bixiyaha oo ay isticmaali karaan dad kala duwan. Tusaale ahaan, dhammaanteen waxaan ku milmi doonnaa doorka. Tani waxay ka dhigan tahay in Terraform uu qaadan doono doorkan. Ka dibna doorkan waxay sameyn doontaa ficillo kale.
Xumaantuna waa in haddii Vasya uu jecel yahay inuu ku xidho Amazon hal qaab, tusaale ahaan, adoo isticmaalaya doorsoomiyaha deegaanka ee caadiga ah, Petya wuxuu jecel yahay inuu isticmaalo furihiisa la wadaago, kaas oo uu ku leeyahay meel qarsoodi ah, markaa ma sheegi kartid labadaba Terraform Oo si ayan u la kulmin silica, looma baahna in lagu muujiyo block this moduleka. Tani waa in lagu tilmaamaa heer sare. Taasi waa, waxaan leenahay module khayraadka, module kaabayaasha iyo halabuurka korka. Taasna waa in lagu tilmaamaa meel sare.
Xumaanta labaadna waa arsaaqeeye. Halkan xumaantu maaha mid fudud, sababtoo ah haddii aad qorto koodka oo uu kuu shaqeeyo, markaa waxaad u maleyneysaa in haddii uu shaqeeyo, markaa maxaad u beddeshaa.
Xumaanta ayaa ah inaadan had iyo jeer xakamaynayn marka bixiyahan la bilaabayo, marka hore. Marka labaadna, ma xakamaynaysid waxa aws ec2 ka dhigan yahay, i.e. miyaan ka hadlaynaa Linux ama Windows hadda. Markaa ma qori kartid wax si isku mid ah uga shaqayn doona nidaamyada hawlgalka ee kala duwan ama kiisaska isticmaale ee kala duwan.
Tusaalaha ugu caansan, kaas oo sidoo kale lagu tilmaamay dukumeenti rasmi ah, waa haddii aad qorto aws_instance oo aad qeexdo farabadan doodo, markaa wax qalad ah kuma jiraan taas haddii aad ku qeexdo bixiye "maxalli-exec" halkaas oo aad maamusho macquul- buuga ciyaarta .
Dhab ahaantii, haa, ma jiraan wax khalad ah taas. Laakiin dhab ahaantii ugu dhakhsaha badan waxaad ogaan doontaa in sheygan maxalliga ah-exec uusan ka jirin, tusaale ahaan, launch_configuration.
Oo marka aad isticmaasho launch_configuration, oo aad rabto in aad ka abuurto koox autoscaling hal tusaale, ka dibna in launch_configuration ma jiro fikrad ah "bixiye". Waxaa jira fikradda "xogta isticmaalaha".
Sidaa darteed, xal caalami ah oo dheeraad ah ayaa ah in la isticmaalo xogta isticmaalaha. Oo waxaa lagu bilaabi doonaa midkood tusaale ahaan laftiisa, marka tusaale ahaan la shido, ama isla xogta isticmaalaha, marka kooxda autoscaling ay isticmaasho launch_configuration.
Haddii aad wali rabto inaad maamusho bixiyaha, sababtoo ah waa qayb isku dhejisan, marka hal kheyraad la abuuro, wakhtigaas waxaad u baahan tahay inaad socodsiiso bixiyahaaga, amarkaaga. Waxaa jira xaalado badan oo noocaas ah.
Ilaha ugu saxsan ee tan waxaa loo yaqaan null_resource. Null_resource waa kheyraad aan waligiis la abuurin. Waxba ma taabato, ma jiro API, ma jiro autoscaling. Laakin waxa ay ku ogolanaysaa in aad xakamayso marka aad wado amarka Xaaladdan oo kale, amarku wuxuu socdaa inta lagu jiro abuurista.
Waxaa jira calaamado dhowr ah. Ma geli doono dhammaan calaamadaha si faahfaahsan. Waxaa jira maqaal arrintan ku saabsan. Laakiin haddii aad la shaqeysay Terraform ama aad isticmaashay qaybaha dadka kale, markaa waxaad marar badan ogaatay in qaybo badan, sida inta badan koodhka ilaha furan, ay dadka u qoraan baahidooda. Nin baa qoray oo dhibkiisa xaliyay. Waxaan ku dhejiyay GitHub, ha noolaado. Way noolaan doontaa, laakiin haddii aysan jirin dukumeenti iyo tusaaleyaal halkaas, markaa qofna ma isticmaali doono. Oo haddii aysan jirin wax shaqeyn ah oo kuu ogolaanaya inaad xalliso wax yar oo ka badan hawsheeda gaarka ah, markaa qofna ma isticmaali doono sidoo kale. Waxaa jira siyaabo badan oo lagu lumin karo isticmaalayaasha.
Haddii aad rabto inaad wax qorto si dadku u isticmaalaan, markaa waxaan kugula talinayaa inaad raacdo calaamadahan.
Tani waa:
Dukumeenti iyo tusaalooyin.
shaqayn buuxda
Waxyeellada macquulka ah.
Nadiifi code
Tijaabooyin.
Tijaabooyinku waa xaalad kala duwan sababtoo ah aad bay u adagtahay in la qoro. Waxaan aaminsanahay in badan oo dukumeenti iyo tusaaleyaal ah.
Markaa, waxaanu eegnay sida loo qoro cutubyada. Waxaa jira laba doodood. Midda koowaad, oo ah tan ugu muhiimsan, ma aha inaad qorto haddii aad awooddo, sababtoo ah dad badan ayaa horey u qabtay hawlahan adiga ka hor. Marka labaad, haddii aad weli go'aansato, ka dibna isku day inaadan u isticmaalin bixiyeyaasha modules iyo bixiyeyaasha.
Tani waa qaybta cawlan ee dukumeentiga. Waxaa laga yaabaa inaad hadda ku fekereyso: "Waxba ma cadda. Laguma qancin." Laakiin waxaan arki doonaa lix bilood gudahood.
Hadda aan ka hadalno sida loogu yeero cutubyadan.
Waxaan fahamsanahay in koodkayaga koray waqti ka dib. Hadda ma hayno hal fayl, waxaan horey u haynay 20 fayl. Dhammaantood waxay ku jiraan hal gal. Ama laga yaabaa in shan gal. Waxaa laga yaabaa in aan bilaabayno in aan si uun u kala saarno gobol ahaan, qaybo ka mid ah. Markaa waxaan fahamsanahay in hadda aan haysanno qaybo aasaasi ah oo isku-dubbarid iyo abaabul. Taasi waa, waa in aan fahamnaa waxa aan samayno haddii aan bedelno ilaha shabakada, waxa aan ku samayno inta ka hartay kheyraadkeena, sida loo sababo ku tiirsanaanta, iwm.
Waxaa jira laba daraf. Xagga ugu horreeya waa mid keliya. Waxaan haynaa hal fayl oo master ah. Waqtigaas, tani waxay ahayd dhaqanka ugu wanaagsan ee rasmiga ah ee bogga Terraform.
Laakin hadda waxaa loo qoray sidii hore oo meesha looga saaray. Muddo ka dib, bulshada Terraform waxay xaqiiqsadeen in tani ay ka fog tahay habka ugu wanaagsan, sababtoo ah dadku waxay bilaabeen inay u isticmaalaan mashruuca siyaabo kala duwan. Waxaana jira dhibaatooyin. Tusaale ahaan, marka aan ku taxno dhammaan ku tiirsanaanta hal meel. Waxaa jira xaalado marka aan gujino "Qorshaha Terraform" iyo ilaa Terraform ay cusbooneysiiso gobollada kheyraadka oo dhan, waqti badan ayaa dhaafi kara.
Waqti badan waa, tusaale ahaan, 5 daqiiqo. Qaar ka mid ah tani waa waqti badan. Waxaan arkay kiisas ay ku qaadatay 15 daqiiqo. AWS API waxay ku qaadatay 15 daqiiqo inay isku daydo inay ogaato waxa ka dhacaya xaaladda kheyraad kasta. Tani waa aag aad u ballaaran.
Iyo, si dabiici ah, dhibaato la xidhiidha ayaa soo bixi doonta markaad rabto inaad wax ka bedesho hal meel, ka dibna waxaad sugtaa 15 daqiiqo, waxayna ku siinaysaa shiraac isbedelada qaarkood. Waad tufay, qortay "Haa", oo wax baa khaldamay. Tani waa tusaale dhab ah. Terraform iskuma dayo inuu kaa ilaaliyo dhibaatooyinka. Taasi waa, qor waxaad rabto. Waxaa jiri doona dhibaatooyin - dhibaatooyinkaaga. Halka Terraform 0.11 aanu isku dayin inuu ku caawiyo sinaba. Waxaa jira meelo xiiso leh oo ku yaal 0.12 kuwaas oo kuu oggolaanaya inaad tiraahdo: "Vasya, runtii tan ayaad rabtaa, ma soo noqon kartaa dareenkaaga?"
Habka labaad waa in meeshan la dhimo, taas oo ah, wicitaanada meel ka imanaya waa la yarayn karaa isku xirnaanta meel kale.
Dhibaatada kaliya ayaa ah inaad u baahan tahay inaad qorto kood badan, tusaale ahaan waxaad u baahan tahay inaad ku qeexdo doorsoomayaasha tiro badan oo faylal ah oo aad tan cusbooneysiiso. Dadka qaarkiis ma jecla. Tani waa caadi aniga. Dadka qaarna waxay u maleynayaan: "Maxaad u qortaa tan meelo kala duwan, dhammaan waxaan ku dhejin doonaa hal meel." Tani waa suurtagal, laakiin tani waa xag-jirnimada labaad.
Yaa waxaas oo dhan hal meel ku nool? Hal, laba, saddex qof, yacni, qof ayaa isticmaalaya.
Oo yaa u yeedhay qayb gaar ah, hal block ama hal module kaabayaal? Shan ilaa todoba qof. Tani waa qabow.
Jawaabta ugu badan waa meel dhexe. Haddii mashruucu weyn yahay, markaa waxaad inta badan yeelan doontaa xaalad aan xal ku habboonayn oo wax walbaa aysan ka shaqeynin, sidaas darteed waxaad ku dhamaaneysaa isku-dhafka. Ma jiraan wax khalad ah oo arrintan ku saabsan, inta aad fahamsan tahay in labaduba ay leeyihiin faa'iidooyin.
Waxaan soo jeedin karaa xalalka jira. Waxaad isticmaali kartaa Terraform si aad u samayso sixirka, ama waxaad isticmaali kartaa makefiles si aad u isticmaasho Terraform. Oo arag haddii ay wax halkaas iska beddeleen, waxaad ka bilaabi kartaa halkan.
Sidee u jeceshahay go'aankan? Ma jiraa qof aaminsan in tani ay tahay xal fiican? Waxaan arkaa dhoola cadeyn, sida muuqata shaki ayaa soo galay.
Dabcan, tan ha isku dayin guriga. Terraform weligeed looma qorshayn in laga maamulo Terraform.
Hal warbixin waxay igu yidhaahdeen: "Maya, tani ma shaqayn doonto." Ujeedadu waa in aysan shaqayn. Inkasta oo ay u muuqato mid aad u cajiib ah markaad ka bilaabi karto Terraform ka Terraform, ka dibna Terraform, waa inaadan samayn taas. Terraform waa in had iyo jeer ku bilowdaa si fudud.
Faylka qaabeynta Terraform ee caadiga ah wuxuu u eg yahay sidan.
Waxaad sheegtaa moduleka gaarka ah ee aad rabto inaad wacdo.
Maxaa ku tiirsanaanta moduleka?
Maxaa doodaha uu modulekani aqbalayaa. Taasi waa waxa kaliya ee jira in laga ogaado Terragrunt.
Dukumentiga ayaa jira, waxaana jira 1 xiddigood oo ku yaal GitHub. Laakiin inta badan kiisaska tani waa waxa aad u baahan tahay inaad ogaato. Tanina aad bay u fududahay in laga hirgeliyo shirkadaha hadda bilaabay inay la shaqeeyaan Terraform.
Haddii aad u baahan tahay inaad ku darto sifooyin cusub koodkaaga, inta badan tani way fududahay. Waxaad qoraysaa kheyraad cusub, wax walba waa sahlan yihiin.
Haddii aad haysatid xoogaa kheyraad ah oo aad horay u abuurtay, tusaale ahaan, waxaad ka baratay Terraform ka dib markaad furato akoon AWS oo aad rabto inaad isticmaasho kheyraadka aad horey u heysatay, markaa waxaa habboonaan lahayd inaad qaabkaaga u kordhiso habkan, si waxay taageertaa isticmaalka kheyraadka jira.
Waxayna taageertay abuurista ilo cusub iyadoo la adeegsanayo khayraadka block.
Marka la soo saaro waxaan had iyo jeer soo celinaa id soo saarista iyadoo ku xiran waxa la isticmaalay.
Dhibaatada labaad ee aadka muhiimka u ah Terraform 0.11 waxay la shaqaynaysaa liisaska.
Dhibaatadu waa in haddii aan haysanno liiska isticmaalayaasha.
Oo markaan abuurno isticmaalayaashan iyadoo la adeegsanayo kheyraadka xannibaadda, markaa wax walbaa si fiican ayey u socdaan. Waxaan dhex maraa liiska oo dhan, abuurista fayl kasta. Wax walba waa fiican yihiin. Ka dibna, tusaale ahaan, user3, oo dhexda ku jira, waa in laga saaraa halkan, ka dibna dhammaan kheyraadka la abuuray isaga ka dib ayaa dib loo abuuri doonaa sababtoo ah index ayaa isbeddelaya.
Ku shaqaynta liisaska jawi dawladeed. Waa maxay deegaan dawladeed? Tani waa xaalada meesha qiimaha cusub la abuurayo marka kheyraadkan la abuuro. Tusaale ahaan, furaha gelitaanka AWS ama furaha sirta ah ee AWS, ie. marka aan abuurno isticmaale, waxaan helnaa galitaanka ama furaha siraha cusub. Mar kasta oo aan tirtirno isticmaale, isticmaaluhu wuxuu yeelan doonaa fure cusub. Laakiin tani maaha shui feng, sababtoo ah isticmaaluhu ma rabi doono inuu saaxiibo nala yeesho haddii aan u abuurno isticmaale cusub mar kasta oo qof ka tago kooxda.
Xalku waa kan. Kani waa kood ku qoran Jsonnet. Jsonnet waa luuqad wax ka bedela Google.
Amarkani wuxuu kuu ogolaanayaa inaad aqbasho template-ka oo marka la soo saaro wuxuu soo celinayaa faylka json kaas oo loo sameeyay si waafaqsan qaabkaaga.
Qaab-dhismeedka ayaa u eg sidan.
Terraform wuxuu kuu ogolaanayaa inaad si isku mid ah ula shaqeyso labada HCL iyo Json, markaa haddii aad awood u leedahay inaad abuurto Json, markaa waxaad ku dhex shubi kartaa Terraform. Faylka wata kordhinta .tf.json si guul leh ayaa loo soo dejin doonaa.
Ka dibna waxaan ula shaqeynaa sida caadiga ah: terraform init, terramorm codsan. Oo waxaan abuurnaa laba isticmaale.
Hadda kama baqayno haddii qof ka tago kooxda. Waxaan wax ka beddeli doonaa faylka json Vasya Pupkin wuu tagay, Petya Pyatochkin ayaa hadhay. Petya Pyatochkin ma heli doonto fure cusub.
Isku-dhafka Terraform-ka iyo qalabyada kale runtii maaha shaqada Terraform. Terraform waxaa loo abuuray sidii madal lagu abuurayo kheyraad waana taas. Wax kasta oo ka dambeeyana maaha walaac Terraform. Oo looma baahna in halkaas lagu tolo. Waxaa jira macquul, kaas oo sameeya wax kasta oo aad u baahan tahay.
Laakiin xaalado ayaa soo baxa marka aan rabno inaan kordhinno Terraform oo aan wacno amar ka dib marka wax la dhammeeyo.
Jidka kowaad. Waxaan abuurnaa wax soo saar meesha aan ku qorno amarkan.
Kadibna waxaan ugu yeereynaa amarkan ka soo baxa sheyga terraform-ka oo aan qeexno qiimaha aan rabno. Sidaa darteed, amarka waxaa lagu fuliyaa dhammaan qiyamka la beddelay. Aad bay u raaxo badan tahay.
Dabiici ahaan, tani dhammaantood waa siman yihiin warqad, sababtoo ah Amazon, sida dhammaan bixiyeyaasha kale ee dadweynaha, waxay leeyihiin fara badan oo kiisas u gaar ah.
Kiiska cidhifka ah ee ugu caansan waa marka aad furto akoon AWS, waxay ku xiran tahay gobollada aad isticmaasho; sifadan ma halkaas baa laga awooday; laga yaabaa inaad furtay ka dib December 2013; laga yaabaa in aad isticmaalayso default in VPC iwm. Waxaa jira xadayn badan. Waxayna Amazon ku kala firdhisay dhammaan dukumeentiyadii.
Waxaa jira dhowr shay oo aan ku talinayo in laga fogaado.
Si aad u bilowdo, iska ilaali dhammaan dooda aan qarsoodiga ahayn ee gudaha qorshaha Terraform ama Terraform CLI. Waxaas oo dhan waxaa lagu ridi karaa faylka tfvars ama doorsoome deegaan.
Laakiin uma baahnid inaad xafiddo amarkan sixirka oo dhan. Qorshaha Terraform – var and off we go. Doorsoomaha koowaad waa var, doorsoomaha labaad waa var, ka saddexaad, afraad. Mabda'a ugu muhiimsan ee kaabayaasha koodka ah ee aan isticmaalo inta badan waa in kaliya marka la eego koodhka, waa in aan si cad u fahmo waxa halkaas la geeyo, gobolkee iyo qiyamka. Oo sidaas darteed uma baahnid inaan akhriyo dukumeentiyada ama aan weydiiyo Vasya waxa uu u isticmaalay si uu u abuuro kooxdeena. Kaliya waxaan u baahanahay inaan furo fayl leh tfvars kordhinta, kaas oo inta badan ku habboon deegaanka, oo aan eego wax kasta oo jira.
Sidoo kale, ha isticmaalin doodaha bartilmaameedka ah si loo yareeyo baaxadda. Taas awgeed aad bay u fududahay in la isticmaalo qaybo yaryar oo kaabayaal ah.
Sidoo kale, looma baahna in la xaddido oo la kordhiyo isbarbardhigga. Haddii aan haysto 150 kheyraad oo aan rabo inaan kordhiyo isbarbardhigga Amazon laga bilaabo 10 illaa 100, markaa waxay u badan tahay inay wax khaldami doonaan. Ama waxaa laga yaabaa inay hadda si fiican u socoto, laakiin marka Amazon ay sheegto inaad wacdo badan tahay, waxaad noqon doontaa dhibaato.
Terraform wuxuu isku dayi doonaa inuu dib u bilaabo inta badan dhibaatooyinkan, laakiin ma gaadhi doontid ku dhawaad waxba. Isbarbardhigga=1 waa shay muhiim ah in la isticmaalo haddii aad ku turunturoodo qaar ka mid ah cayayaanka gudaha AWS API ama gudaha bixiyaha Terraform-ka. Kadibna waxaad u baahan tahay inaad qeexdo: parallelism=1 oo sug ilaa Terraform uu dhammeeyo hal wicitaan, ka dibna kan labaad, ka dibna kan saddexaad. Mid mid ayuu u daah-furi doonaa.
Dadku badanaa waxay i weydiiyaan, "Maxaan u malaynayaa in goobaha shaqada ee Terraform ay shar yihiin?" Waxaan aaminsanahay in mabda'a kaabayaasha sida code waa in la arko waxa kaabayaasha la abuuray iyo waxa la qiimeeyo.
Goobaha shaqada may abuurin isticmaalayaashu Tani macnaheedu maaha in isticmaalayaashu ay ku qoreen arrimaha GitHub oo aanan ku noolaan karin la'aanteed goobaha shaqada ee Terraform. Maya sidan maaha. Terraform Enterprise waa xal ganacsi. Terraform oo ka socda HashiCorp ayaa go'aansaday inaan u baahanahay goobo shaqo, sidaas darteed waanu xareynay. Aad ayey ii fududdahay in aan ku dhejiyo gal gaar ah. Markaas waxaa jiri doona faylal yar oo dheeraad ah, laakiin way sii caddaan doontaa.
Sidee looga shaqeeyaa koodka? Dhab ahaantii, ku shaqeynta liisaska waa xanuunka kaliya. Si fududna u qaado Terraform. Tani ma aha waxa kuu samayn doona wax kasta oo weyn. Looma baahna in la tuuro wax kasta oo ku qoran dukumentiga halkaas.
Mawduuca warbixinta ayaa la qoray "mustaqbalka." Arintan si kooban ayaan uga hadli doonaa. Mustaqbalka, tani waxay ka dhigan tahay in 0.12 la sii deyn doono dhawaan.
0.12 waa wax badan oo cusub. Haddii aad ka timid barnaamijyada caadiga ah, markaa waxaad seegeysaa dhammaan noocyada kala duwan ee blocks firfircoon, siddo, hawlgallada isbarbardhigga saxda ah iyo shuruudaha, halkaas oo dhinacyada bidix iyo midig aan la xisaabin isku mar, laakiin waxay ku xiran tahay xaaladda. Wax badan ayaad tabaysaa, markaa 0.12 ayaa kuu xalin doonta.
Laakiin! Haddii aad wax yar u qorto oo aad si fudud u qorto, adigoo isticmaalaya qaybo diyaarsan iyo xalalka saddexaad, markaa ma sugi doontid oo aad rajaynayso in 0.12 uu kuu iman doono oo uu wax walba kuu hagaajin doono.
Waad ku mahadsan tahay warbixinta! Waxaad uga hadashay kaabayaasha kood ahaan oo aad si dhab ah u tidhi hal kelmad oo ku saabsan imtixaannada. Imtixaanada miyaa looga baahan yahay cutubyada? Waa ayo cidda mas'uuliyadda ka saaran tahay? Miyaan u baahanahay inaan qoro naftayda mise waa mas'uuliyadda cutubyada?
Sannadka soo socda waxaa buuxin doona warbixino sheegaya inaan go'aansanay inaan tijaabino wax walba. Maxaa la tijaabiyaa waa su'aasha ugu weyn. Waxaa jira ku-tiirsanaan badan, xannibaadyo badan oo ka yimid bixiyeyaasha kala duwan. Marka aniga iyo adiga aan hadlayno oo aad tiraahdo: "Waxaan u baahanahay baaritaanno," markaas waxaan ku weydiiyaa: "Maxaad tijaabin doontaa?" Waxaad sheegtay inaad gobolkaaga ku tijaabin doonto. Markaa waxaan leeyahay taasi kama shaqaynayso gobolkayga. Taasi waa, xitaa ma awoodi doono inaan ku heshiiyo tan. Ma aha in la sheego in ay jiraan dhibaatooyin farsamo oo badan. Taasi waa, sida loo qoro imtixaanadan si ay ugu filnaato.
Waxaan si firfircoon u baarayaa mawduucan, tusaale ahaan sida si toos ah loo soo saaro imtixaanno ku salaysan kaabayaasha aad qortay. Taasi waa, haddii aad qortay koodhkan, markaa waxaan u baahanahay inaan socodsiiyo, taas oo ku saleysan tan waxaan abuuri karaa imtixaanno.
Terratest waa mid ka mid ah maktabadaha inta badan la sheego ee kuu ogolaanaya inaad qorto imtixaanada la qabsiga Terraform. Tani waa mid ka mid ah utility-yada. Waxaan doorbidayaa nooca DSL, tusaale ahaan, spec.
Anton, waad ku mahadsan tahay warbixinta! Magacaygu waa Valery. Aan weydiiyo su'aal falsafad yar. Waxaa jira, shuruud ahaan, bixinta, waxaa jira hawlgelin. Bixinta waxay abuurtaa kaabayaashayga, marka la geeyo waxaan ku buuxinnaa wax faa'iido leh, tusaale ahaan, server-yada, codsiyada, iwm. Oo waxay ku jirtaa madaxayga in Terraform uu u badan yahay bixinta, iyo suurtogalnimada waa wax badan oo la geynayo, sababtoo ah macquul sidoo kale waa jir ahaaneed Kaabayaasha. wuxuu kuu ogolaanayaa inaad ku rakibto nginx, Postgres. Laakiin isla mar ahaantaana, macquul waxay u muuqataa inay ogolaato bixinta, tusaale ahaan, Amazon ama ilaha Google. Laakiin Terraform sidoo kale wuxuu kuu ogolaanayaa inaad geyso qaar ka mid ah software-ka adigoo isticmaalaya qaybo ka mid ah. Marka loo eego aragtidaada, ma jiraan nooc ka mid ah xuduudaha u dhexeeya Terraform iyo Aansible, halkee iyo waxa ka wanaagsan in la isticmaalo? Mise, tusaale ahaan, ma u malaynaysaa in Ansible uu yahay qashin, waa inaad isku daydaa inaad wax walba u isticmaasho Terraform?
Su'aal wanaagsan, Valery. Waxaan aaminsanahay in Terraform-ka uusan is beddelin ujeeddada laga soo bilaabo 2014. Waxaa loo abuuray kaabayaasha oo u dhintay kaabayaasha. Waxaan wali haysanay oo aan yeelan doonaa baahida maaraynta qaabeynta. Caqabadda jirta ayaa ah in ay jirto xogta isticmaalaha gudaha launch_configuration. Oo halkaas waxaad jiidataa macquulka ah, iwm. Tani waa farqiga caadiga ah ee aan sida ugu fiican u jeclahay.
Haddii aan ka hadlayno kaabayaasha quruxda badan, markaa waxaa jira adeegyo sida Packer oo soo ururiya sawirkan. Kadibna Terraform waxay isticmaashaa isha xogta si ay u hesho sawirkan oo ay u cusbooneysiiso launch_configuration. Taasi waa, habkan dhuumaha ayaa ah inaan marka hore jiidno Tracker, ka dibna jiido Terraform. Oo haddii dhismuhu dhaco, markaa isbeddel cusub ayaa dhacaya.
Hello! Waad ku mahadsan tahay warbixinta! Magacaygu waa Misha, shirkadda RBS. Waxaad wici kartaa Macallimiinta adoo adeegsanaya adeeg bixiye marka la abuurayo kheyraad. Aansible waxa kale oo uu leeyahay mawduuc la yiraahdo alaabada firfircoon. Oo marka hore waxaad wici kartaa Terraform, ka dibna wac Ansible, kaas oo ka qaadi doona khayraadka gobolka iyo fulinta. Maxaa ka wanaagsan?
Dadku waxay isticmaalaan labadaba guul siman. Waxay iila muuqataa in alaabada firfircoon ee Ansible ay tahay wax ku habboon, haddii aynaan ka hadlin kooxda autoscaling. Sababtoo ah kooxda autoscaling waxaan horey u haysanaa qalab noo gaar ah, kaas oo loo yaqaan launch_configuration. In launch_configuration waxaan ku duubnaa wax kasta oo u baahan in la bilaabo markaan abuurno kheyraad cusub. Sidaa darteed, Amazon, adoo isticmaalaya alaab firfircoon iyo akhrinta faylka Terraform ts, fikradayda, waa xad dhaaf. Haddii aad isticmaasho qalab kale oo aan lahayn fikradda "kooxda autoscaling", tusaale ahaan, waxaad isticmaashaa DigitalOcean ama bixiye kale oo aan jirin koox autoscaling, ka dibna halkaas waa inaad gacanta ku soo jiidataa API, hel cinwaannada IP, samee faylka alaabada firfircoon, iyo Aansible ayaa mar hore dhex wareegi doona. Taasi waa, Amazon waxaa jira launch_configuration, iyo wax kasta oo kale waxaa jira alaab firfircoon.