Yipada lati Terraform si CloudFormation - o si kabamọ

Aṣoju awọn amayederun bi koodu ni ọna kika ọrọ atunwi jẹ adaṣe ti o dara julọ ti o rọrun fun awọn eto ti ko nilo fiddling pẹlu awọn eku. Ilana yii ni orukọ - Amayederun bii Koodu, ati titi di isisiyi awọn irinṣẹ olokiki meji wa lati ṣe imuse rẹ, pataki ni AWS: Ilana ipilẹ и CloudFormation.

Yipada lati Terraform si CloudFormation - o si kabamọ
Ifiwera iriri pẹlu Terraform ati CloudFormation

Ṣaaju ki o to de twitch (oun ni Amazon Jr.) Mo ṣiṣẹ ni ọkan ibẹrẹ o si lo Terraform fun ọdun mẹta. Ni aaye tuntun, Mo tun lo Terraform pẹlu gbogbo agbara mi, lẹhinna ile-iṣẹ naa ti tẹ iyipada si ohun gbogbo a la Amazon, pẹlu CloudFormation. Mo ti ni idagbasoke awọn iṣe ti o dara julọ fun awọn mejeeji, ati pe Mo ti lo awọn irinṣẹ mejeeji ni eka pupọ, ṣiṣan iṣẹ jakejado agbari. Lẹ́yìn náà, lẹ́yìn tí wọ́n ronú pìwà dà àwọn àbájáde ìṣílọ láti Terraform sí CloudFormation, ó dá mi lójú pé Terraform jasi yiyan ti o dara julọ fun ajo naa.

Terraform oburewa

Beta software

Terraform ko tii tu ẹya 1.0 silẹ sibẹsibẹ, eyiti o jẹ idi ti o dara lati ma lo. O ti yipada pupọ lati igba akọkọ ti Mo gbiyanju funrararẹ, ṣugbọn pada lẹhinna terraform apply nigbagbogbo fọ lulẹ lẹhin ọpọlọpọ awọn imudojuiwọn tabi nirọrun lẹhin ọdun meji ti lilo. Emi yoo sọ pe "ohun gbogbo yatọ ni bayi," ṣugbọn ... eyi ni ohun ti gbogbo eniyan dabi lati sọ, rara? Awọn iyipada wa ti ko ni ibamu pẹlu awọn ẹya ti tẹlẹ, botilẹjẹpe wọn yẹ, ati pe o kan lara bi awọn sintasi ati awọn abstractions ti awọn ile itaja ohun elo jẹ bayi ohun ti a nilo. Ohun elo naa dabi ẹni pe o ti dara gaan, ṣugbọn… :-0

Ni apa keji, AWS ti ṣe iṣẹ ti o dara mimu ibaramu sẹhin. Eyi ṣee ṣe nitori awọn iṣẹ wọn nigbagbogbo ni idanwo daradara laarin agbari ati lẹhinna nikan, fun lorukọmii, ni a tẹjade. Nitorinaa “wọn gbiyanju takuntakun” jẹ aibikita. Mimu ibaramu sẹhin pẹlu awọn API fun eto ti o yatọ ati eka bi AWS ṣe nira iyalẹnu. Ẹnikẹni ti o ni lati ṣetọju awọn API ti gbogbo eniyan ti o lo ni ibigbogbo bi wọn ṣe jẹ yẹ ki o loye bi o ṣe ṣoro lati ṣe bẹ fun ọpọlọpọ ọdun. Ṣugbọn ihuwasi ti CloudFormation, ninu iranti mi, ko yipada rara ni awọn ọdun.

Pade ẹsẹ... ọta ibọn ni

