Fetohile ho tloha Terraform ho CloudFormation - 'me a ikoahlaea

Ho hlahisa mekhoa ea motheo e le khoutu ka mokhoa o pheta-phetoang oa mongolo ke mokhoa o bonolo oa mekhoa e sa hlokeng ho bapala le litoeba. Mokhoa ona o na le lebitso - Lintlafatso joalo ka Khoutu, mme ho fihlela joale ho na le lisebelisoa tse peli tse tsebahalang tsa ho e kenya tšebetsong, haholo ho AWS: Terraform и CloudFormation.

Fetohile ho tloha Terraform ho CloudFormation - 'me a ikoahlaea
Ho bapisa boiphihlelo le Terraform le CloudFormation

Pele o fihla Twitch (ke eena Amazon e Monyane) Ke sebelitse ka lekhetlo le le leng mme a sebelisa Terraform ka lilemo tse tharo. Sebakeng se secha, ke ile ka boela ka sebelisa Terraform ka matla 'ohle a ka,' me k'hamphani e sutumelletsa phetoho ho ntho e 'ngoe le e' ngoe ea Amazon, ho akarelletsa le CloudFormation. Ke ntlafalitse mekhoa e metle ka ho fetisisa bakeng sa bobeli, 'me ke sebelisitse lisebelisoa ka bobeli ka mokhoa o rarahaneng haholo, oa mokhatlo o hlophisitsoeng ka bophara. Hamorao, ka mor'a hore ke nahanisise ka se boleloang ke ho falla ho tloha Terraform ho ea CloudFormation, ke ile ka kholiseha hore Terraform e ka 'na ea e-ba khetho e ntle ka ho fetisisa bakeng sa mokhatlo.

Terraform e tšabehang

Software ea Beta

Terraform ha e so ka e lokolla mofuta oa 1.0 hajoale, e leng lebaka le letle la ho se e sebelise. E fetohile haholo ho tloha ha ke qala ho e leka, empa ka nako eo terraform apply hangata e robeha ka mor'a lisebelisoa tse 'maloa kapa ka mor'a lilemo tse' maloa tsa tšebeliso. Nka re "ntho e 'ngoe le e' ngoe e fapane hona joale," empa ... ke seo bohle ba bonahalang ba se bua, che? Ho na le liphetoho tse sa lumellaneng le liphetolelo tse fetileng, le hoja li nepahetse, 'me ho utloahala eka li-syntax le li-abstractions tsa mabenkele a lisebelisoa ke seo re se hlokang hona joale. Sesebelisoa se bonahala se ntlafetse, empa... :-0

Ka lehlakoreng le leng, AWS e entse mosebetsi o motle ho boloka tšebelisano ea morao. Mohlomong ke hobane lits'ebeletso tsa bona hangata li lekoa ka botlalo ka har'a mokhatlo mme ke feela ka mor'a moo, ho rehoa bocha, ho hatisoa. Kahoo “ba ile ba leka ka matla” ke ho nyenyefatsa. Ho boloka tumellano ea morao-rao le li-API bakeng sa sistimi e fapaneng le e rarahaneng joalo ka AWS ho thata haholo. Mang kapa mang ea kileng a tlameha ho boloka li-API tsa sechaba tse sebelisoang hohle kamoo li leng kateng o lokela ho utloisisa hore na ho thata hakae ho etsa joalo ka lilemo tse ngata. Empa boits'oaro ba CloudFormation, mohopolong oa ka, ha bo so fetohe ho theosa le lilemo.

Kopana le leoto ... ke kulo

