Aistrigh ó Terraform go CloudFormation - agus aiféala é

Is dea-chleachtas simplí é bonneagar a léiriú mar chód i bhformáid téacs in-athdhéanta do chórais nach dteastaíonn fidil le lucha. Tá ainm ar an gcleachtas seo - Bonneagar mar Chód, agus go dtí seo tá dhá uirlis mhóréilimh chun é a chur i bhfeidhm, go háirithe in AWS: Terraform и CloudFormation.

Aistrigh ó Terraform go CloudFormation - agus aiféala é
Taithí a chur i gcomparáid le Terraform agus CloudFormation

Roimh theacht go Bpreabfaidh (Aka Amazon Jr.) D'oibrigh mé in aon tosaithe amháin agus úsáidtear Terraform ar feadh trí bliana. Ag an áit nua, d'úsáid mé Terraform freisin le mo chumas go léir, agus ansin bhrúigh an chuideachta an t-aistriú chuig gach rud a la Amazon, lena n-áirítear CloudFormation. Tá dea-chleachtais forbartha agam go díograiseach don dá uirlis, agus bhain mé úsáid as an dá uirlis i sreafaí oibre an-chasta ar fud na heagraíochta. Níos déanaí, tar éis na himpleachtaí a bhaineann le himirce ó Terraform go CloudFormation a mheá go meabhrach, tháinig mé cinnte gurb é Terraform an rogha is fearr don eagraíocht is dócha.

Terraform Uafásach

Bogearraí beta

Níl leagan 1.0 eisithe ag Terraform fós, rud is cúis mhaith gan é a úsáid. Tá sé athraithe go mór ó bhain mé triail as ar dtús mé féin, ach ar ais ansin terraform apply is minic a bhris síos tar éis roinnt nuashonruithe nó go simplí tar éis cúpla bliain úsáide. Déarfainn go bhfuil “gach rud difriúil anois,” ach... sin é atá le rá ag gach duine, ní hea? Tá athruithe ann nach luíonn le leaganacha roimhe seo, cé go bhfuil siad oiriúnach, agus mothaíonn sé fiú gurb iad comhréir agus astarraingtí na siopaí acmhainne atá uainn anois. Is cosúil go bhfuil feabhas mór tagtha ar an uirlis, ach... :-0

Ar an láimh eile, tá jab maith déanta ag AWS ag cothabháil comhoiriúnacht ar gcúl. Is dócha go bhfuil sé seo amhlaidh toisc go ndéantar a gcuid seirbhísí a thástáil go críochnúil laistigh den eagraíocht go minic agus go dtí go n-athainmnítear iad, go bhfoilsítear iad. Mar sin is fo-ráiteas é “rinne siad go dian”. Tá sé thar a bheith deacair comhoiriúnacht siar le APIanna a choinneáil do chóras chomh héagsúil agus chomh casta le AWS. Ba cheart go dtuigfeadh aon duine a raibh orthu APIanna poiblí a úsáidtear chomh forleathan agus atá siad cé chomh deacair is atá sé é sin a dhéanamh le blianta fada. Ach níor athraigh iompar CloudFormation, i mo chuimhne, thar na blianta.

Buail leis an gcos... piléar atá ann

Chomh fada agus is eol dom, scrios an acmhainn coimhthíoch Níl CloudFormation stack ó do chruach CF indéanta. Tá an rud céanna fíor le Terraform. Ligeann sé duit acmhainní atá ann cheana a allmhairiú isteach i do chairn. Is féidir a rá go bhfuil an fheidhm iontach, ach le cumhacht mhór tagann freagracht mhór. Níl le déanamh agat ach acmhainn a chur leis an stack, agus fad atá tú ag obair le do chruach, ní féidir leat an acmhainn seo a scriosadh ná a athrú. Lá amháin backfired sé. Lá amháin ar Twitch, d'allmhairigh duine éigin grúpa slándála AWS duine eile de thaisme isteach ina chruach Terraform féin cé nach ndearna sé aon mhíthuiscint. Chuir mé roinnt orduithe isteach agus... d'imigh an grúpa slándála (mar aon leis an trácht ag teacht isteach).

Terraform Mór

Aisghabháil ó stáit neamhiomlána

