Sawv cev cov txheej txheem raws li cov cai hauv cov ntawv nyeem rov qab yog qhov kev coj ua zoo tshaj plaws rau cov tshuab uas tsis tas yuav muaj kev sib txuas nrog nas. Txoj kev no muaj lub npe- , thiab txog tam sim no muaj ob lub cuab yeej nrov los siv nws, tshwj xeeb hauv AWS: и .

Sib piv kev paub nrog Terraform thiab CloudFormation
Ua ntej yuav tuaj (nws yog ) Kuv ua haujlwm thiab siv Terraform rau peb xyoos. Ntawm qhov chaw tshiab, kuv kuj tau siv Terraform nrog tag nrho kuv lub zog, thiab tom qab ntawd lub tuam txhab tau thawb txoj kev hloov mus rau txhua yam ntawm Amazon, suav nrog CloudFormation. Kuv tau mob siab rau tsim cov kev coj ua zoo tshaj plaws rau ob qho tib si, thiab tau siv ob qho tib si hauv kev ua haujlwm nyuaj, thoob plaws lub koom haum. Tom qab ntawd, tom qab xav txog qhov ntsuas qhov cuam tshuam ntawm kev tsiv teb tsaws ntawm Terraform mus rau CloudFormation, Kuv tau ntseeg tias Terraform yog qhov kev xaiv zoo tshaj plaws rau lub koom haum.
Terraform txaus ntshai
Beta software
Terraform tseem tsis tau tso tawm version 1.0 tseem, uas yog vim li cas tsis siv nws. Nws tau hloov ntau heev txij li thaum kuv thawj zaug sim nws tus kheej, tab sis rov qab los terraform apply feem ntau tsoo tom qab ob peb hloov tshiab los yog tsuas yog tom qab ob peb xyoos ntawm kev siv. Kuv xav hais tias "txhua yam txawv tam sim no," tab sis ... qhov ntawd yog qhov zoo li txhua tus hais, tsis yog? Muaj cov kev hloov pauv uas tsis sib haum nrog cov ntawv dhau los, txawm hais tias lawv tsim nyog, thiab nws tseem zoo li cov syntax thiab abstractions ntawm cov khw muag khoom yog tam sim no qhov peb xav tau. Cov cuab yeej zoo li tau zoo dua, tab sis... :-0
Ntawm qhov tod tes, AWS tau ua txoj haujlwm zoo tswj kev rov qab sib raug zoo. Qhov no yog tej zaum vim tias lawv cov kev pabcuam feem ntau raug kuaj xyuas hauv lub koom haum thiab tsuas yog tom qab ntawd, hloov npe, luam tawm. Yog li "lawv sim nyuaj" yog qhov tsis txaus ntseeg. Kev tuav rov qab sib raug zoo nrog APIs rau lub kaw lus sib txawv thiab nyuaj li AWS yog qhov nyuaj kawg. Tus neeg twg uas yuav tsum tau tswj hwm pej xeem APIs uas tau siv dav raws li lawv yuav tsum nkag siab tias nws nyuaj npaum li cas los ua tau ntau xyoo. Tab sis tus cwj pwm ntawm CloudFormation, hauv kuv lub cim xeeb, tsis tau hloov ntau xyoo.
ntsib ceg... yog mos txwv
Raws li kuv paub, rho tawm cov peev txheej neeg sab nrauv CloudFormation pawg los ntawm koj pawg CF tsis tuaj yeem ua tau. Tib yam muaj tseeb nrog Terraform. Nws tso cai rau koj import cov peev txheej uas twb muaj lawm rau hauv koj pawg. Kev ua haujlwm tuaj yeem hais tau zoo kawg nkaus, tab sis nrog lub zog loj los ua lub luag haujlwm loj. Koj tsuas yog yuav tsum tau ntxiv cov peev txheej rau pawg, thiab thaum koj ua haujlwm nrog koj pawg, koj tsis tuaj yeem rho tawm lossis hloov cov peev txheej no. Muaj ib hnub nws rov qab los. Muaj ib hnub ntawm Twitch, ib tus neeg yuam kev tau xa mus rau lwm tus AWS kev ruaj ntseg pab pawg rau hauv lawv tus kheej Terraform pawg thaum tsis muaj kev ua phem. Kuv nkag mus rau ntau cov lus txib thiab ... cov pab pawg kev ruaj ntseg (nrog rau cov tsheb khiav) ploj mus.
Terraform Zoo heev
Rov qab los ntawm cov xeev tsis tiav
Qee zaum CloudFormation tsis ua tiav kev hloov pauv ntawm ib lub xeev mus rau lwm qhov. Nyob rau tib lub sijhawm, nws yuav sim rov qab mus rau yav dhau los. Nws yog kev tu siab tias qhov no tsis yog ib txwm ua tau. Nws tuaj yeem txaus ntshai rau kev debug dab tsi tshwm sim tom qab - koj tsis paub tias CloudFormation yuav zoo siab tias nws raug nyiag lawm - txawm tias tsuas yog kho nws. Txawm hais tias nws yuav tuaj yeem rov qab mus rau lub xeev dhau los, nws yeej tsis paub yuav txiav txim siab li cas thiab, los ntawm lub neej ntawd, dai rau ntau teev tos qhov txuj ci tseem ceeb.
Terraform, ntawm qhov tod tes, nyhav rov qab los ntawm kev hloov pauv tsis tau zoo dua thiab muaj cov cuab yeej debugging siab heev.
Cov kev hloov pauv kom pom tseeb dua rau lub xeev cov ntaub ntawv
"Okay, load balancer, koj hloov. Tab sis li cas?"
-txoj kev txhawj xeeb, npaj siab nias lub pob "txais".
Qee lub sij hawm kuv yuav tsum tau ua qee qhov kev ua haujlwm nrog cov load balancer hauv CloudFormation pawg, xws li ntxiv tus lej chaw nres nkoj lossis hloov pab pawg kev ruaj ntseg. ClouFormation qhia kev hloov pauv tsis zoo. Kuv, ntawm tus pins thiab koob, muab ob npaug rau-xyuas cov ntaub ntawv yaml kaum zaug kom paub tseeb tias kuv tsis tau tshem tawm yam tsim nyog thiab tsis tau ntxiv yam tsis tsim nyog.
Terraform yog ntau pob tshab hauv qhov no. Qee lub sij hawm nws tseem pob tshab (nyeem: tho txawv). Hmoov zoo, qhov tseeb version suav nrog kev txhim kho cov zaub ntawm cov kev hloov pauv kom tam sim no koj tuaj yeem pom raws nraim qhov hloov pauv.
Flexibility
Sau software rov qab.
Txhawm rau muab nws bluntly, tus yam ntxwv tseem ceeb tshaj plaws ntawm kev ua neej nyob ntev yog lub peev xwm los hloov pauv. Sau tej software rov qab. Feem ntau kuv tau ua yuam kev los ntawm kev siv "kev pabcuam" yooj yim, thiab tom qab ntawd pib ua txhua yam rau hauv ib qho CloudFormation lossis Terraform pawg. Thiab tau kawg, lub hlis tom qab nws tau tshwm sim tias kuv tau nkag siab txhua yam tsis raug, thiab qhov kev pabcuam yeej tsis yooj yim! Thiab tam sim no kuv yuav tsum tau ua li cas tawg ib pawg loj rau hauv cov khoom me me. Thaum koj ua haujlwm nrog CloudFormation, qhov no tsuas yog ua tau los ntawm thawj zaug rov tsim cov pawg uas twb muaj lawm, thiab kuv tsis ua qhov no nrog kuv cov ntaub ntawv. Terraform, ntawm qhov tod tes, ua kom nws tuaj yeem faib cov pawg thiab ua rau nws nkag siab ntau dua qhov me me.
Module hauv git
Sib faib Terraform code hla ntau pawg yog yooj yim dua li sib koom CloudFormation code. Nrog Terraform, koj tuaj yeem tso koj cov lej hauv git repository thiab nkag mus rau nws siv semantic version tswj. Txhua tus neeg uas muaj kev nkag mus rau qhov chaw cia khoom no tuaj yeem rov siv tau cov lej sib koom. CloudFormation qhov sib npaug yog S3, tab sis nws tsis muaj cov txiaj ntsig zoo ib yam, thiab tsis muaj laj thawj vim li cas peb yuav tsum tso tseg git hauv kev pom zoo ntawm S3 txhua.
Lub koom haum tau loj hlob thiab muaj peev xwm los faib cov pawg sib koom mus txog qib tseem ceeb. Terraform ua rau txhua qhov yooj yim thiab ntuj, qhov CloudFormation yuav ua rau koj dhia hla hoops ua ntej koj tuaj yeem tau txais qee yam zoo li no ua haujlwm.
Kev ua haujlwm raws li cov cai
"Cia script nws thiab ok."
-tus engineer 3 xyoo ua ntej tsim lub tsheb kauj vab Terraform.
Thaum nws los txog rau kev txhim kho software, Go lossis Java program tsis yog code xwb.