Ho ea kamoo ke tsebang, hlakola sesebelisoa motho ya ka ntle CloudFormation stack e tsoang ho CF stack ea hau ha e khonehe. Ho joalo le ka Terraform. E u lumella ho kenya lisebelisoa tse teng ka har'a stack ea hau. Mosebetsi o ka boleloa o hlolla, empa ka matla a maholo ho tla le boikarabelo bo boholo. U hloka feela ho eketsa sesebelisoa ho stack, 'me ha u ntse u sebetsa le stack ea hau, u ke ke ua hlakola kapa ua fetola mohloli ona. Ka letsatsi le leng e ile ea khutla. Ka letsatsi le leng ho Twitch, ka phoso motho e mong o ile a kenya sehlopha sa ts'ireletso sa AWS sa motho e mong ka har'a mekotla ea bona ea Terraform empa a sa etse bobe. Ke ile ka kenya litaelo tse 'maloa' me ... sehlopha sa tšireletso (hammoho le sephethephethe se tlang) se ile sa nyamela.

Terraform e kholo

Ho hlaphoheloa ho tsoa linaheng tse sa phethahalang

Ka linako tse ling CloudFormation e hlōleha ho fetoha ka ho feletseng ho tloha sebakeng se seng ho ea ho se seng. Ka nako e tšoanang, o tla leka ho khutlela ho e fetileng. Ke masoabi hore ebe ha se kamehla sena se ka khonehang. Ho ka tšosa haholo ho lokisa se etsahetseng hamorao - ha u tsebe hore na CloudFormation e tla thabela hore e ntse e utsuoa - leha e le ho e lokisa feela. Hore na ho tla khoneha ho khutlela sebakeng se fetileng kapa che, ha e le hantle ha a tsebe ho tseba, 'me, ka ho sa feleng, o leketla lihora tse ngata a emetse mohlolo.

Terraform, ka lehlakoreng le leng, e batla ho hlaphoheloa ho tsoa liphetohong tse hlōlehileng ka mokhoa o motle le ho fana ka lisebelisoa tse tsoetseng pele tsa ho lokisa liphoso.

Liphetoho tse hlakileng ho boemo ba litokomane

“Ho lokile, selekanyi sa meroalo, o a fetoha. Empa joang?"

- moenjiniere ea tšoenyehileng, o itokiselitse ho tobetsa konopo ea "amohela".

Ka nako e 'ngoe ke hloka ho etsa maqheka ka ho leka-lekanya mojaro ho CloudFormation stack, joalo ka ho eketsa nomoro ea boema-kepe kapa ho fetola sehlopha sa ts'ireletso. ClouFormation e bonts'a liphetoho tse mpe. 'Na, ka lithakhisa le linale, hlahloba habeli file ea yaml ka makhetlo a leshome ho etsa bonnete ba hore ha kea hlakola ntho leha e le efe e hlokahalang le hore ha kea eketsa letho le sa hlokahaleng.

Terraform e hlakile haholoanyane tabeng ena. Ka nako e 'ngoe o na le pepenene haholo (bala: ho khopisa). Ka lehlohonolo, mofuta oa morao-rao o kenyelletsa ponts'o e ntlafalitsoeng ea liphetoho e le hore u ka bona hantle hore na ho fetoha eng.

Ho feto-fetoha le maemo

Ngola software morao.

Ho bua ka mokhoa o hlakileng, tšobotsi ea bohlokoa ka ho fetisisa ea software ea nako e telele ke bokhoni ba ho ikamahanya le liphetoho. Ngola software efe kapa efe morao. Hangata ke ne ke etsa liphoso ka ho nka tšebeletso e "bonolo", ebe ke qala ho kenya ntho e 'ngoe le e' ngoe ka har'a sethala se le seng sa CloudFormation kapa Terraform. 'Me ha e le hantle, likhoeli hamorao ho ile ha senoloa hore ke ne ke utloisisa ntho e' ngoe le e 'ngoe e fosahetseng,' me ha e le hantle tšebeletso e ne e se bonolo! 'Me joale ke hloka ka tsela e itseng ho pshatla stack e kholo ka likaroloana tse nyane. Ha o sebetsa le CloudFormation, sena se ka etsoa feela ka ho qala ho tsosolosa stack e teng, 'me ha ke etse sena ka li-database tsa ka. Ka lehlakoreng le leng, Terraform e ile ea etsa hore ho khonehe ho arola qubu eo le ho e arola likarolo tse nyenyane tse utloisisehang haholoanyane.

