Nivadika tamin'ny Terraform ho CloudFormation - ary nanenina izany

Ny fanehoana ny fotodrafitrasa ho kaody amin'ny endrika lahatsoratra azo averina dia fomba fanao tsotra indrindra ho an'ny rafitra tsy mila fiddle amin'ny totozy. Ity fanao ity dia manana anarana - Ny fotodrafitrasa toy ny kaody, ary hatramin'izao dia misy fitaovana malaza roa hampihatra izany, indrindra amin'ny AWS: Terraform и CloudFormation.

Nivadika tamin'ny Terraform ho CloudFormation - ary nanenina izany
Mampitaha traikefa amin'ny Terraform sy CloudFormation

Alohan'ny hahatongavana any Twitch (Aka Amazon Jr.) Niasa aho amin'ny fanombohana iray ary nampiasa Terraform nandritra ny telo taona. Tao amin'ny toerana vaovao, nampiasa Terraform tamin'ny heriko rehetra ihany koa aho, ary avy eo ny orinasa dia nanosika ny fifindrana amin'ny zavatra rehetra a la Amazon, anisan'izany ny CloudFormation. Nazoto namolavola fomba fanao tsara indrindra ho an'ny roa tonta aho, ary nampiasa ireo fitaovana roa ireo tao anatin'ny fizotry ny asa be pitsiny sy manerana ny fandaminana. Taty aoriana, rehefa avy nandinika tsara ny fiantraikan'ny fifindra-monina avy amin'ny Terraform mankany CloudFormation aho, dia nanjary resy lahatra aho fa ny Terraform no safidy tsara indrindra ho an'ny fikambanana.

Terraform Mahatsiravina

Software beta

Mbola tsy namoaka version 1.0 akory i Terraform, izay antony tsara tsy hampiasana azy. Niova be ilay izy hatramin'ny nanandramako azy voalohany, fa tamin'izay terraform apply matetika rava taorian'ny fanavaozana maromaro na taorian'ny fampiasana roa taona fotsiny. Hoy aho hoe "hafa ny zava-drehetra amin'izao fotoana izao", fa ... izany no lazain'ny rehetra, sa tsy izany? Misy fiovana tsy mifanaraka amin'ny dikan-teny teo aloha, na dia mety aza izy ireo, ary toa ny syntax sy abstractions amin'ny fivarotana loharanon-karena no ilaintsika ankehitriny. Toa nihatsara tokoa ilay zavamaneno fa... :-0

Amin'ny lafiny iray, ny AWS dia nanao asa tsara amin'ny fitazonana ny fifanarahana miverina. Izany dia satria matetika no voazaha toetra tsara ao anatin'ny fikambanana ny serivisiny ary avy eo, nomena anarana, navoaka. Manambany àry ny hoe “niezaka mafy” izy ireo. Ny fitazonana ny fifanarahana mihemotra amin'ny API ho an'ny rafitra samihafa sy sarotra toy ny AWS dia tena sarotra. Na iza na iza voatery nitazona API ho an'ny daholobe izay ampiasaina betsaka araka izay azo atao dia tokony hahatakatra ny fahasarotan'ny fanaovana izany nandritra ny taona maro. Saingy ny fihetsiky ny CloudFormation, raha ny fitadidiako, dia tsy niova mihitsy nandritra ny taona maro.

Hihaona ny tongotra... bala izany