Bi mo ti mọ, pa awọn oluşewadi rẹ ode Akopọ CloudFormation lati akopọ CF rẹ ko ṣee ṣe. Bakan naa ni otitọ pẹlu Terraform. O faye gba o lati gbe awọn orisun to wa tẹlẹ sinu akopọ rẹ. Iṣẹ naa le sọ pe o jẹ iyalẹnu, ṣugbọn pẹlu agbara nla wa ojuse nla. O kan nilo lati ṣafikun orisun kan si akopọ, ati lakoko ti o n ṣiṣẹ pẹlu akopọ rẹ, o ko le paarẹ tabi yi orisun yii pada. Ni ojo kan o backfired. Ni ọjọ kan lori Twitch, ẹnikan lairotẹlẹ ṣe agbewọle ẹgbẹ aabo AWS ẹnikan miiran sinu akopọ Terraform tiwọn lakoko ti kii ṣe ibajẹ eyikeyi. Mo ti tẹ awọn ofin pupọ ati ... ẹgbẹ aabo (pẹlu ijabọ ti nwọle) ti sọnu.

Terraform Nla

Imularada lati awọn ipinlẹ ti ko pe

Nigba miiran CloudFormation kuna lati yipada patapata lati ipinlẹ kan si ekeji. Ni akoko kanna, oun yoo gbiyanju lati pada si iṣaaju. O kan ni aanu wipe yi ni ko nigbagbogbo ṣee ṣe. O le jẹ ẹru pupọ lati ṣatunṣe ohun ti o ṣẹlẹ nigbamii - iwọ ko mọ boya CloudFormation yoo dun pe o ti gepa - paapaa lati ṣatunṣe rẹ. Boya tabi rara o yoo ṣee ṣe lati pada si ipo iṣaaju, ko mọ gaan bi o ṣe le pinnu ati, nipasẹ aiyipada, gbele fun awọn wakati nduro fun iyanu kan.

Terraform, ni ida keji, duro lati bọsipọ lati awọn iyipada ti o kuna pupọ diẹ sii ni oore-ọfẹ ati pe o funni ni awọn irinṣẹ n ṣatunṣe ilọsiwaju.

Awọn iyipada diẹ sii si ipo iwe

“O dara, iwọntunwọnsi fifuye, o n yipada. Sugbon bawo?"

- ẹlẹrọ aifọkanbalẹ, ṣetan lati tẹ bọtini “gba”.

Nigba miiran Mo nilo lati ṣe diẹ ninu awọn ifọwọyi pẹlu iwọntunwọnsi fifuye ni akopọ CloudFormation, gẹgẹbi fifi nọmba ibudo kan kun tabi yiyipada ẹgbẹ aabo kan. Awọn ifihan ClouFormation yipada ko dara. Emi, lori awọn pinni ati awọn abẹrẹ, ṣayẹwo lẹẹmeji faili yaml ni igba mẹwa lati rii daju pe Emi ko paarẹ ohunkohun pataki ati pe Emi ko ṣafikun ohunkohun ti ko wulo.

Terraform jẹ diẹ sii sihin ni iyi yii. Nigba miran o jẹ paapaa sihin (ka: didanubi). O da, ẹya tuntun pẹlu ifihan ilọsiwaju ti awọn ayipada ki o le rii ni pato ohun ti n yipada.

Ni irọrun

Kọ software sẹhin.

Lati fi sii ni gbangba, abuda pataki julọ ti sọfitiwia gigun ni agbara lati ṣe deede si iyipada. Kọ eyikeyi sọfitiwia sẹhin. Nigbagbogbo Mo ṣe awọn aṣiṣe nipa gbigbe iṣẹ “rọrun” kan, ati lẹhinna bẹrẹ lati ṣa ohun gbogbo sinu CloudFormation kan tabi akopọ Terraform. Ati pe dajudaju, awọn oṣu nigbamii o ti han pe Mo ti loye ohun gbogbo ti ko tọ, ati pe iṣẹ naa ko rọrun rara! Ati ni bayi Mo nilo lati fọ akopọ nla kan sinu awọn paati kekere. Nigbati o ba ṣiṣẹ pẹlu CloudFormation, eyi le ṣee ṣe nikan nipa atunkọ akopọ ti o wa tẹlẹ, ṣugbọn Emi ko ṣe eyi pẹlu awọn apoti isura data mi. Terraform, ni ida keji, jẹ ki o ṣee ṣe lati pin akopọ naa ki o fọ si isalẹ sinu awọn ẹya kekere ti oye diẹ sii.

Awọn modulu ni git