Code raws li Code
Tseem muaj cov infrastructure uas nws ua haujlwm.

Infrastructure li Code
Tab sis nws nyob qhov twg? Yuav saib xyuas nws li cas? Koj tus lej nyob qhov twg? Cov neeg tsim khoom puas xav tau kev tso cai nkag?

Kev ua haujlwm raws li Code
Ua tus tsim software tsis yog txhais hais tias sau code.
AWS tsis yog tib qho xwb: tej zaum koj yuav siv lwm tus muab kev pabcuam. SignalFx, PagerDuty lossis Github. Tej zaum koj muaj Jenkins server rau CI / CD lossis sab hauv Grafana dashboard rau kev saib xyuas. Infra as Code raug xaiv rau ntau yam, thiab txhua tus tseem ceeb sib npaug rau txhua yam ntsig txog software.
Thaum kuv ua haujlwm ntawm Twitch, peb tau nrawm cov kev pabcuam hauv Amazon cov kev sib xyaw ua ke thiab AWS systems. Peb churned tawm thiab txhawb ntau microservices, nce nqi khiav hauj lwm. Cov kev sib tham tau mus ib yam li no:
- Я: Damn, uas yog ntau yam taw tes rau overclock ib microservice. Kuv yuav tau siv cov khib nyiab no los tsim ib tus account AWS (peb mus rau 2 tus account rau microservice), tom qab ntawd qhov no rau kev teeb tsa kev ceeb toom, qhov no rau lub chaw khaws ntaub ntawv, thiab qhov no rau ib daim ntawv teev email, thiab tom qab ntawd qhov no ...
- Coj: Wb script nws thiab ok.
- Я: Okay, tab sis tsab ntawv nws tus kheej yuav hloov. Peb yuav xav tau ib txoj hauv kev los xyuas tias tag nrho cov no built-in Amazon gizmos mus txog hnub.
- Coj: Suab zoo. Thiab peb yuav sau ib tsab ntawv rau qhov no.
- Я: Zoo heev! Thiab tsab ntawv yuav tej zaum tseem yuav tau teem tsis tau. Nws puas yuav txais lawv?
- Coj: Cia nws coj nws mus!
- Я: Cov txheej txheem yuav hloov thiab rov qab sib raug zoo yuav ploj mus. Qee hom semantic version tswj yuav tsum tau.
- Coj: Lub tswv yim zoo!
- Я: Cov cuab yeej tuaj yeem hloov tau manually, hauv tus neeg siv interface. Peb yuav xav tau ib txoj hauv kev los xyuas thiab kho qhov no.
… 3 xyoos tom qab:
- Coj: Thiab peb tau txais terraform.
Kev ncaj ncees ntawm zaj dab neeg yog: txawm tias koj lub taub hau hla heels hauv txhua yam Amazon, koj tseem siv qee yam tsis yog los ntawm AWS, thiab cov kev pabcuam no muaj lub xeev uas siv cov lus teeb tsa los ua kom lub xeev ntawd sib txuas.
CloudFormation lambda vs git modules terraform
lambda yog CloudFormation txoj kev daws teeb meem rau qhov teeb meem kev cai logic. Nrog lambda koj tuaj yeem los yog . Txoj hauv kev no qhia txog qhov nyuaj ntxiv uas tsis muaj nyob hauv Terraform's semantic versioning ntawm git modules. Rau kuv, qhov teeb meem tseem ceeb tshaj plaws yog tswj kev tso cai rau tag nrho cov neeg siv lambdas (thiab cov no yog kaum ob ntawm AWS account). Lwm qhov teeb meem tseem ceeb yog "dab tsi tshwm sim, qaib lossis qe?" qhov teeb meem: nws muaj feem xyuam rau lambda code. Qhov haujlwm no nws tus kheej yog infrastructure thiab code, thiab nws tus kheej xav tau kev saib xyuas thiab hloov kho tshiab. Cov ntsia hlau zaum kawg hauv lub hleb yog qhov nyuaj hauv kev hloov kho cov lej lambda hloov pauv; peb kuj yuav tsum tau ua kom paub tseeb tias pawg ua haujlwm yam tsis muaj cov lus txib ncaj qha tsis hloov ntawm kev khiav.
Kuv nco qab ib zaug kuv xav tsim kev xa tawm canary rau Elastic Beanstalk ib puag ncig nrog cov khoom sib npaug classic. Qhov yooj yim tshaj plaws uas yuav tsum tau ua yog ua qhov thib ob xa mus rau EB ntawm ib sab ntawm qhov chaw tsim khoom, ua nws ib kauj ruam ntxiv: sib txuas cov pab pawg pib-scaling canary deployment nrog rau kev xa LB mus rau hauv qhov chaw tsim khoom. Thiab txij li Terraform siv , qhov no yuav xav tau 4 kab ntxiv code hauv Terraform. Thaum kuv nug yog tias muaj kev sib piv hauv CloudFormation, lawv tau taw qhia kuv mus rau tag nrho git repository nrog rau xa mus rau lub raj xa dej thiab txhua yam, tag nrho rau lub hom phiaj ntawm qee yam uas tsis zoo 4 kab ntawm Terraform code tuaj yeem ua.
Nws ntes drift zoo dua
Xyuas kom tseeb tias qhov tseeb yog qhov kev cia siab.
yog ib qho kev ua haujlwm muaj zog heev li code feature vim tias nws pab kom ntseeg tau tias qhov tseeb phim qhov kev cia siab. Nws muaj nyob nrog CloudFormation thiab Terraform. Tab sis raws li pawg tsim khoom loj hlob tuaj, kev tshawb nrhiav drift hauv CloudFormation ua ntau thiab ntau qhov tsis tseeb.
Nrog Terraform koj muaj ntau yam ntxiv mus txog lub neej hooks rau drift nrhiav. Piv txwv li, koj nkag mus rau qhov hais kom ua ncaj qha rau hauv ECS txoj haujlwm txhais yog tias koj xav tsis quav ntsej txog kev hloov pauv rau ib qho haujlwm tshwj xeeb uas tsis quav ntsej txog kev hloov pauv rau koj tag nrho ECS xa mus.
CDK thiab yav tom ntej ntawm CloudFormation
CloudFormation yog ib qho nyuaj rau kev tswj hwm ntawm qhov loj, hla kev tsim kho vaj tse. Ntau qhov teeb meem no tau lees paub thiab cov cuab yeej xav tau yam zoo li , lub moj khaum rau kev txhais cov huab infrastructure hauv code thiab khiav nws los ntawm AWS CloudFormation. Nws yuav nthuav kom pom dab tsi yav tom ntej tuav rau aws-cdk, tab sis nws yuav muaj lub sijhawm nyuaj los sib tw nrog Terraform lwm qhov kev ua tau zoo; coj CloudFormation mus txog hnub tim, kev hloov pauv thoob ntiaj teb yuav tsum tau ua.
Yog li ntawd Terraform tsis poob siab
Qhov no yog "infrastructure li code", thiab tsis yog "raws li ntawv".
Kuv thawj qhov kev xav ntawm Terraform yog qhov tsis zoo. Kuv xav tias kuv tsuas yog tsis nkag siab txog txoj hauv kev. Yuav luag txhua tus engineers involuntarily perceive nws raws li ib tug ntawv nyeem hom ntawv uas yuav tsum tau hloov dua siab tshiab rau hauv qhov xav tau infrastructure. Txhob ua li no.
Qhov tseeb ntawm kev txhim kho software zoo kuj tseem siv tau rau Terraform.
Kuv tau pom ntau yam kev coj ua los tsim cov cai zoo raug tsis quav ntsej hauv Terraform. Koj tau kawm ntau xyoo los ua tus programmer zoo. Tsis txhob tso tseg qhov kev paub no vim tias koj ua haujlwm nrog Terraform. Qhov tseeb ntawm kev txhim kho software zoo siv rau Terraform.
Yuav ua li cas thiaj li tsis tau cov ntaub ntawv?
Kuv twb pom loj Terraform pawg uas tsis muaj ntaub ntawv kiag li. Koj tuaj yeem sau cov lej hauv nplooj ntawv li cas - tsis muaj ntaub ntawv kiag li? Ntxiv cov ntaub ntawv uas piav qhia koj code Terraform (tseem ceeb rau lo lus "code"), vim li cas ntu no tseem ceeb heev, thiab koj ua dab tsi.
Peb tuaj yeem xa cov kev pabcuam uas ib zaug yog ib lub ntsiab tseem ceeb () ua haujlwm li cas?
Kuv tau pom ntau heev Terraform stacks nthuav tawm raws li ib qho module. Vim li cas peb tsis xa software li no? Vim li cas peb faib cov haujlwm loj rau hauv cov me me? Tib cov lus teb siv rau Terraform. Yog tias koj lub module loj dhau lawm, koj yuav tsum tau rhuav nws mus rau hauv cov modules me.
Koj lub tuam txhab tsis siv cov tsev qiv ntawv?
Kuv tau pom yuav ua li cas engineers, spinning ib tug tshiab project siv Terraform, stupidly luam-pased loj chunks los ntawm lwm yam dej num rau lawv tus kheej, thiab ces tinkered nrog lawv mus txog rau thaum nws pib ua hauj lwm. Koj puas ua haujlwm zoo li no nrog "kev sib ntaus sib tua" code hauv koj lub tuam txhab? Peb tsis yog siv cov tsev qiv ntawv xwb. Yog lawm, tab sis peb nyob qhov twg tsis muaj cov tsev qiv ntawv sib koom hauv txoj cai?!
Puas yog koj tsis siv PEP8 lossis gofmt?
Cov lus feem ntau muaj tus qauv, lees txais cov qauv tsim qauv. Hauv Python qhov no yog PEP8. Hauv Go - gofmt. Terraform muaj nws tus kheej: terraform fmt. Txaus siab rau koj txoj kev noj qab haus huv!
Koj puas siv React yam tsis paub JavaScript?
Terraform modules tuaj yeem ua kom yooj yim rau qee qhov ntawm cov txheej txheem nyuaj uas koj tsim, tab sis qhov no tsis tau txhais hais tias koj tsis tuaj yeem tinker nrog nws txhua. Xav siv Terraform kom raug yam tsis nkag siab cov peev txheej? Koj yog doomed: lub sijhawm yuav dhau mus, thiab koj yuav tsis muaj tus tswv Terraform.
Puas yog koj coding nrog singletons lossis kev vam meej txhaj tshuaj?
Kev txhaj tshuaj tiv thaiv yog qhov kev lees paub zoo tshaj plaws rau kev txhim kho software thiab nyiam dua singletons. Qhov no pab tau li cas hauv Terraform? Kuv twb pom Terraform modules nyob ntawm tej thaj chaw deb xeev. Hloov chaw sau cov modules uas khaws cov chaw nyob deb, sau ib qho module uas siv cov ntsuas. Thiab tom qab ntawd dhau cov kev txwv no mus rau qhov module.
Koj cov tsev qiv ntawv puas ua kaum yam zoo lossis ib yam zoo?
Cov tsev qiv ntawv uas ua haujlwm zoo tshaj plaws yog cov uas tsom mus rau ib txoj haujlwm uas lawv ua tau zoo heev. Es tsis txhob sau cov Terraform loj loj uas sim ua txhua yam ib zaug, tsim ib feem ntawm lawv ua ib yam zoo. Thiab tom qab ntawd muab lawv ua ke raws li xav tau.
Yuav ua li cas koj hloov mus rau cov tsev qiv ntawv yam tsis muaj rov qab compatibility?
Ib qho Terraform module, zoo li lub tsev qiv ntawv tsis tu ncua, xav tau kev sib txuas lus hloov pauv rau cov neeg siv yam tsis tau rov qab sib xws. Nws yog kev ntxhov siab thaum cov kev hloov pauv no tshwm sim hauv cov tsev qiv ntawv, thiab nws tsuas yog ua rau muaj kev ntxhov siab thaum cov kev hloov pauv tsis rov qab tau ua hauv Terraform modules. Nws raug nquahu kom siv git tags thiab semver thaum siv Terraform modules.
Puas yog koj qhov kev pabcuam tsim khoom khiav ntawm koj lub laptop lossis hauv chaw khaws ntaub ntawv?
Hashicorp muaj cov cuab yeej zoo li khiav koj terraform. Cov kev pabcuam hauv nruab nrab no ua kom yooj yim rau kev tswj hwm, tshuaj xyuas, thiab pom zoo hloov pauv.
Koj tsis sau ntawv xeem?
Cov kws tshaj lij paub tias cov cai yuav tsum tau sim, tab sis lawv tus kheej feem ntau tsis nco qab txog kev sim thaum ua haujlwm nrog Terraform. Rau infrastructure, qhov no yog fraught nrog treacherous moments. Kuv cov lus qhia yog "sim" lossis "tsim piv txwv" pawg siv cov qauv uas tuaj yeem siv tau raug rau kev sim thaum CI / CD.
Terraform thiab microservices
Lub neej thiab kev tuag ntawm cov tuam txhab microservices nyob ntawm qhov ceev, kev tsim kho tshiab, thiab kev cuam tshuam ntawm microservice workstacks tshiab.
Feem ntau qhov tsis zoo uas cuam tshuam nrog microservice architectures, thiab tsis tuaj yeem raug tshem tawm, yog cuam tshuam nrog kev ua haujlwm, tsis yog cov cai. Yog tias koj xav txog Terraform tsuas yog ib txoj hauv kev los ua haujlwm tsuas yog sab hauv kev tsim kho ntawm microservices architecture, ces koj ploj lawm qhov txiaj ntsig tiag tiag ntawm lub kaw lus. Tam sim no twb yog lawm .
Tau qhov twg los: www.hab.com
