Yakachinja kubva kuTerraform kuenda kuCloudFormation - uye akazvidemba

Kumiririra zvivakwa sekodhi mune inodzokororwa mameseji fomati inzira yakapusa yemasisitimu ayo asingade kutamba nemakonzo. Iyi tsika ine zita - Zvivakwa seCode, uye kusvika parizvino kune maturusi maviri anozivikanwa ekuishandisa, kunyanya muAWS: Terraform ΠΈ CloudFormation.

Yakachinja kubva kuTerraform kuenda kuCloudFormation - uye akazvidemba
Kuenzanisa ruzivo neTerraform uye CloudFormation

Ndisati ndauya ku pfura (iye Amazon Junior) Ndakashanda mune imwe yekutanga uye akashandisa Terraform kwemakore matatu. Panzvimbo itsva, ndakashandisawo Terraform nesimba rangu rose, uye ipapo kambani yakasundidzira shanduko kune zvese zveAmazon, kusanganisira CloudFormation. Ini ndakashinga kuvandudza maitiro akanakisa kune ese ari maviri, uye ndakashandisa ese maturusi mune yakaoma kwazvo, yesangano-yakafara mafambiro. Gare gare, mushure mekuyera nekufunga zvinoreva kutama kubva kuTerraform kuenda kuCloudFormation, ndakave nechokwadi chekuti Terraform ingangove sarudzo yakanakisa yesangano.

Terraform Inotyisa

Beta software

Terraform haisati yaburitsa vhezheni 1.0 parizvino, chiri chikonzero chakanaka chekusaishandisa. Zvakachinja zvakanyanya kubva pandakatanga kuzviedza ini, asi kumashure terraform apply kazhinji yakaputsika mushure mekuvandudzwa kwakati kana mushure memakore mashoma ekushandiswa. Ndingati "zvinhu zvose zvakasiyana ikozvino," asi ... ndizvo izvo munhu wese anoita seanotaura, kwete? Pane shanduko dzisingaenderane neshanduro dzakapfuura, kunyangwe dzakakodzera, uye zvinotonzwa senge syntax uye zvisungo zvezvitoro zvezviwanikwa ndizvo zvatiri kuda. Chiridzwa chacho chinoita kunge chave nani, asi... :-0

Kune rimwe divi, AWS yakaita basa rakanaka kuchengetedza kuenderana kumashure. Izvi zvinodaro nekuti masevhisi avo anowanzo kuedzwa mukati mesangano uye ipapo chete, anotumidzwa zita, anoburitswa. Saka β€œvakaedza nesimba” inyaya yakaderera. Kuchengetedza kuenderana kumashure nemaAPIs ehurongwa hwakasiyana uye hwakaoma seAWS zvakaoma zvikuru. Chero ani aifanira kuchengetedza maAPI eruzhinji anoshandiswa zvakanyanya sezvaari anofanira kunzwisisa kuti zvakaoma sei kuzviita kwemakore mazhinji. Asi maitiro eCloudFormation, mundangariro dzangu, haana kumbobvira achinja nekufamba kwemakore.

Sangana negumbo... ibara

Sekuziva kwangu, bvisa resource kunze CloudFormation stack kubva kune yako CF stack haigoneke. Ndizvo zvimwe chete neTerraform. Iyo inokutendera iwe kupinza zviwanikwa zviripo mustack yako. Basa racho rinogona kunzi rinoshamisa, asi nesimba guru rinouya mutoro mukuru. Iwe unongoda kuwedzera sosi kune stack, uye iwe uchishanda ne stack yako, haugone kudzima kana kushandura sosi iyi. Rimwe zuva zvakaramba. Rimwe zuva paTwitch, mumwe munhu netsaona akapinza boka remumwe munhu rekuchengetedza AWS mune yavo yavo Terraform stack asi kwete kusvika kune chero misikanzwa. Ndakapinda mirairo yakawanda uye ... boka rekuchengetedza (pamwe chete nemigwagwa inouya) yakanyangarika.

Terraform Great

Kudzoreredzwa kubva kumatunhu asina kukwana