Pipin koodu Terraform kọja awọn akopọ pupọ rọrun pupọ ju pinpin koodu CloudFormation. Pẹlu Terraform, o le fi koodu rẹ sinu ibi ipamọ git kan ki o wọle si ni lilo iṣakoso ẹya atunmọ. Ẹnikẹni ti o ni iraye si ibi ipamọ yii le tun lo koodu pinpin. CloudFormation ti deede jẹ S3, ṣugbọn ko ni awọn anfani kanna, ati pe ko si idi ti o yẹ ki a fi git silẹ ni ojurere ti S3 rara.

Ajo naa dagba ati agbara lati pin awọn akopọ ti o wọpọ de ipele to ṣe pataki. Terraform jẹ ki eyi rọrun ati adayeba, lakoko ti CloudFormation yoo jẹ ki o fo nipasẹ awọn hoops ṣaaju ki o to le gba nkan bii eyi ṣiṣẹ.

Awọn iṣẹ bi koodu

"Jẹ ki a ṣe akosile ati pe o dara."

— ẹlẹrọ 3 ọdun ṣaaju ṣiṣe ẹda keke Terraform.

Nigbati o ba de si idagbasoke sọfitiwia, Lọ tabi eto Java kii ṣe koodu nikan.

Yipada lati Terraform si CloudFormation - o si kabamọ
Koodu bi koodu

Awọn amayederun tun wa lori eyiti o ṣiṣẹ.

Yipada lati Terraform si CloudFormation - o si kabamọ
Amayederun bii Koodu

Sugbon nibo lo ti wa? Bawo ni lati ṣe atẹle rẹ? Nibo ni koodu rẹ n gbe? Ṣe awọn olupilẹṣẹ nilo igbanilaaye iwọle bi?

Yipada lati Terraform si CloudFormation - o si kabamọ
Awọn iṣẹ bi koodu

Jije olupilẹṣẹ sọfitiwia ko tumọ si koodu kikọ nikan.

AWS kii ṣe ọkan nikan: o ṣee ṣe lo awọn olupese miiran. SignalFx, PagerDuty tabi Github. Boya o ni olupin Jenkins inu fun CI/CD tabi dasibodu Grafana inu fun ibojuwo. Infra bi koodu ti yan fun awọn idi oriṣiriṣi, ati ọkọọkan jẹ pataki bakanna fun ohun gbogbo ti o ni ibatan si sọfitiwia.

Nigbati Mo ṣiṣẹ ni Twitch, a yara awọn iṣẹ inu Amazon ti a fi sinu idapọmọra ati awọn eto AWS. A yọ jade ati atilẹyin ọpọlọpọ awọn iṣẹ microservice, jijẹ awọn idiyele iṣẹ ṣiṣe. Awọn ijiroro naa lọ nkan bii eyi:

  • ЯEgan, iyẹn ni ọpọlọpọ awọn afarajuwe lati bori iṣẹ microservice kan. Emi yoo ni lati lo idoti yii lati ṣẹda akọọlẹ AWS kan (a lọ si awọn akọọlẹ 2 lori microservice), lẹhinna eyi fun eto awọn itaniji, eyi fun ibi ipamọ koodu, ati eyi fun atokọ imeeli, ati lẹhinna eyi…
  • Asiwaju: Jẹ ki ká akosile o ati ki o dara.
  • Я: O dara, ṣugbọn awọn akosile ara yoo yi. A yoo nilo ọna lati ṣayẹwo pe gbogbo awọn gizmos Amazon ti a ṣe sinu rẹ ti wa ni imudojuiwọn.
  • Asiwaju: O dara. Ati pe a yoo kọ iwe afọwọkọ kan fun eyi.
  • Я: Nla! Ati pe iwe afọwọkọ naa yoo tun nilo lati ṣeto awọn ayeraye. Yoo gba wọn bi?
  • Asiwaju: Jẹ́ kí ó gbé ibi tí ó ń lọ!
  • Я: Awọn ilana le yipada ati sẹhin ibamu yoo sọnu. Diẹ ninu iru iṣakoso ẹya atunmọ yoo nilo.
  • Asiwaju: Ero nla!
  • Я: Awọn irinṣẹ le yipada pẹlu ọwọ, inu wiwo olumulo. A yoo nilo ọna lati ṣayẹwo ati ṣatunṣe eyi.