Li-module ho git

Ho arolelana khoutu ea Terraform ka har'a mekotla e mengata ho bonolo ho feta ho arolelana khoutu ea CloudFormation. Ka Terraform, o ka kenya khoutu ea hau sebakeng sa polokelo ea git mme oa e fumana o sebelisa taolo ea mofuta oa semantic. Mang kapa mang ea nang le phihlello ea polokelo ena a ka boela a sebelisa khoutu e arolelanoeng. E lekanang le CloudFormation ke S3, empa ha e na melemo e tšoanang, 'me ha ho na lebaka leo ka lona re lokelang ho lahla git molemong oa S3 ho hang.

Mokhatlo o ile oa hola mme bokhoni ba ho arolelana mekoloko e tloaelehileng bo fihlile boemong bo boima. Terraform e etsa hore sena se be bonolo hape se be sa tlhaho, athe CloudFormation e tla etsa hore u tlole ka har'a li-hoops pele u ka fumana ntho e kang ena e sebetsa.

Ts'ebetso e le khoutu

"Ha re e ngole 'me ho lokile."

—moenjiniere lilemo tse 3 pele a qapa baesekele ea Terraform.

Ha ho tluoa ho nts'etsopele ea software, Go kapa lenaneo la Java ha se khoutu feela.

Fetohile ho tloha Terraform ho CloudFormation - 'me a ikoahlaea
Khoutu joalo ka Khoutu

Ho boetse ho na le lisebelisoa tsa motheo tseo e sebetsang ho tsona.

Fetohile ho tloha Terraform ho CloudFormation - 'me a ikoahlaea
Lintlafatso joalo ka Khoutu

Empa o tsoa kae? Joang ho e beha leihlo? Khoutu ea hau e lula hokae? Na bahlahisi ba hloka tumello ea ho kena?

Fetohile ho tloha Terraform ho CloudFormation - 'me a ikoahlaea
Ts'ebetso joalo ka Khoutu

Ho ba moqapi oa software ha ho bolele feela ho ngola khoutu.

AWS ha se eona feela: mohlomong u sebelisa bafani ba bang. SignalFx, PagerDuty kapa Github. Mohlomong u na le seva sa ka hare sa Jenkins bakeng sa CI/CD kapa dashboard ea ka hare ea Grafana bakeng sa ho beha leihlo. Infra as Code e khethoa ka mabaka a fapaneng, 'me e' ngoe le e 'ngoe e bohlokoa ka ho lekana bakeng sa ntho e ngoe le e ngoe e amanang le software.

Ha ke ne ke sebetsa Twitch, re ile ra potlakisa lits'ebeletso ka har'a litsamaiso tse kopaneng tsa Amazon le AWS. Re ile ra tsoa le ho tšehetsa li-microservices tse ngata, ra eketsa litšenyehelo tsa ts'ebetso. Lipuisano li ile tsa tsamaea tjena:

  • Я: Damn, ke boitšisinyo bo bongata ho feta microservice e le 'ngoe. Ke tla tlameha ho sebelisa litšila tsena ho theha ak'haonte ea AWS (re ile ra ea ho li-account tse 2 ho ea pele microservice), ebe ena ea ho theha litlhokomeliso, ena bakeng sa polokelo ea khoutu, le ena bakeng sa lethathamo la lengolo-tsoibila, ebe lena...
  • Ketapele: Ha re e ngole 'me ho lokile.
  • Я: Ho lokile, empa script ka boeona e tla fetoha. Re tla hloka mokhoa oa ho hlahloba hore na li-gizmos tsena tsohle tsa Amazon li ntse li le teng.
  • Ketapele: E utloahala e le ntle. 'Me re tla ngola script bakeng sa sena.
  • Я: E kholo! 'Me mongolo o ntse o tla hloka ho beha liparamente. Na o tla li amohela?
  • Ketapele: A nke moo a eang teng!
  • Я: Ts'ebetso e kanna ea fetoha mme ts'ebelisano ea morao e tla lahleha. Mofuta o mong oa taolo ea mofuta oa semantic o tla hlokahala.
  • Ketapele: Khopolo e ntle!
  • Я: Lisebelisoa li ka fetoloa ka letsoho, ka hare ho sebopeho sa mosebedisi. Re tla hloka mokhoa oa ho hlahloba le ho lokisa sena.

