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ọ -
Ifiwera iriri pẹlu Terraform ati CloudFormation
Ṣaaju ki o to de
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.
Koodu bi koodu
Awọn amayederun tun wa lori eyiti o ṣiṣẹ.
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?
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
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
O ṣe iwari fiseete dara julọ
Rii daju pe otito ni ibamu pẹlu awọn ireti.
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
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
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,
Ṣ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
Ṣ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ẹ
orisun: www.habr.com