... 3 ọdun nigbamii:

  • Asiwaju: Ati pe a ni terraform.

Awọn iwa ti awọn itan ni: paapa ti o ba ti o ori lori igigirisẹ ni ohun gbogbo Amazon, o tun nlo nkan ti kii ṣe lati AWS, ati pe awọn iṣẹ wọnyi ni ipo ti o nlo ede iṣeto ni lati jẹ ki ipo naa ṣiṣẹpọ.

CloudFormation lambda vs git modulu terraform

lambda jẹ ojuutu CloudFormation si ọran ọgbọn aṣa. Pẹlu lambda o le ṣẹda macros tabi olumulo awọn oluşewadi. Ọna yii ṣafihan awọn idiju afikun ti ko si ni ẹya itumọ itumọ Terraform ti awọn modulu git. Fun mi, iṣoro titẹ julọ ni ṣiṣakoso awọn igbanilaaye fun gbogbo awọn lambdas olumulo wọnyi (ati pe iwọnyi jẹ dosinni ti awọn akọọlẹ AWS). Iṣoro pataki miiran ni “kini o kọkọ wa, adie tabi ẹyin?” iṣoro naa: o ni ibatan si koodu lambda. Iṣẹ yii funrararẹ jẹ amayederun ati koodu, ati pe funrararẹ nilo ibojuwo ati awọn imudojuiwọn. Eekanna ikẹhin ninu apoti apoti ni iṣoro ni mimuṣe imudojuiwọn awọn iyipada koodu lambda ni itumọ; a tun ni lati rii daju pe awọn iṣe akopọ laisi aṣẹ taara ko yipada laarin awọn ṣiṣe.

Mo ranti ni kete ti Mo fẹ lati ṣẹda imuṣiṣẹ kanary fun agbegbe Elastic Beanstalk pẹlu iwọntunwọnsi fifuye Ayebaye. Ohun ti o rọrun julọ lati ṣe yoo jẹ lati ṣe ifilọlẹ keji fun EB lẹgbẹẹ agbegbe iṣelọpọ, mu ni igbesẹ siwaju: apapọ ẹgbẹ imuṣiṣẹ canary-iwọn-iwọn-ara pẹlu LB imuṣiṣẹ sinu agbegbe iṣelọpọ. Ati niwon Terraform nlo ASG beantalk bi ipari kan, eyi yoo nilo awọn ila koodu 4 afikun ni Terraform. Nigbati Mo beere boya ojutu afiwera kan wa ni CloudFormation, wọn tọka si gbogbo ibi ipamọ git kan pẹlu opo gigun ti imuṣiṣẹ ati ohun gbogbo, gbogbo nitori nkan ti awọn laini 4 talaka ti koodu Terraform le ṣe.

O ṣe iwari fiseete dara julọ

Rii daju pe otito ni ibamu pẹlu awọn ireti.

Wiwa fiseete jẹ awọn iṣẹ ṣiṣe ti o lagbara pupọ bi ẹya koodu nitori pe o ṣe iranlọwọ rii daju pe otitọ baamu awọn ireti. O wa pẹlu mejeeji CloudFormation ati Terraform. Ṣugbọn bi akopọ iṣelọpọ ti n dagba, wiwa fun fiseete ni CloudFormation ṣe agbejade awọn awari eke diẹ ati siwaju sii.

Pẹlu Terraform o ni awọn iwo igbesi aye ilọsiwaju pupọ diẹ sii fun wiwa fiseete. Fun apẹẹrẹ, o tẹ aṣẹ sii foju_ayipada taara ni asọye iṣẹ-ṣiṣe ECS ti o ba fẹ lati foju awọn ayipada si asọye iṣẹ-ṣiṣe kan pato laisi aibikita awọn ayipada si gbogbo imuṣiṣẹ ECS rẹ.

CDK ati ojo iwaju ti CloudFormation