…lilemo tse 3 hamorao:

  • Ketapele: 'Me re na le terraform.

Boitšoaro ba pale ke: leha u hlooho holim'a lirethe ho tsohle Amazon, u ntse u sebelisa ho hong ho sa tsoe ho AWS, 'me lits'ebeletso tsena li na le boemo bo sebelisang puo ea tlhophiso ho boloka boemo boo bo lumellana.

CloudFormation lambda vs git modules terraform

lambda ke tharollo ea CloudFormation ho taba ea logic ea moetlo. Ka lambda u ka khona etsa macros kapa mosebedisi. Mokhoa ona o hlahisa mathata a eketsehileng a sieo phetolelong ea semantic ea Terraform ea git modules. Ho 'na, bothata bo neng bo hatella ka ho fetesisa e ne e le ho laola tumello bakeng sa li-lambda tsena tsohle tsa basebelisi ('me tsena ke li-account tsa AWS tse ngata). Bothata bo bong ba bohlokoa e ne e le bothata ba "se tlileng pele, khoho kapa lehe?": bo ne bo amana le khoutu ea lambda. Ts'ebetso ena ka boeona ke lisebelisoa le khoutu, 'me eona ka boeona e hloka ho hlahlojoa le ho ntlafatsoa. Lenala la ho qetela ka lekeseng e ne e le bothata ba ho ntlafatsa liphetoho tsa khoutu ea lambda; re ne re boetse re tlameha ho etsa bonnete ba hore liketso tsa stack ntle le taelo e tobileng ha lia fetoha pakeng tsa ho matha.

Ke hopola hang ha ke ne ke batla ho theha sebaka sa canary bakeng sa tikoloho ea Elastic Beanstalk e nang le tekanyo ea khale ea mojaro. Ntho e bonolo ka ho fetisisa eo u ka e etsang e ka ba ho etsa sebaka sa bobeli bakeng sa EB haufi le tikoloho ea tlhahiso, ho nka mohato o mong hape: ho kopanya sehlopha sa ho tsamaisa li-canary tsa auto-scaling le ho kenya LB sebakeng sa tlhahiso. 'Me kaha Terraform e sebelisa ASG beantalk e le sephetho, sena se tla hloka mela e meng ea 4 ea khoutu ho Terraform. Ha ke botsa hore na ho na le tharollo e ka bapisoang le CloudFormation, ba ile ba mpontša sebaka sa polokelo ea git se nang le phaephe ea phepelo le ntho e 'ngoe le e' ngoe, tsohle ka lebaka la ho hong hoo mela e 4 e futsanehileng ea khoutu ea Terraform e ka e etsang.

E lemoha ho hoholeha hantle

Etsa bonnete ba hore 'nete e lumellana le litebello.

Ho lemoha ha metsi ke ts'ebetso e matla haholo e le tšobotsi ea khoutu hobane e thusa ho netefatsa hore 'nete e lumellana le litebello. E fumaneha ka bobeli CloudFormation le Terraform. Empa ha palo ea tlhahiso e ntse e hola, ho batla ho hoholeha ho CloudFormation ho ile ha hlahisa lits'oants'o tse ngata tsa bohata.