Raha ny fahalalako azy dia vonoy ny loharano VOAILIKILIKA CloudFormation stack avy amin'ny CF stack dia tsy azo atao. Toy izany koa ny Terraform. Izany dia ahafahanao manafatra loharano efa misy ao amin'ny stack anao. Ny fiasa dia azo lazaina ho mahagaga, saingy miaraka amin'ny hery lehibe dia misy andraikitra lehibe. Mila manampy loharano amin'ny stack fotsiny ianao, ary rehefa miasa amin'ny stack ianao dia tsy afaka mamafa na manova ity loharano ity. Indray andro dia nihemotra izany. Indray andro tao amin'ny Twitch, nisy olona nanafatra tsy nahy ny vondrona fiarovana AWS an'ny olon-kafa tao amin'ny tranon-dry zareo Terraform nefa tsy nanao ratsy. Niditra baiko maromaro aho ary... nanjavona ny vondrona fiarovana (miaraka amin'ny fifamoivoizana miditra).

Terraform Great

Famerenana amin'ny fanjakana tsy feno

Indraindray ny CloudFormation dia tsy mahavita mamindra tanteraka amin'ny fanjakana iray mankany amin'ny iray hafa. Amin'izay fotoana izay dia hiezaka hiverina amin'ny teo aloha izy. Mampalahelo fa tsy azo atao foana izany. Mety ho tena mampatahotra ny debug ny zava-nitranga taty aoriana - tsy fantatrao mihitsy raha ho faly ny CloudFormation fa misy hacked - na dia ny manamboatra azy fotsiny aza. Na azo atao na tsia ny hiverina amin'ny fanjakana teo aloha, dia tena tsy hainy ny mamaritra ary, raha ny mahazatra, dia mihantona mandritra ny ora maro miandry fahagagana.

Ny Terraform, etsy ankilany, dia mirona amin'ny fiverenana amin'ny fifindrana tsy nahomby kokoa ary manolotra fitaovana fanivanana mandroso.

Fanovana mazava kokoa amin'ny toetry ny antontan-taratasy

“Eny, mpifandanja entana, miova ianao. Fa ahoana?"

— injeniera manahy, vonona ny hanery ny bokotra "manaiky".

Indraindray aho dia mila manao fanodinkodinana miaraka amin'ny mpandrindra entana ao amin'ny CloudFormation stack, toy ny fampidirana laharana seranan-tsambo na fanovana vondrona fiarovana. Mampiseho fiovana ratsy ny ClouFormation. Izaho, amin'ny tsimatra sy fanjaitra, dia manamarina im-polo ny rakitra yaml mba hahazoana antoka fa tsy namafa na inona na inona ilaina aho ary tsy nanampy zavatra tsy ilaina.

Ny Terraform dia mangarahara kokoa amin'io lafiny io. Indraindray aza dia mangarahara loatra izy (vakio: mahasosotra). Soa ihany fa ny dikan-teny farany dia misy fampirantiana nohatsaraina amin'ny fanovana mba ho hitanao tsara izao ny fiovana.

manovaova

Manorata logiciel mihemotra.

Raha lazaina amin'ny fomba tsotra, ny toetra manan-danja indrindra amin'ny rindrambaiko maharitra maharitra dia ny fahafahana mampifanaraka ny fiovana. Manorata logiciel mihemotra. Matetika aho no nanao hadisoana tamin'ny alàlan'ny tolotra "tsotra", ary avy eo dia nanomboka nanangona ny zava-drehetra tao anaty tahiry CloudFormation na Terraform tokana. Ary mazava ho azy, volana maromaro taty aoriana dia nambara fa azoko daholo ny zava-drehetra, ary tsy tsotra ny serivisy! Ary ankehitriny dia mila manapaka tsangambato lehibe ho singa kely aho. Rehefa miara-miasa amin'ny CloudFormation ianao, dia tsy azo atao izany raha tsy amin'ny alàlan'ny famerenana voalohany ny stack efa misy, ary tsy manao izany amin'ny angon-drakitra aho. Ny Terraform kosa dia nahafahana nanavaka ny stack ary nanasaraka azy ho ampahany kely kokoa azo takarina.

Modules amin'ny git

Ny fizarana kaody Terraform amin'ny stack maro dia mora kokoa noho ny fizarana kaody CloudFormation. Miaraka amin'ny Terraform, azonao atao ny mametraka ny kaody ao anaty tahiry git ary miditra amin'izany amin'ny alàlan'ny fanaraha-maso ny dikan-teny semantika. Na iza na iza manana fahafahana miditra amin'ity tahiry ity dia afaka mampiasa indray ny code nozaraina. Ny mitovy amin'ny CloudFormation dia S3, saingy tsy manana tombony mitovy izy, ary tsy misy antony tokony handaozana ny git ho an'ny S3 mihitsy.

Nitombo ny fikambanana ary tonga amin'ny ambaratonga lehibe ny fahafahana mizara stacks mahazatra. Ny Terraform dia manao izany ho mora sy voajanahary rehetra, fa ny CloudFormation kosa dia hahatonga anao hitsambikina amin'ny alàlan'ny hoops alohan'ny ahafahanao mahazo asa toy izao.

Operations toy ny code

"Aleo soratana ary ok."

— injeniera 3 taona talohan'ny namoronana ny bisikileta Terraform.

Raha ny momba ny fampivoarana rindrambaiko, Go na programa Java dia tsy code fotsiny.

Nivadika tamin'ny Terraform ho CloudFormation - ary nanenina izany
Code toy ny Code

Eo koa ny fotodrafitrasa iasany.

Nivadika tamin'ny Terraform ho CloudFormation - ary nanenina izany
Ny fotodrafitrasa toy ny kaody

Avy aiza anefa izy? Ahoana ny fanaraha-maso azy? Aiza no misy ny kaodinao? Mila fahazoan-dàlana hidirana ve ny mpamorona?

Nivadika tamin'ny Terraform ho CloudFormation - ary nanenina izany
Operations toy ny Code

Ny maha-mpamolavola rindrambaiko dia tsy midika fotsiny hoe manoratra kaody.

Tsy ny AWS irery ihany: mety mampiasa mpamatsy hafa ianao. SignalFx, PagerDuty na Github. Angamba ianao manana mpizara Jenkins anatiny ho an'ny CI/CD na dashboard Grafana anatiny ho fanaraha-maso. Ny Infra as Code dia nofidina noho ny antony samihafa, ary ny tsirairay dia manan-danja mitovy amin'ny zava-drehetra mifandraika amin'ny rindrambaiko.

Rehefa niasa tao amin'ny Twitch aho, dia nanafaingana ny serivisy tao anatin'ny rafitra mifangaro sy AWS ao amin'ny Amazon. Nanangona sy nanohana microservices maro izahay, nampitombo ny vidin'ny fampandehanana. Nandeha toy izao ny fifanakalozan-kevitra:

  • Я: Mampalahelo, fihetsehana be dia be ny manara-maso ny microservice iray. Tsy maintsy mampiasa ity fako ity aho mba hamoronana kaonty AWS (nankany amin'ny kaonty 2 izahay microservice), dia ity iray ity ho an'ny fametrahana fampandrenesana, ity iray ity ho an'ny tahiry kaody, ary ity iray ity ho an'ny lisitry ny mailaka, ary avy eo ity...
  • HAMPIDIRANA: Aleo soratana ary mety.
  • Я: Okay, fa ny script mihitsy no hiova. Mila fomba iray hanamarinana fa ireo gizmos Amazon namboarina rehetra ireo dia tsy misy farany.
  • HAMPIDIRANA: Toa tsara izany. Ary hanoratra script momba izany izahay.
  • Я: Tsara! Ary mety mbola mila mametraka paramètre ny script. Hanaiky azy ireo ve izy?
  • HAMPIDIRANA: Avelao izy hitondra izay halehany!
  • Я: Mety hiova ny dingana ary ho very ny fifanarahana mihemotra. Karazana fanaraha-maso dikanteny semantika no ilaina.
  • HAMPIDIRANA: Hevitra tsara!
  • Я: Azo ovaina amin'ny tanana ny fitaovana, ao anatin'ny interface interface. Mila fomba hanamarinana sy handaminana izany isika.

…3 taona aty aoriana:

  • HAMPIDIRANA: Ary nahazo terraform izahay.

Ny moralin'ny tantara dia: na ianao aza loha laharana amin'ny zava-drehetra Amazon, mbola mampiasa zavatra tsy avy amin'ny AWS ianao, ary ireo serivisy ireo dia manana fanjakana izay mampiasa fiteny fanamafisam-peo mba hitazonana an'io fanjakana io amin'ny sync.

CloudFormation lambda vs git modules terraform

lambda dia vahaolana CloudFormation amin'ny olana lojika mahazatra. Miaraka amin'ny lambda azonao atao mamorona macros na loharanon'ny mpampiasa. Ity fomba fiasa ity dia mampiditra fahasarotana fanampiny izay tsy hita ao amin'ny Terraform's semantic version of git modules. Amiko, ny olana lehibe indrindra dia ny fitantanana ny fahazoan-dàlana ho an'ireo lambdas mpampiasa rehetra ireo (ary kaonty AWS am-polony ireo). Ny olana lehibe iray hafa dia ny "inona no voalohany, ny olan'ny akoho sa ny atody: mifandraika amin'ny code lambda izany. Ity fiasa ity dia fotodrafitrasa sy code, ary mila fanaraha-maso sy fanavaozana. Ny fantsika farany tao amin'ny vatam-paty dia ny fahasarotana amin'ny fanavaozana semantika ny fiovan'ny code lambda; Tsy maintsy nanao izay hahazoana antoka ihany koa izahay fa ny hetsika stack tsy misy baiko mivantana dia tsy miova eo anelanelan'ny hazakazaka.

Tsaroako indray mandeha te-hamorona fanaparitahana canary ho an'ny tontolo Elastic Beanstalk miaraka amin'ny mpandrindra entana mahazatra. Ny zavatra mora indrindra atao dia ny manao fandefasana fanindroany ho an'ny EB eo akaikin'ny tontolon'ny famokarana, manao dingana lavidavitra kokoa: manambatra ny vondrona deployment canary auto-scaling miaraka amin'ny LB fametrahana ao amin'ny tontolo famokarana. Ary satria mampiasa Terraform ASG beantalk ho fehin-kevitra, mila andalana 4 fanampiny amin'ny kaody ao amin'ny Terraform izany. Rehefa nanontany aho raha misy vahaolana azo ampitahaina ao amin'ny CloudFormation, dia nanondro ahy tao amin'ny tahiry git iray manontolo miaraka amin'ny fantsona fandefasana sy ny zava-drehetra izy ireo, noho ny zavatra azon'ny andalana 4 mahantra amin'ny code Terraform.

Mahita fitetezana tsara kokoa izy io

Ataovy azo antoka fa mifanaraka amin'ny zavatra antenaina ny zava-misy.

Famaritana ny drift dia fiasa mahery vaika toy ny endri-tsoratra satria manampy amin'ny fahazoana antoka fa mifanaraka amin'ny zavatra antenaina ny zava-misy. Izy io dia misy miaraka amin'ny CloudFormation sy Terraform. Saingy rehefa nitombo ny taham-pamokarana, ny fikarohana ny drift ao amin'ny CloudFormation dia niteraka fisavana diso.

Miaraka amin'ny Terraform ianao dia manana fantsom-pifamoivoizana efa mandroso kokoa ho an'ny fisavana drift. Ohatra, miditra ny baiko ianao ignore_changes mivantana ao amin'ny famaritana asa ECS raha te tsy hiraharaha ny fanovana amin'ny famaritana asa manokana ianao nefa tsy miraharaha ny fanovana amin'ny fametrahana ECS manontolo.

CDK sy ny hoavin'ny CloudFormation

Sarotra ny mitantana ny CloudFormation amin'ny mizana midadasika amin'ny fotodrafitrasa. Maro amin'ireo fahasahiranana ireo no fantatra ary mila zavatra toy izany ny fitaovana aws-cdk, rafitra iray hamaritana ny fotodrafitrasa rahona amin'ny kaody ary hampandehanana azy amin'ny AWS CloudFormation. Mahaliana ny mahita ny ho avy ho an'ny aws-cdk, saingy ho sarotra ny hifaninana amin'ny tanjaky ny Terraform hafa; mba hampiakatra ny CloudFormation dia ilaina ny fanovana manerantany.

Mba tsy handiso fanantenana ny Terraform

Ity dia "fotodrafitrasa toy ny kaody", fa tsy "toy ny lahatsoratra".

Ny fahitako voalohany ny Terraform dia somary ratsy. Heveriko fa tsy azoko fotsiny ilay fomba fiasa. Saika ny injeniera rehetra dia mihevitra azy io ho endrika lahatsoratra izay mila avadika ho fotodrafitrasa irina. AZA MANAO IZANY.

Mihatra amin'ny Terraform ihany koa ny maha-zava-dehibe ny fampivoarana rindrambaiko tsara.

Nahita fomba fanao maro natao aho mba hamoronana kaody tsara tsy noraharahiana tao amin'ny Terraform. Nianatra nandritra ny taona maro ianao mba ho lasa programmer mahay. Aza miala amin'ity traikefa ity noho ianao miara-miasa amin'ny Terraform. Mihatra amin'ny Terraform ny zava-misy amin'ny fampivoarana rindrambaiko tsara.

Ahoana no tsy ahafahana mirakitra an-tsoratra ny code?

Nahita stacks Terraform goavana tsy misy antontan-taratasy mihitsy aho. Ahoana no ahafahanao manoratra kaody amin'ny pejy - tsy misy antontan-taratasy mihitsy? Ampio antontan-taratasy manazava ny anao amin'ny Terraform (fanindriana ny teny hoe "code"), nahoana no zava-dehibe ity fizarana ity, ary inona no ataonao.

Ahoana no ahafahantsika mametraka tolotra izay efa niasa lehibe () taloha?

Nahita tsatoka Terraform be pitsiny aho naseho ho modely tokana. Nahoana no tsy mampiasa rindrambaiko toy izany isika? Nahoana isika no mizara asa lehibe ho kely kokoa? Ny valiny mitovy dia mihatra amin'ny Terraform. Raha lehibe loatra ny môdôlinao dia mila mizara azy ho môdôly kely kokoa ianao.

Tsy mampiasa tranomboky ve ny orinasanao?

Hitako ny fomba nanaovan'ireo injeniera, nanodinkodina tetikasa vaovao tamin'ny alalan'ny Terraform, nandika adaladala ireo sombintsombin'ny tetikasa hafa avy amin'ny tetikasa hafa ho azy ireo, ary avy eo nitsambikina tamin'izy ireo mandra-panombohan'ny asa. Hiasa toy izany ve ianao amin'ny kaody "ady" ao amin'ny orinasanao? Tsy mampiasa tranomboky fotsiny izahay. Eny, Tsy voatery ho tranomboky daholo ny zava-drehetra, fa aiza isika raha tsy misy tranomboky iombonana raha ny fitsipika?!

Tsy mampiasa PEP8 na gofmt ve ianao?

Ny ankamaroan'ny fiteny dia manana rafitra fandrafetana mahazatra sy ekena. Amin'ny Python dia PEP8 ity. Ao amin'ny Go - gofmt. Ny Terraform dia manana ny azy manokana: terraform fmt. Ankafizo ho an'ny fahasalamanao izany!

Hampiasa React ve ianao nefa tsy mahalala JavaScript?

Ny maodely Terraform dia afaka manatsotra ny ampahany amin'ny fotodrafitrasa sarotra noforoninao, saingy tsy midika izany fa tsy azonao atao mihitsy ny manitsy azy io. Te hampiasa tsara ny Terraform nefa tsy takatry ny loharano? Voaheloka ianao: handalo ny fotoana, ary tsy hahafehy ny Terraform mihitsy ianao.

Mampiasa kaody tokana na tsindrona fiankinan-doha ve ianao?

Ny tsindrona fiankinan-doha dia fomba fanao tsara indrindra ho an'ny fampivoarana rindrambaiko ary tiana kokoa noho ny tokan-tena. Ahoana no ilàna azy amin'ny Terraform? Hitako ny modules Terraform izay miankina amin'ny fanjakana lavitra. Raha tokony hanoratana môdely maka fanjakana lavitra, manorata môdô iray izay maka masontsivana. Ary avy eo ampidiro amin'ny module ireo parameter ireo.

Manao zavatra folo tsara ve ny tranombokinao sa zavatra tsara iray?

Ny tranomboky miasa tsara indrindra dia ireo izay mifantoka amin'ny asa iray izay vitany tsara. Raha tokony hanoratra Modules Terraform lehibe izay manandrana manao ny zava-drehetra indray mandeha, dia manangana ampahany amin'izy ireo izay mahavita zavatra iray tsara. Ary avy eo dia atambatra izy ireo araka izay ilaina.

Ahoana no hanaovanao fanovana amin'ny tranomboky tsy misy fifanarahana mihemotra?

Ny maodely Terraform mahazatra, toy ny tranomboky mahazatra, dia mila mampita fiovana amin'ny mpampiasa nefa tsy mifanaraka amin'ny aoriana. Mahasosotra rehefa mitranga ao amin'ny tranomboky ireo fiovana ireo, ary mahasosotra ihany koa rehefa misy fiovana tsy mifanaraka amin'ny aoriana atao ao amin'ny modules Terraform. Tsara ny mampiasa git tags sy semver rehefa mampiasa modules Terraform.

Mihazakazaka amin'ny solosainao na ao amin'ny foibe data ve ny serivisy famokarana anao?

Hashicorp dia manana fitaovana toy izany rahona terraform hampandeha ny terraform anao. Manamora ny fitantanana, fanaraha-maso ary fankatoavana ny fanovana endrika ireo tolotra foibe ireo.

Tsy manoratra fitsapana ve ianao?

Eken'ny injeniera fa mila andrana ny kaody, saingy matetika izy ireo no manadino ny fitsapana rehefa miasa amin'ny Terraform. Ho an'ny fotodrafitrasa dia feno fotoan-tsarotra izany. Ny torohevitro dia ny "fitsapana" na "mamorona ohatra" stacks amin'ny fampiasana maody azo apetraka tsara amin'ny fitsapana mandritra ny CI/CD.

Terraform sy microservices

Ny fiainana sy ny fahafatesan'ny orinasa microservices dia miankina amin'ny hafainganam-pandeha, ny fanavaozana ary ny fanakorontanana ny workstacks microservice vaovao.

Ny lafiny ratsy mahazatra indrindra mifandraika amin'ny maritrano microservice, ary tsy azo esorina, dia mifandraika amin'ny asa, fa tsy ny code. Raha mihevitra ny Terraform ho toy ny fomba iray ahafahana manara-maso fotsiny ny lafiny fotodrafitrasa amin'ny maritrano microservice ianao, dia tsy mahita ny tena tombony azo avy amin'ny rafitra ianao. Ankehitriny dia efa ny zavatra rehetra dia toy ny code.

Source: www.habr.com

Add a comment