CloudFormation jẹ soro lati ṣakoso ni titobi nla, awọn irẹjẹ ohun elo agbekọja. Ọpọlọpọ awọn iṣoro wọnyi ni a mọ ati pe ọpa nilo awọn nkan bii awo-cdk, Ilana kan fun asọye awọn amayederun awọsanma ni koodu ati ṣiṣe nipasẹ AWS CloudFormation. Yoo jẹ ohun ti o dun lati rii kini ọjọ iwaju yoo waye fun aws-cdk, ṣugbọn yoo ni akoko lile lati dije pẹlu awọn agbara miiran ti Terraform; lati mu CloudFormation wa titi di oni, awọn iyipada agbaye yoo nilo.

Nitorinaa Terraform ko ni ibanujẹ

Eyi jẹ “awọn amayederun bi koodu”, kii ṣe “gẹgẹbi ọrọ”.

Mi akọkọ sami ti Terraform wà dipo buburu. Mo ro pe Emi ko loye ọna naa. Fere gbogbo awọn onimọ-ẹrọ lainidii ṣe akiyesi rẹ bi ọna kika ọrọ ti o nilo lati yipada si awọn amayederun ti o fẹ. MAA ṢE ṢE ONA YI.

Awọn otitọ ti idagbasoke sọfitiwia to dara tun kan Terraform.

Mo ti rii ọpọlọpọ awọn iṣe ti a gba lati ṣẹda koodu to dara ni aibikita ni Terraform. O ti kọ ẹkọ fun awọn ọdun lati di pirogirama to dara. Maṣe fi iriri yii silẹ nitori pe o n ṣiṣẹ pẹlu Terraform. Awọn otitọ ti idagbasoke sọfitiwia to dara kan si Terraform.

Kilode ti o ko ṣe iwe koodu naa?

Mo ti rii awọn akopọ Terraform nla pẹlu ko si iwe rara. Bii o ṣe le kọ koodu ni awọn oju-iwe - laisi iwe-ipamọ rara? Ṣafikun awọn iwe aṣẹ ti o ṣalaye rẹ koodu Terraform (tcnu lori ọrọ "koodu"), idi ti apakan yii ṣe pataki, ati ohun ti o ṣe.

Bawo ni a ṣe le ran awọn iṣẹ ti o jẹ iṣẹ akọkọ () nla kan ni ẹẹkan?

Mo ti rii awọn akopọ Terraform eka pupọ ti a gbekalẹ bi module kan. Kilode ti a ko lo sọfitiwia ni ọna yii? Kini idi ti a fi pin awọn iṣẹ nla si awọn ti o kere ju? Awọn idahun kanna lo si Terraform. Ti module rẹ ba tobi ju, o nilo lati fọ si isalẹ sinu awọn modulu kekere.

Ṣe ile-iṣẹ rẹ ko lo awọn ile-ikawe?

Mo ti rii bii awọn onimọ-ẹrọ, ti n yi iṣẹ akanṣe tuntun kan nipa lilo Terraform, ni aṣiwere daakọ-paste awọn chunks nla lati awọn iṣẹ akanṣe miiran sinu tiwọn, ati lẹhinna tinkered pẹlu wọn titi o fi bẹrẹ ṣiṣẹ. Ṣe iwọ yoo ṣiṣẹ bii eyi pẹlu koodu “ija” ni ile-iṣẹ rẹ? A kii lo awọn ile-ikawe nikan. Bẹẹni, kii ṣe ohun gbogbo ni lati jẹ ile-ikawe, sugbon ibi ti a ti wa lai pín ikawe ni opo ?!

Ṣe o ko lo PEP8 tabi gofmt?

Pupọ julọ awọn ede ni o ni iwọnwọn kan, ero kika ti o gba. Ni Python eyi jẹ PEP8. Ni Go - gofmt. Terraform ni tirẹ: terraform fmt. Gbadun fun ilera rẹ!

Ṣe iwọ yoo lo React laisi mimọ JavaScript?