Uaireanta teipeann ar CloudFormation aistriú go hiomlán ó stát amháin go stát eile. Ag an am céanna, déanfaidh sé iarracht filleadh ar an gceann roimhe seo. Is mór an trua nach mbíonn sé seo indéanta i gcónaí. Is féidir leis a bheith scanrúil go leor dífhabhtú a dhéanamh ar an méid a tharla níos déanaí - níl a fhios agat an mbeidh CloudFormation sásta go bhfuil sé á hack - fiú amháin chun é a shocrú. Cibé an mbeidh sé indéanta filleadh ar an stát roimhe seo nó nach ea, níl a fhios aige conas a chinneadh agus, de réir réamhshocraithe, bíonn sé ag fanacht uaireanta ag fanacht le míorúilt.

Ar an láimh eile, tá claonadh ag Terraform aisghabháil ó aistrithe teipthe i bhfad níos galánta agus cuireann sé uirlisí dífhabhtaithe chun cinn.

Athruithe níos soiléire ar staid an doiciméid

“Ceart go leor, a chothromóir ualaigh, tá tú ag athrú. Ach cén chaoi?"

—innealtóir imníoch, réidh chun an cnaipe “glacadh leis” a bhrú.

Uaireanta ní mór dom roinnt ionramhálacha a dhéanamh leis an iarmhéid ualaigh sa stack CloudFormation, mar shampla uimhir calafoirt a chur leis nó grúpa slándála a athrú. Léiríonn ClouFormation athruithe go dona. Déanaim, ar bhioráin agus shnáthaidí, seiceáil faoi dhó ar an gcomhad yaml deich n-uaire chun a chinntiú nach bhfuil aon rud riachtanach scriosta agam agus nach bhfuil aon rud neamhriachtanach curtha leis agam.

Tá Terraform i bhfad níos trédhearcaí maidir leis seo. Uaireanta tá sé ró-thrédhearcach fiú (léigh: annoying). Go fortunately, cuimsíonn an leagan is déanaí taispeáint feabhsaithe athruithe ionas gur féidir leat a fheiceáil go díreach cad atá ag athrú.

Solúbthacht

Scríobh bogearraí ar gcúl.

Chun é a chur go bluntly, is é an tréith is tábhachtaí de bhogearraí fadsaoil ná an cumas oiriúnú don athrú. Scríobh aon bhogearraí ar gcúl. Is minic a rinne mé botúin trí sheirbhís “simplí” a ghlacadh, agus ansin tosú ag cur gach rud isteach i gceann CloudFormation nó Stack Terraform. Agus ar ndóigh, míonna ina dhiaidh sin tugadh le fios gur thuig mé gach rud mícheart, agus i ndáiríre ní raibh an tseirbhís simplí! Agus anois is gá dom stack mór a bhriseadh ina chomhpháirteanna beaga. Nuair a bhíonn tú ag obair le CloudFormation, ní féidir é seo a dhéanamh ach tríd an stack atá ann cheana féin a athchruthú ar dtús, agus ní dhéanaim é seo le mo bhunachair shonraí. Ar an láimh eile, d'éirigh le Terraform an stack a dhíscaoileann agus é a bhriseadh síos ina chodanna beaga níos intuigthe.

Modúil i git

Tá sé i bhfad níos éasca cód Terraform a roinnt thar stoic iolracha ná cód CloudFormation a roinnt. Le Terraform, is féidir leat do chód a chur i stór git agus é a rochtain trí úsáid a bhaint as rialú leagan séimeantach. Is féidir le haon duine a bhfuil rochtain acu ar an stór seo an cód comhroinnte a athúsáid. Is ionann CloudFormation agus S3, ach níl na buntáistí céanna aige, agus níl aon chúis ann gur chóir dúinn git a thréigean i bhfabhar S3 ar chor ar bith.

D'fhás an eagraíocht agus shroich an cumas chun stoic choitianta a roinnt leibhéal ríthábhachtach. Déanann Terraform é seo ar fad éasca agus nádúrtha, ach tabharfaidh CloudFormation ort léim trí fonsaí sula bhféadfaidh tú a leithéid de rud a oibriú.

Oibríochtaí mar chód

“Déanaimis é a script agus ceart go leor.”

—innealtóir 3 bliana roimh an rothar Terraform a chumadh.

Nuair a thagann sé le forbairt bogearraí, ní cód amháin é Go nó clár Java.

Aistrigh ó Terraform go CloudFormation - agus aiféala é
Cód mar Chód

Tá an bonneagar ar a n-oibríonn sé freisin.