Dzimwe nguva CloudFormation inotadza kushandura zvachose kubva kune imwe nyika kuenda kune imwe. Panguva imwecheteyo, achaedza kudzokera kune yakapfuura. Zvinosuruvarisa kuti izvi hazviitike nguva dzose. Zvinogona kunge zvichityisa kugadzirisa zvakaitika gare gare - haumboziva kana CloudFormation ichafara kuti iri kubiwa - kunyangwe kungoigadzirisa. Kana achizokwanisa kudzokera kumamiriro ekare kana kuti kwete, haanyatso kuziva nzira yekuziva uye, nekusagadzika, anorembera kwemaawa achimirira chishamiso.

Terraform, kune rumwe rutivi, inoda kupora kubva kushanduko dzakakundikana zvakanyanya zvine nyasha uye inopa maturusi epamberi ekugadzirisa.

Shanduko dzakajeka kumamiriro ezvinyorwa

β€œOk, load balancer, uri kuchinja. Asi sei?"

-injiniya ane shungu, akagadzirira kudzvanya bhatani rekuti "gamuchira".

Dzimwe nguva ini ndinofanira kuita mamwe manipulations neanoremedza balancer muCloudFormation stack, sekuwedzera nhamba yechiteshi kana kushandura boka rekuchengetedza. ClouFormation inoratidza shanduko zvisina kunaka. Ini, pamapini netsono, kaviri-tarisa iyo yaml faira kagumi kuti ndive nechokwadi chekuti handina kudzima chero chinhu chakakosha uye handina kuwedzera chero chinhu chisingakoshi.

Terraform inonyanya kujeka mune izvi. Dzimwe nguva anotonyanya kujeka (kuverenga: kufinha). Neraki, iyo yazvino vhezheni inosanganisira yakagadziridzwa kuratidzwa kwekuchinja kuitira kuti iwe uone chaizvo zviri kuchinja.

Flexibility

Nyora software kumashure.

Kuti uzviise pachena, chinonyanya kukosha hunhu hwenguva refu software ndiko kugona kuchinjika kuchinja. Nyora chero software kumashure. Kazhinji ndaikanganisa nekutora sevhisi "yakapusa", ndozotanga kupinza zvese mu CloudFormation kana Terraform stack. Uye zvechokwadi, mwedzi gare gare zvakaratidzwa kuti ndakanga ndanzwisisa zvose zvisiri izvo, uye sevhisi yakanga isiri nyore! Uye zvino ini ndoda kutyora murwi muhombe kuita zvidimbu zvidiki. Paunoshanda ne CloudFormation, izvi zvinogona kuitwa chete nekutanga kudzoreredza iyo iripo stack, uye ini handiite izvi nemadatabase angu. Terraform, kune rumwe rutivi, yakaita kuti zvibvire kutsemura murwi uye kuuputsa kuita zvikamu zvidiki zvinonzwisisika.

Modules mu git

Kugovera kodhi yeTerraform pane akawanda akawanda zviri nyore pane kugovera CloudFormation kodhi. NeTerraform, unogona kuisa kodhi yako mune git repository uye kuiwana uchishandisa semantic vhezheni kutonga. Chero ani anokwanisa kuwana ino repository anogona kushandisa zvakare kodhi yakagovaniswa. CloudFormation yakaenzana iS3, asi haina mabhenefiti akafanana, uye hapana chikonzero nei tichifanira kusiya git tichifarira S3 zvachose.

Sangano rakakura uye kugona kugovera zvitsama zvakaenzana kwakasvika padanho rakakosha. Terraform inoita kuti izvi zvese zvive nyore uye zvakasikwa, nepo CloudFormation ichaita kuti usvetuke nepakati usati wawana chimwe chinhu chakadai chichishanda.

Operations sekodhi

"Ngatinyore uye zvakanaka."

β€”injiniya makore matatu asati agadzira bhasikoro reTerraform.

Kana zvasvika pakuvandudza software, Go kana chirongwa cheJava haisi kodhi chete.

Yakachinja kubva kuTerraform kuenda kuCloudFormation - uye akazvidemba
Code seCode