Awọn modulu Terraform le jẹ ki o rọrun diẹ ninu apakan ti awọn amayederun eka ti o ṣẹda, ṣugbọn eyi ko tumọ si pe o ko le tinker pẹlu rẹ rara. Ṣe o fẹ lo Terraform ni deede laisi oye awọn orisun? O ti wa ni iparun: akoko yoo kọja, ati pe iwọ kii yoo ṣakoso Terraform rara.

Ṣe o ṣe ifaminsi pẹlu awọn ẹyọkan tabi abẹrẹ igbẹkẹle?

Abẹrẹ igbẹkẹle jẹ adaṣe ti o dara julọ ti a mọ fun idagbasoke sọfitiwia ati pe o fẹ ju awọn ẹyọkan lọ. Bawo ni eyi ṣe wulo ni Terraform? Mo ti sọ ri Terraform modulu ti o dale lori latọna ipinle. Dipo kikọ awọn modulu ti o gba ipinlẹ latọna jijin, kọ module ti o gba awọn aye. Ati lẹhinna kọja awọn aye wọnyi si module.

Njẹ awọn ile-ikawe rẹ ṣe awọn nkan mẹwa daradara tabi ohun kan nla?

Awọn ile-ikawe ti o ṣiṣẹ dara julọ ni awọn ti o dojukọ iṣẹ-ṣiṣe kan ti wọn ṣe daradara. Dipo kikọ awọn modulu Terraform nla ti o gbiyanju lati ṣe ohun gbogbo ni ẹẹkan, kọ awọn apakan ti wọn ti o ṣe ohun kan daradara. Ati lẹhinna dapọ wọn bi o ṣe nilo.

Bawo ni o ṣe ṣe awọn ayipada si awọn ile-ikawe laisi ibaramu sẹhin?

Module Terraform ti o wọpọ, bii ile-ikawe deede, nilo lati bakan sọrọ awọn ayipada si awọn olumulo laisi ibaramu sẹhin. O jẹ didanubi nigbati awọn ayipada wọnyi ba ṣẹlẹ ni awọn ile-ikawe, ati pe o kan bi didanubi nigbati awọn ayipada ibaramu ti kii ṣe sẹhin ṣe ni awọn modulu Terraform. A ṣe iṣeduro lati lo awọn afi git ati semver nigba lilo awọn modulu Terraform.

Njẹ iṣẹ iṣelọpọ rẹ nṣiṣẹ lori kọǹpútà alágbèéká rẹ tabi ni ile-iṣẹ data kan?

Hashicorp ni awọn irinṣẹ bii terraform awọsanma lati ṣiṣẹ terraform rẹ. Awọn iṣẹ aarin wọnyi jẹ ki o rọrun lati ṣakoso, iṣayẹwo, ati fọwọsi awọn iyipada terraform.

Ṣe o ko kọ awọn idanwo?

Awọn onimọ-ẹrọ mọ pe koodu nilo lati ni idanwo, ṣugbọn awọn funrara wọn nigbagbogbo gbagbe nipa idanwo nigba ṣiṣẹ pẹlu Terraform. Fun awọn amayederun, eyi jẹ pẹlu awọn akoko alatan. Imọran mi ni lati “ṣe idanwo” tabi “ṣẹda apẹẹrẹ” awọn akopọ nipa lilo awọn modulu ti o le gbe lọ ni deede fun idanwo lakoko CI/CD.

Terraform ati microservices

Igbesi aye ati iku ti awọn ile-iṣẹ microservices da lori iyara, ĭdàsĭlẹ, ati idalọwọduro ti awọn iṣẹ iṣẹ microservice tuntun.

Abala odi ti o wọpọ julọ ti o ni nkan ṣe pẹlu awọn ile-iṣẹ microservice, ati eyiti ko le yọkuro, ni ibatan si iṣẹ naa, kii ṣe koodu naa. Ti o ba ronu ti Terraform bi ọna kan lati ṣe adaṣe nikan ẹgbẹ amayederun ti faaji microservices, lẹhinna o padanu awọn anfani otitọ ti eto naa. Bayi o ti wa tẹlẹ ohun gbogbo dabi koodu.

orisun: www.habr.com

Fi ọrọìwòye kun