Aistrigh ó Terraform go CloudFormation - agus aiféala é
Bonneagar mar Chód

Ach cad as di? Conas monatóireacht a dhéanamh air? Cá bhfuil do chód ina chónaí? An bhfuil cead rochtana ag teastáil ó fhorbróirí?

Aistrigh ó Terraform go CloudFormation - agus aiféala é
Oibríochtaí mar Chód

Ní hionann a bheith i d’fhorbróir bogearraí agus cód a scríobh.

Ní hé AWS an t-aon cheann amháin: is dócha go n-úsáideann tú soláthraithe eile. SignalFx, PagerDuty nó Github. B'fhéidir go bhfuil freastalaí inmheánach Jenkins agat le haghaidh CI/CD nó painéal inmheánach Grafana le haghaidh monatóireachta. Roghnaítear Infra as Code ar chúiseanna éagsúla, agus tá gach ceann acu chomh tábhachtach céanna do gach rud a bhaineann le bogearraí.

Nuair a d'oibrigh mé ag Twitch, chuireamar dlús le seirbhísí taobh istigh de chórais measctha leabaithe agus AWS Amazon. Chuamar amach agus thugamar tacaíocht do go leor micreasheirbhísí, rud a mhéadaigh costais oibriúcháin. Chuaigh an plé rud éigin mar seo:

  • Я: Diabhal, sin go leor gothaí a overclock amháin microservice. Beidh orm an truflais seo a úsáid chun cuntas AWS a chruthú (chuaigh muid chuig 2 chuntas ar aghaidh micreasheirbhís), ansin an ceann seo le haghaidh foláirimh a shocrú, an ceann seo le haghaidh stór cód, agus an ceann seo le haghaidh liosta ríomhphoist, agus ansin an ceann seo ...
  • Luaidhe: Déanaimis script é agus ceart go leor.
  • Я: Ceart go leor, ach athróidh an script féin. Beidh bealach ag teastáil uainn lena sheiceáil go bhfuil na gizmos Amazon ionsuite seo cothrom le dáta.
  • Luaidhe: Fuaimeanna maith. Agus scríobhfaimid script chuige seo.
  • Я: Go hiontach! Agus is dócha go mbeidh gá fós leis an script paraiméadair a shocrú. An nglacfaidh sé leo?
  • Luaidhe: Lig dó a ghlacadh áit a dtéann sé!
  • Я: Féadfaidh an próiseas athrú agus caillfear comhoiriúnacht siar. Beidh gá le rialú leagan shéimeantach de chineál éigin.
  • Luaidhe: Smaoineamh iontach!
  • Я: Is féidir uirlisí a athrú de láimh, taobh istigh den chomhéadan úsáideora. Beidh bealach ag teastáil uainn chun é seo a sheiceáil agus a shocrú.

…3 bliana ina dhiaidh sin:

  • Luaidhe: Agus fuair muid terraform.

Is é an morálta an scéal: fiú má tá tú ceann thar sála i ngach rud Amazon, tá tú fós ag baint úsáide as rud éigin nach bhfuil ó AWS, agus tá stát ag na seirbhísí seo a úsáideann teanga cumraíochta chun an stát sin a choinneáil i gcomhshioncronú.

terraform modúil CloudFormation lambda vs git

Is é lambda réiteach CloudFormation ar cheist na loighic saincheaptha. Le lambda is féidir leat macraí a chruthúacmhainn úsáideora. Tugann an cur chuige seo isteach castachtaí breise nach bhfuil i láthair i leagan séimeantach de mhodúil git Terraform. Maidir liom féin, ba í an fhadhb is práinní ná ceadanna a bhainistiú do na lambdas úsáideora seo go léir (agus is iomaí cuntas AWS iad seo). Fadhb thábhachtach eile ná an fhadhb “cad a tháinig ar dtús, an sicín nó an ubh?”: bhain sé le cód lambda. Is bonneagar agus cód í an fheidhm seo féin, agus ní mór monatóireacht agus nuashonrú a dhéanamh uirthi. Ba é an ingne deiridh sa chiste an deacracht a bhaineann le hathruithe cód lambda a nuashonrú go semantach; bhí orainn a chinntiú freisin nár athraigh na gníomhartha cruachta gan ordú díreach idir ritheanna.