Panewo zvivakwa pazviri kushanda.

Yakachinja kubva kuTerraform kuenda kuCloudFormation - uye akazvidemba
Zvivakwa seCode

Asi anobva kupi? Nzira yekuiongorora sei? Kodhi yako inogara kupi? Vagadziri vanoda mvumo yekuwana here?

Yakachinja kubva kuTerraform kuenda kuCloudFormation - uye akazvidemba
Operations as Code

Kuve mugadziri wesoftware hakungorevi kunyora kodhi.

AWS haisiriyo yega: unogona kushandisa vamwe vanopa. SignalFx, PagerDuty kana Github. Pamwe une yemukati yeJenkins server yeCI/CD kana yemukati Grafana dashboard yekutarisisa. Infra seCode inosarudzwa nekuda kwezvikonzero zvakasiyana, uye imwe neimwe yakakosha zvakaenzana kune zvese zvine chekuita nesoftware.

Pandakashanda kuTwitch, takamhanyisa masevhisi mukati meAmazon yakasanganiswa yakamisikidzwa uye AWS masisitimu. Isu takaburitsa uye takatsigira akawanda mamicroservices, tichiwedzera mari yekushandisa. Hurukuro dzakafamba seizvi:

  • Π―: Damn, ndiwo majeti akawanda ekuti overclock one microservice. Ini ndichafanira kushandisa marara aya kugadzira account yeAWS (takaenda kumaakaundi maviri pa microservice), zvino iyi yekumisikidza chenjedzo, iyi yekodhi repository, uye iyi yetsamba ye email, uyezve iyi...
  • Tungamira: Ngatizvinyore uye zvakanaka.
  • Π―: Zvakanaka, asi script pachayo ichachinja. Tichada nzira yekutarisa kuti ese aya akavakirwa-muAmazon gizmos ari kusvika parizvino.
  • Tungamira: Zvinonzwika zvakanaka. Uye isu tichanyora script yeizvi.
  • Π―: Hukuru! Uye iyo script ingangove ichiri kuda kuseta paramita. Achazvigamuchira here?
  • Tungamira: Ngaatore kwaanoenda!
  • Π―: Maitiro anogona kuchinja uye kuenderana kumashure kunorasika. Imwe mhando ye semantic vhezheni kutonga ichadikanwa.
  • Tungamira: Pfungwa yakanaka!
  • Π―: Zvishandiso zvinogona kuchinjwa nemaoko, mukati memushandisi interface. Tichada nzira yekutarisa nekugadzirisa izvi.

…Makore matatu gare gare:

  • Tungamira: Uye isu tine terraform.

Hunhu hwenyaya ndeye: kunyangwe iwe musoro pamusoro pezvitsitsinho mune zvese Amazon, iwe uchiri kushandisa chimwe chinhu chisiri kubva kuAWS, uye masevhisi aya ane nyika inoshandisa mutauro wekumisikidza kuchengetedza iyo mamiriro mukuwirirana.

CloudFormation lambda vs git modules terraform

lambda ndiyo CloudFormation mhinduro kune tsika logic nyaya. Ne lambda unogona kugadzira macros kana user resource. Iyi nzira inounza mamwe maomarara asiripo muTerraform's semantic vhezheni yegit modules. Kwandiri, dambudziko rainyanya kudzvanya raive rekutonga mvumo kune ese aya mushandisi lambdas (uye aya akawanda emaakaundi eAWS). Rimwe dambudziko rakakosha raive rekuti "chii chakauya pekutanga, huku kana zai?" dambudziko: raienderana nekodhi ye lambda. Iri basa pacharo infrastructure uye kodhi, uye iyo pachayo inoda kuongororwa uye kugadzirisa. Chipikiri chekupedzisira mubhokisi chaive chakaomera semantically updating lambda code changes; isu taifanirawo kuve nechokwadi chekuti zviito zve stack pasina murairo wakananga hazvina kuchinja pakati pekumhanya.