Ka Terraform u na le lihoko tse tsoetseng pele haholo tsa ho tseba ho hoholeha. Ka mohlala, o kenya taelo hlokomoloha_phetoho ka ho toba tlhalosong ea mosebetsi oa ECS haeba u batla ho hlokomoloha liphetoho ho tlhaloso e itseng ea mosebetsi ntle le ho hlokomoloha liphetoho ho phepelong eohle ea hau ea ECS.

CDK le bokamoso ba CloudFormation

CloudFormation e thata ho e laola ka litekanyo tse kholo, tse fapaneng tsa meaho. Bongata ba mathata ana a lemohuoa mme sesebelisoa se hloka lintho tse joalo aws-cdk, moralo oa ho hlalosa lisebelisoa tsa maru ka khoutu le ho li tsamaisa ka AWS CloudFormation. Ho tla thahasellisa ho bona hore na bokamoso bo tšoere eng bakeng sa aws-cdk, empa ho tla ba le bothata ba ho qothisana lehlokoa le matla a mang a Terraform; ho tlisa CloudFormation morao-rao, liphetoho tsa lefats'e li tla hlokahala.

E le hore Terraform e se ke ea soetseha

Sena ke "lisebelisoa joalo ka khoutu", eseng "joalo ka mongolo".

Maikutlo a ka a pele ka Terraform a ne a le mpe haholo. Ke nahana hore ke ne ke sa utloisise mokhoa oo. Hoo e ka bang lienjineri tsohle ka boikhethelo ba e nka e le sebopeho sa mongolo se hlokang ho fetoloa mokhoa oa motheo o lakatsehang. U SE KE UA ETSA KA TSELA ENA.

Lintlha tsa nts'etsopele e ntle ea software le tsona li sebetsa ho Terraform.

Ke bone mekhoa e mengata e amohetsoeng ho theha khoutu e ntle e hlokomolohuoa Terraform. U ithutile ka lilemo tse ngata ho ba moqapi ea hloahloa. Se ke oa tela boiphihlelo bona hobane feela o sebetsa le Terraform. Lintlha tsa ntlafatso e ntle ea software li sebetsa ho Terraform.

Khoutu e ke ke ea ngoloa joang?

Ke bone mekotla e meholo ea Terraform e se nang litokomane ho hang. U ka ngola khoutu joang maqepheng - ntle le litokomane ho hang? Kenya litokomane tse hlalosang boemo ba hau khoutu Terraform (ho hatisoa lentsoe "khoutu"), ke hobane'ng ha karolo ena e le ea bohlokoa, le seo u se etsang.

Re ka sebelisa litšebeletso tseo e kileng ea e-ba mosebetsi o le mong o moholo ()?

Ke bone mekotla e rarahaneng ea Terraform e hlahisoa e le mojule o le mong. Hobaneng re sa sebelise software ka tsela ee? Ke hobane'ng ha re arola mesebetsi e meholo ho e menyenyane? Likarabo tse tšoanang li sebetsa ho Terraform. Haeba mojule oa hau o le moholo haholo, o hloka ho o arola ka li-module tse nyane.

Na k'hamphani ea hau ha e sebelise lilaeborari?

Ke bone kamoo lienjineri, ha ba ntse ba qapa morero o mocha ba sebelisa Terraform, ka booatla ba kopitsa likarolo tse kholo tsa merero e meng ho ea ho tsa bona, ba ntan'o ts'oana le tsona ho fihlela e qala ho sebetsa. O ka sebetsa tjena ka khoutu ea "combat" k'hamphaning ea hau? Ha re sebelise lilaeborari feela. Ee, ha se ntho e ngoe le e ngoe e tlamehang ho ba laebrari, empa re hokae ntle le lilaebrari tse arolelanoang ka molao-motheo?!

Na ha u sebelise PEP8 kapa gofmt?

Lipuo tse ngata li na le mokhoa o tloaelehileng, o amohelehang oa ho fometa. Ho Python ena ke PEP8. Ho Go - gofmt. Terraform e na le ea eona: terraform fmt. E thabele bakeng sa bophelo bo botle ba hau!