Is cuimhin liom uair amháin go raibh mé ag iarraidh imscaradh canáraí a chruthú don timpeallacht Gas Pónaire Leaisteacha le cothromóir ualaigh clasaiceach. Is é an rud is éasca le déanamh ná an dara imscaradh a dhéanamh don EB in aice leis an timpeallacht táirgthe, ag tabhairt céim eile air: an grúpa imscaradh canáraí uathscálaithe a chomhcheangal leis an imscaradh LB isteach sa timpeallacht táirgthe. Agus ós rud é go n-úsáideann Terraform Beantalk ASG mar chonclúid, beidh gá le 4 línte breise de chód in Terraform. Nuair a d'iarr mé an raibh réiteach inchomparáide i CloudFormation, chuir siad in iúl dom stór git iomlán le píblíne imscartha agus gach rud, go léir ar mhaithe le rud éigin a d'fhéadfadh droch-línte 4 de chód Terraform a dhéanamh.

Aimsíonn sé sruth níos fearr

Déan cinnte go dtagann an réaltacht leis na hionchais.

Brath srutha Is gné oibríochtaí an-chumhachtach mar chód é mar go gcabhraíonn sé lena chinntiú go dtagann an réaltacht leis na hionchais. Tá sé ar fáil le CloudFormation agus Terraform araon. Ach de réir mar a d'fhás an chairn táirgthe, tháinig níos mó agus níos mó braite bréagacha trí chuardach le haghaidh sruth i CloudFormation.

Le Terraform tá crúcaí saolré i bhfad níos forbartha agat chun sruthanna a bhrath. Mar shampla, cuireann tú an t-ordú isteach neamhaird_athruithe go díreach i sainmhíniú tasc ECS más mian leat neamhaird a dhéanamh ar athruithe ar shainiú taisc ar leith gan neamhaird a dhéanamh ar athruithe ar d’imscaradh ECS ar fad.

CDK agus todhchaí CloudFormation

Is deacair CloudFormation a bhainistiú ar scálaí móra tras-bhonneagair. Aithnítear go leor de na deacrachtaí seo agus tá rudaí mar a theastaíonn ón uirlis aws-cdk, creat chun bonneagar scamall a shainiú i gcód agus é a rith trí AWS CloudFormation. Beidh sé suimiúil a fheiceáil cad atá i ndán do aws-cdk amach anseo, ach beidh sé deacair dul san iomaíocht le láidreachtaí eile Terraform; chun CloudFormation a thabhairt cothrom le dáta, beidh gá le hathruithe domhanda.

Ionas nach ndéanann Terraform díomá

Is “bonneagar mar chód” é seo agus ní “mar théacs”.

Bhí mo chéad tuiscint ar Terraform sách dona. Sílim nár thuig mé an cur chuige. Feictear do bheagnach gach innealtóir go neamhdheonach gur formáid téacs é nach mór a thiontú go dtí an bonneagar inmhianaithe. NÁ É SEO AR AN BHEALACH.

Baineann truism na forbartha bogearraí maith le Terraform freisin.

Chonaic mé go leor cleachtas a glacadh chun cód maith a chruthú á neamhaird i Terraform. Tá staidéar déanta agat le blianta anuas le bheith i do ríomhchláraitheoir maith. Ná lig an taithí seo suas toisc go bhfuil tú ag obair le Terraform. Baineann truism na forbartha bogearraí maith le Terraform.

Conas nach féidir an cód a dhoiciméadú?

Chonaic mé stoic mhóra Terraform gan doiciméadú ar bith. Conas is féidir leat cód a scríobh ar leathanaigh - gan doiciméadú ar bith? Cuir doiciméadú leis a mhíníonn do код Terraform (béim ar an bhfocal "cód"), cén fáth go bhfuil an chuid seo chomh tábhachtach, agus cad a dhéanann tú.

Conas is féidir linn seirbhísí a bhí tráth amháin ina bpríomhfheidhm mhór() a imscaradh?

Tá stoic an-chasta Terraform feicthe agam curtha i láthair mar mhodúl amháin. Cén fáth nach n-imscaraimid bogearraí ar an mbealach seo? Cén fáth a roinntear feidhmeanna móra i bhfeidhmeanna níos lú? Baineann na freagraí céanna le Terraform. Má tá do mhodúl ró-mhór, ní mór duit é a bhriseadh síos i modúil níos lú.

Nach n-úsáideann do chuideachta leabharlanna?