Ini ndinorangarira kamwe chete ini ndaida kugadzira canary deployment yeElastic Beanstalk nharaunda ine classic load balancer. Chinhu chiri nyore kuita chingave kugadzira kechipiri kutumirwa kweEB padivi penzvimbo yekugadzira, ichitora danho rinowedzera: kubatanidza auto-scaling canary deployment boka neiyo deployment LB munzvimbo yekugadzira. Uye sezvo Terraform inoshandisa ASG beantalk semhedziso, izvi zvinoda 4 mamwe mitsara yekodhi muTerraform. Pandakabvunza kana paine mhinduro inofananidzwa muCloudFormation, vakandinongedza kune yakazara git repository ine pombi yekuendesa uye zvese, zvese nekuda kweiyo mitsetse mina yeTerraform kodhi yaigona kuita.

Inoona kukukurwa zviri nani

Ita shuwa kuti chokwadi chinoenderana nezvinotarisirwa.

Drift kuona ibasa rakasimba kwazvo sechinhu chekodhi nekuti inobatsira kuve nechokwadi chekuti chokwadi chinowirirana zvinotarisirwa. Inowanikwa nezvose zviri zviviri CloudFormation uye Terraform. Asi sezvo stack yekugadzira yakawedzera, kutsvaga kudhiraivha muCloudFormation kwakagadzira kuwedzera uye kuwanda kwekuonekwa kwenhema.

NeTerraform iwe une zvakawanda zvemberi zvehupenyu zvikokovonho zvekuona kudonha. Somuenzaniso, iwe unopinda murairo ignore_changes zvakananga muECS yetsanangudzo yebasa kana iwe uchida kufuratira shanduko kune imwe tsananguro yebasa pasina kufuratira shanduko kune yako yese ECS kutumirwa.

CDK uye ramangwana re CloudFormation

CloudFormation yakaoma kubata pahombe, mhiri-infrastructure zviyero. Mazhinji ematambudziko aya anozivikanwa uye chishandiso chinoda zvinhu zvakadai aws-cdk, chimiro chekutsanangura cloud infrastructure mukodhi uye kuimhanyisa kuburikidza neAWS CloudFormation. Zvichave zvinonakidza kuona izvo ramangwana rakabata aws-cdk, asi zvichave zvakaoma kukwikwidza nemamwe masimba eTerraform; kuunza CloudFormation kusvika parizvino, shanduko yepasi rose ichadikanwa.

Kuti Terraform irege kuodza mwoyo

Iyi "infrastructure sekodhi", uye kwete "sechinyorwa".

Maonero angu ekutanga eTerraform aive akashata. Ndinofunga ndakanga ndisinganzwisisi nzira yacho. Vanenge vese mainjiniya vanozviona nekusazvibata sechimiro chemavara chinoda kushandurwa kuita chivakwa chinodiwa. USAITA IZVI.

Iwo truisms ezvakanaka kuvandudza software anoshandawo kuTerraform.

Ndakaona maitiro mazhinji akatorwa kugadzira kodhi yakanaka ichifuratirwa muTerraform. Iwe wakadzidza kwemakore kuti uve programmer yakanaka. Usasiye chiitiko ichi nekuda kwekuti uri kushanda neTerraform. Iwo matruisms ekuvandudza software yakanaka anoshanda kune Terraform.

Ko kodhi haigone kunyorwa sei?

Ndakaona mahombe eTerraform asina magwaro zvachose. Iwe unogona sei kunyora kodhi mumapeji - pasina zvachose zvinyorwa? Wedzera zvinyorwa zvinotsanangura yako code Terraform (kusimbisa izwi rekuti "code"), nei chikamu ichi chakakosha, uye zvaunoita.

Tingatumire sei masevhisi aimbove basa guru guru()?

Ndakaona akaomesesa Terraform stacks akaunzwa semodule imwechete. Sei isu tisingatumire software nenzira iyi? Sei tichipatsanura mabasa makuru kuita madiki? Mhinduro dzakafanana dzinoshanda kuTerraform. Kana module yako yakakurisa, iwe unofanirwa kuiputsa kuita madiki module.

Kambani yako haishandisi maraibhurari here?