A na u tla sebelisa React u sa tsebe JavaScript?

Li-module tsa Terraform li ka nolofatsa karolo e 'ngoe ea meaho e rarahaneng eo u e thehang, empa sena ha se bolele hore u ke ke ua khona ho sebetsana le eona ho hang. U batla ho sebelisa Terraform ka nepo ntle le ho utloisisa lisebelisoa? U ahlotsoe: nako e tla feta, 'me ha ho mohla u tla tseba Terraform.

A na u khouta ka li-singletons kapa ente ea ho itšetleha?

Ente ea ho itšetleha ke mokhoa o tsebahalang haholo bakeng sa nts'etsopele ea software mme o khethoa ho feta li-singletons. See se thusa joang ho Terraform? Ke bone li-module tsa Terraform tse itšetlehileng ka boemo bo hole. Sebakeng sa ho ngola li-module tse khutlisetsang boemo bo hole, ngola mojule o nkang paramente. Ebe u fetisetsa li-parameter tsena ho module.

Na lilaebrari tsa hau li etsa lintho tse leshome hantle kapa ntho e le 'ngoe e ntle?

Lilaebrari tse sebetsang hantle haholo ke tse shebaneng le mosebetsi o le mong oo li o etsang hantle haholo. Ho e-na le ho ngola li-module tse kholo tsa Terraform tse lekang ho etsa ntho e 'ngoe le e' ngoe ka nako e le 'ngoe, haha ​​likarolo tsa tsona tse etsang ntho e le' ngoe hantle. Ebe u li kopanya ha ho hlokahala.

U etsa liphetoho joang ho lilaebrari ntle le litšebelisano tsa morao-rao?

Mojule o tloaelehileng oa Terraform, joalo ka laeborari e tloaelehileng, o hloka ho bua ka liphetoho ho basebelisi ntle le ho ts'oara morao. Hoa khopisa ha liphetoho tsena li etsahala lilaeboraring, 'me hoa khopisa ha ho etsoa liphetoho tse sa lumellaneng le morao-rao ho li-module tsa Terraform. Ho khothalletsoa ho sebelisa li-tag tsa git le semver ha u sebelisa li-module tsa Terraform.

Na tšebeletso ea hau ea tlhahiso e sebetsa ho laptop ea hau kapa setsing sa data?

Hashicorp e na le lisebelisoa tse kang leru la terraform ho tsamaisa terraform ea hau. Litšebeletso tsena tse bohareng li etsa hore ho be bonolo ho laola, ho hlahloba le ho lumella liphetoho tsa terraform.

Ha u ngole liteko?

Baenjiniere ba hlokomela hore khoutu e hloka ho hlahlojoa, empa bona ka bobona ba atisa ho lebala ka tlhahlobo ha ba sebetsa le Terraform. Bakeng sa lisebelisoa tsa motheo, sena se tletse linako tsa bolotsana. Keletso ea ka ke ho "leka" kapa "etsa mohlala" li-stack ho sebelisa li-module tse ka sebelisoang ka nepo bakeng sa tlhahlobo nakong ea CI / CD.

Terraform le microservices

Bophelo le lefu la lik'hamphani tsa microservices li itšetlehile ka lebelo, boqapi le tšitiso ea li-workstacks tse ncha tsa microservice.

Ntho e tloaelehileng ka ho fetisisa e mpe e amanang le meralo ea microservice, 'me e ke keng ea felisoa, e amana le mosebetsi, eseng khoutu. Haeba u nahana ka Terraform e le mokhoa feela oa ho iketsetsa feela lehlakore la meaho ea meralo ea li-microservices, joale u fetoa ke melemo ea 'nete ea sistimi. Jwale e se e le teng tsohle li tšoana le khoutu.

Source: www.habr.com

Eketsa ka tlhaloso