Feicthe agam conas a rinne innealtóirí, ag sníomh suas le tionscadal nua ag baint úsáide as Terraform, smután ollmhór ó thionscadail eile a chóipeáil go stupidly isteach ina gcuid féin, agus ansin tinkered leo go dtí gur thosaigh sé ag obair. An n-oibreofá mar seo le cód “comhraic” i do chuideachta? Ní úsáidimid leabharlanna amháin. Sea, ní gá go mbeadh gach rud ina leabharlann, ach cá bhfuilimid gan leabharlanna comhroinnte i bprionsabal?!

Nach bhfuil PEP8 nó gofmt in úsáid agat?

Tá scéim chaighdeánach, glactha formáidithe ag formhór na dteangacha. I Python is é seo PEP8. In Go - gofmt. Tá a chuid féin ag Terraform: terraform fmt. Bain sult as do shláinte!

An mbainfidh tú úsáid as React gan JavaScript a bheith agat?

Is féidir le modúil terraform cuid den bhonneagar casta a chruthaíonn tú a shimpliú, ach ní chiallaíonn sé seo nach féidir leat tinker leis ar chor ar bith. Ag iarraidh Terraform a úsáid i gceart gan acmhainní a thuiscint? Tá tú doomed: rachaidh am thart, agus ní bheidh tú máistir Terraform.

An bhfuil tú ag códú le haonáin nó instealladh spleáchais?

Is dea-chleachtas aitheanta é instealladh spleáchais d’fhorbairt bogearraí agus is fearr é seachas tonna aonair. Cén chaoi a bhfuil sé seo úsáideach in Terraform? Feicthe agam modúil Terraform a bhraitheann ar staid iargúlta. In ionad modúil a scríobh a fhaigheann staid iargúlta, scríobh modúl a thógann paraiméadair. Agus ansin cuir na paraiméadair seo ar aghaidh chuig an modúl.

An ndéanann do leabharlanna deich rud go maith nó rud amháin go hiontach?

Is iad na leabharlanna is fearr a oibríonn ná na cinn a dhíríonn ar thasc amháin a dhéanann siad go han-mhaith. In ionad modúil mhóra Terraform a scríobh a dhéanann iarracht gach rud a dhéanamh ag an am céanna, tóg codanna díobh a dhéanann rud amháin go maith. Agus ansin iad a chomhcheangal de réir mar is gá.

Conas a dhéanann tú athruithe ar leabharlanna gan comhoiriúnacht siar?

Ní mór do mhodúl Terraform coiteann, cosúil le leabharlann rialta, athruithe a chur in iúl d'úsáideoirí ar bhealach éigin gan a bheith comhoiriúnach ar gcúl. Tá sé annoying nuair a tharlaíonn na hathruithe seo i leabharlanna, agus tá sé díreach chomh annoying nuair a athruithe nach bhfuil comhoiriúnach ar gcúl a dhéanamh i modúil Terraform. Moltar clibeanna git agus semver a úsáid agus modúil Terraform á n-úsáid.

An bhfuil do sheirbhís táirgthe ar siúl ar do ríomhaire glúine nó in ionad sonraí?

Tá uirlisí cosúil le Hashicorp scamall terraform a rith do terraform. Fágann na seirbhísí láraithe seo go bhfuil sé éasca athruithe ar an tír-raon a bhainistiú, a iniúchadh agus a cheadú.

Ná scríobhann tú trialacha?

Aithníonn innealtóirí gur gá an cód a thástáil, ach is minic a dhéanann siad dearmad ar thástáil agus iad ag obair le Terraform. Maidir le bonneagar, tá sé seo lán le chuimhneacháin fealltach. Is é an chomhairle atá agam ná stoic a “thástáil” nó “shampla a chruthú” ag úsáid modúil is féidir a úsáid i gceart le haghaidh tástála le linn CI/CD.

Terraform agus microservices

Braitheann saol agus bás cuideachtaí microservices ar luas, nuálaíocht, agus cur isteach ar stoic oibre nua micreasheirbhísí.

Baineann an ghné dhiúltach is coitianta a bhaineann le hailtireacht microservice, agus nach féidir a dhíchur, leis an obair, ní leis an gcód. Má cheapann tú ar Terraform mar bhealach chun uathoibriú a dhéanamh ar an taobh bonneagair d'ailtireacht na micrisheirbhísí, ansin tá fíorbhuntáistí an chórais á gcailliúint agat. Anois tá sé cheana féin tá gach rud cosúil le cód.

Foinse: will.com

Add a comment