Ndakaona mainjiniya, achipeta purojekiti nyowani vachishandisa Terraform, neupenzi kukopa-kunamira machunks makuru kubva kune mamwe mapurojekiti kuenda kune avo, ndokuzofunga navo kusvika yatanga kushanda. Iwe ungashanda seizvi ne "combat" kodhi mukambani yako? Hatingoshandisi maraibhurari chete. Ehe, hazvisi zvese zvinofanirwa kuve raibhurari, asi tiripi isu tisina akagovaniswa maraibhurari musimboti?!

Hausi kushandisa PEP8 kana gofmt?

Mitauro mizhinji ine yakajairwa, inogamuchirwa fomati chirongwa. MuPython iyi iPEP8. MuGo - gofmt. Terraform ine yayo: terraform fmt. Nakidzwa nazvo nekuda kwehutano hwako!

Uchashandisa React usingazive JavaScript?

Terraform modules inogona kurerutsa chimwe chikamu chezvakaomarara zvivakwa iwe zvaunogadzira, asi izvi hazvireve kuti haugone kuita nayo zvachose. Unoda kushandisa Terraform nemazvo usinganzwisise zviwanikwa? Iwe wakarangwa: nguva ichapfuura, uye hauzombofa wakagona Terraform.

Uri kunyora ne singletons kana dependency jekiseni?

Dependency jekiseni inzira inozivikanwa yakanakisa yekuvandudza software uye inofarirwa pane singletons. Izvi zvinobatsira sei muTerraform? Ndakaona ma Terraform module anoenderana nenzvimbo iri kure. Panzvimbo pekunyora mamodule anotora kure kure, nyora module inotora paramita. Uye wobva wapfuudza aya ma parameter kune module.

Maraibhurari ako anoita zvinhu gumi zvakanaka here kana chinhu chimwe chete chikuru?

Maraibhurari anoshanda zvakanyanya ndeaya anotarisisa basa rimwe chete ravanoita nemazvo. Panzvimbo pekunyora mahombe eTerraform module anoyedza kuita zvese kamwechete, gadzira zvikamu zvawo zvinoita chinhu chimwe nemazvo. Uye wozobatanidza ivo sezvinodiwa.

Iwe unoita sei shanduko kumaraibhurari pasina kuseri kunoenderana?

Iyo yakajairika Terraform module, senge raibhurari yenguva dzose, inoda neimwe nzira kutaurirana shanduko kune vashandisi pasina kuseri kunoenderana. Zvinogumbura kana shanduko idzi dzikaitika mumaraibhurari, uye zvinongotsamwisa kana shanduko dzisiri dzekudzokera kumashure dzichiitwa muTerraform module. Zvinokurudzirwa kushandisa git tags uye semver paunenge uchishandisa Terraform modules.

Sevhisi yako yekugadzira iri kushanda palaptop yako kana munzvimbo yedata?

Hashicorp ine maturusi akadai terraform gore kumhanyisa terraform yako. Aya masevhisi epakati anoita kuti zvive nyore kubata, kuongorora, uye kubvumidza shanduko yeterraform.

Haunyore ma test?

Mainjiniya anoona kuti kodhi inoda kuyedzwa, asi ivo pachavo vanowanzo kanganwa nezvekuyedzwa kana vachishanda neTerraform. Kune zvivakwa, izvi zvakazara nenguva dzehunyengeri. Zano rangu ndere "kuyedza" kana "kugadzira muenzaniso" masheki uchishandisa ma module anogona kuiswa nemazvo pakuedzwa panguva yeCI / CD.

Terraform uye microservices

Hupenyu nerufu rwemakambani emicroservices zvinoenderana nekumhanya, hunyanzvi, uye kukanganisa kweiyo microservice workstacks.

Iyo inonyanya kuipa yakashata yakabatana ne microservice architectures, uye iyo isingagoni kubviswa, ine hukama nebasa, kwete kodhi. Kana iwe uchifunga nezveTerraform senzira yekungoita otomatiki chete chikamu chezvivakwa cheiyo microservices architecture, saka uri kurasikirwa nemabhenefiti echokwadi ehurongwa. Zvino zvatova zvese zvakafanana nekodhi.

Source: www.habr.com

Voeg