Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Nws yuav zoo li tias Terraform developers muab cov kev coj ua zoo tshaj plaws rau kev ua haujlwm nrog AWS infrastructure. Tsuas muaj ib tug nuance. Thaum lub sij hawm, tus naj npawb ntawm ib puag ncig nce, txhua tus muaj nws tus kheej nta. Ib daim ntawv yuav luag ntawm daim ntawv thov pawg tshwm nyob rau hauv cheeb tsam nyob sib ze. Thiab Terraform code yuav tsum tau ua tib zoo theej thiab kho raws li cov kev cai tshiab los yog ua rau hauv ib lub snowflake.

Kuv daim ntawv tshaj tawm txog cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm ntawm cov haujlwm loj thiab ntev.

Yees duab:

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Kuv muaj 40 xyoo, kuv nyob hauv IT tau 20 xyoo. Kuv tau ua haujlwm rau Ixtens tau 12 xyoos. Peb koom nrog ecommerce-tsav-kev txhim kho. Thiab kuv tau xyaum DevOps cov kev coj ua tau 5 xyoos.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Kuv zaj dab neeg yuav yog hais txog kuv qhov kev paub dhau los hauv qhov project hauv lub tuam txhab uas nws lub npe kuv yuav tsis hais, zais tom qab daim ntawv cog lus tsis qhia tawm.

Cov lej ntawm tus swb yog qhia kom nkag siab txog qhov ntsuas ntawm qhov project. Thiab txhua yam uas kuv yuav hais tom ntej yog cuam tshuam nrog Amazon.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Kuv tau koom nrog qhov project no 4 xyoo dhau los. Thiab qhov kev tsim kho vaj tsev kho mob tau nyob rau hauv tag nrho viav vias vim tias qhov project tau loj hlob. Thiab cov qauv uas tau siv tsis haum lawm. Thiab muab tag nrho cov phiaj xwm kev loj hlob ntawm qhov project, nws yog ib qho tsim nyog los ua ib yam dab tsi tshiab.

Ua tsaug rau Matvey, uas nag hmo tau qhia peb txog dab tsi tshwm sim ntawm Dodo Pizza. Nov yog qhov tshwm sim ntawm no 4 xyoo dhau los.

Cov neeg tsim khoom tuaj thiab pib ua cov txheej txheem kev tsim kho.

Cov laj thawj pom tseeb tshaj plaws vim li cas qhov no xav tau yog lub sijhawm ua lag luam. Nws yog ib qho tsim nyog los xyuas kom meej tias pab pawg DevOps tsis yog lub hauv paus thaum lub sijhawm tso tawm. Thiab ntawm lwm yam, Terraform thiab Puppet tau siv nyob rau thawj theem.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Terraform yog qhov qhib qhov project los ntawm HashiCorp. Thiab rau cov neeg uas tsis paub tias qhov no yog dab tsi, tom ntej no ob peb slides.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Infrastructure raws li txoj cai txhais tau hais tias peb tuaj yeem piav qhia peb cov kev tsim kho vaj tse thiab nug qee cov neeg hlau kom paub tseeb tias peb tau txais cov peev txheej uas peb tau piav qhia.

Piv txwv li, peb xav tau lub tshuab virtual. Peb yuav piav qhia thiab ntxiv ob peb yam uas yuav tsum tau muaj.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Tom qab ntawd, peb yuav teeb tsa kev nkag mus rau Amazon hauv console. Thiab peb yuav thov rau Terraform txoj kev npaj. Terraform txoj kev npaj yuav hais tias: "Ok, peb tuaj yeem ua cov no rau koj cov peev txheej." Thiab tsawg kawg ib qho peev txheej yuav raug ntxiv. Thiab yuav tsis muaj kev hloov pauv.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thaum koj zoo siab rau txhua yam, koj tuaj yeem thov Terraform thov thiab Terraform yuav tsim ib qho piv txwv rau koj, thiab koj yuav tau txais lub tshuab virtual hauv koj huab.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Ntxiv mus, peb qhov project tab tom txhim kho. Peb tab tom ntxiv qee qhov kev hloov pauv rau ntawd. Peb thov kom muaj ntau zaus, peb ntxiv 53 qhov nkag.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thiab peb rov hais dua. Thov npaj. Peb pom cov kev hloov pauv uas tau npaj tseg. Peb thov. Thiab qhov no yog li cas peb cov infrastructure loj hlob.

Terraform siv qee yam hu ua cov ntaub ntawv hauv xeev. Ntawd yog, txhua qhov kev hloov pauv uas mus rau Amazon tau txais kev cawmdim hauv cov ntaub ntawv uas rau txhua qhov peev txheej uas koj tau piav qhia, muaj cov peev txheej sib raug uas tau tsim hauv Amazon. Yog li, thaum piav qhia txog kev hloov pauv, Terraform paub tseeb tias yuav tsum tau hloov pauv hauv Amazon.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Cov ntaub ntawv hauv xeev no tsuas yog cov ntaub ntawv xwb. Thiab peb khaws lawv hauv Git, uas yog qhov tsis yooj yim heev. Ib tug neeg ib txwm tsis nco qab ua qhov hloov pauv, thiab ntau qhov kev tsis sib haum xeeb tshwm sim.

Tam sim no nws muaj peev xwm siv lub backend, piv txwv li Terraform tau teev nyob rau hauv lub thoob thiab qhov tseem ceeb ntawm lub xeev cov ntaub ntawv yuav tsum tau txais kev cawmdim. Thiab Terraform nws tus kheej yuav saib xyuas kom tau txais cov ntaub ntawv hauv xeev no, ua txhua yam khawv koob thiab muab rov qab rau qhov kawg tshwm sim.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Peb cov infrastructure yog loj hlob. Nov yog peb cov cai. Thiab tam sim no peb tsis yog xav tsim lub tshuab virtual, peb xav kom muaj qhov chaw sim.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Terraform tso cai rau koj los tsim cov khoom xws li ib qho module, uas yog, piav qhia tib yam hauv qee qhov ntawv.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thiab, piv txwv li, hauv kev sim, hu rau qhov module no thiab tau txais tib yam li yog tias peb tau ua tiav Terraform thov hauv module nws tus kheej. Rau kev sim yuav muaj qhov chaws no.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Rau kev tsim khoom, peb tuaj yeem xa qee qhov kev hloov pauv mus rau qhov ntawd, vim tias hauv kev sim peb tsis xav tau ntau zaus; hauv kev tsim khoom, qhov loj me tsuas yog siv tau.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thiab ces kuv yuav rov qab mus rau qhov project. Nws yog ib txoj hauj lwm nyuaj, cov txheej txheem npaj tau loj heev. Thiab nws yog ib qho tsim nyog yuav tsum tau tso tag nrho cov cai kom nws yooj yim rau txhua tus neeg: ob qho tib si rau cov neeg ua haujlwm kho ntawm cov cai no thiab rau cov neeg hloov pauv. Thiab nws tau npaj tias txhua tus tsim tawm tuaj yeem mus thiab kho cov txheej txheem tsim nyog raws li qhov xav tau rau nws ib feem ntawm lub platform.

Qhov no yog ib daim ntawv teev cov ntoo uas tau pom zoo los ntawm HashiCorp nws tus kheej yog tias koj muaj ib txoj haujlwm loj thiab nws ua rau kev txiav txim siab faib tag nrho cov txheej txheem rau hauv qee qhov me me, thiab piav qhia txhua daim hauv ib daim ntawv nyias nyias.

Muaj lub tsev qiv ntawv dav dav ntawm cov peev txheej, koj tuaj yeem hu kwv yees li tib yam hauv kev sim thiab hauv kev tsim khoom.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Nyob rau hauv peb cov ntaub ntawv, qhov no tsis yog kiag li tsim nyog, vim hais tias lub xeem pawg rau developers los yog rau kev xeem yuav tsum tau yooj yim npaum li cas. Tab sis kuv tsis xav mus dhau ntawm cov folders thiab siv lawv raws li qhov yuav tsum tau ua, thiab txhawj xeeb tias cov ntaub ntawv yuav nce siab, thiab tom qab ntawd qhov piv txwv uas siv cov ntaub ntawv no yuav nce. Yog li ntawd, tag nrho cov kev ntsuam xyuas tau pib los ntawm ib lub nplaub tshev. Tib cov modules tau hu rau ntawd, tab sis txhua yam tau ua tiav hauv ib qho kev khiav.

Terraform saib xyuas txhua qhov kev vam meej. Thiab nws ib txwm tsim cov peev txheej hauv cov kab ke kom koj tuaj yeem tau txais qhov chaw nyob IP, piv txwv li, los ntawm cov qauv tsim tshiab, thiab tau txais qhov chaw nyob IP no hauv route53 cov ntaub ntawv.

Tsis tas li ntawd, lub platform loj heev. Thiab tso tawm ib qho kev xeem, txawm tias ib teev, txawm tias rau 8 teev, yog qhov ua haujlwm kim heev.

Thiab peb automated qhov teeb meem no. Thiab Jenkins txoj haujlwm tau tso cai rau peb khiav pawg. Nyob rau hauv nws, nws yog tsim nyog los tsim ib tug rub daim ntawv thov nrog cov kev hloov pauv uas tus tsim tawm xav sim, qhia tag nrho cov tsim nyog xaiv, Cheebtsam, thiab qhov ntev. Yog tias nws xav tau kev ntsuas kev ua tau zoo, ces nws tuaj yeem ua ntau zaus. Yog tias nws tsuas yog yuav tsum tau kuaj xyuas tias qee daim ntawv qhib, ces nws tuaj yeem pib ntawm qhov nyiaj tsawg kawg nkaus. Thiab tseem qhia seb puas xav tau ib pawg lossis tsis xav, thiab lwm yam.

Thiab tom qab ntawd Jenkins thawb lub plhaub ntawv, uas hloov kho me ntsis cov cai hauv Terraform folder. Kuv tshem tawm cov ntaub ntawv tsis tsim nyog thiab ntxiv cov ntaub ntawv tsim nyog. Thiab tom qab ntawd nrog ib qho kev khiav ntawm Terraform thov cov pawg tau tsa.

Thiab tom qab ntawd muaj lwm cov kauj ruam uas kuv tsis xav mus.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Vim lub fact tias rau kev sim peb xav tau ib tug me ntsis ntxiv kev xaiv nyob rau hauv ntau lawm, peb yuav tsum tau luam theej duab modules thiaj li hais tias nyob rau hauv cov ntaub ntawv no peb yuav ntxiv cov nta uas yuav tsum tau tsuas yog rau kev sim.

Thiab nws thiaj li tshwm sim tias hauv kev sim kuv xav sim cov kev hloov pauv uas nws thiaj li yuav mus rau hauv kev tsim khoom. Tab sis qhov tseeb, ib qho tau sim, thiab ib qho txawv me ntsis tau siv hauv kev tsim khoom. Thiab muaj qhov tawg me me hauv cov qauv uas hauv kev tsim khoom txhua qhov kev hloov pauv tau siv los ntawm pab pawg ua haujlwm. Thiab qee zaum nws tau muab tawm tias cov kev hloov pauv uas yuav tsum tau mus los ntawm kev sim mus rau kev tsim khoom tseem nyob hauv lwm version.

Tsis tas li ntawd, muaj qhov teeb meem zoo li no tau ntxiv cov kev pabcuam tshiab, uas txawv me ntsis ntawm qee qhov uas twb muaj lawm. Thiab tsis txhob hloov kho ib qho module uas twb muaj lawm, peb yuav tsum tau ua ib daim qauv ntawm nws thiab ntxiv cov kev hloov tsim nyog.

Qhov tseem ceeb, Terraform tsis yog hom lus tiag. Nov yog kev tshaj tawm. Yog tias peb yuav tsum tshaj tawm ib yam dab tsi, ces peb tshaj tawm nws. Thiab nws tag nrho ua haujlwm.

Qee lub sij hawm, thaum ib qho ntawm kuv qhov kev thov rub tau raug tham, ib tus ntawm kuv cov npoj yaig tau hais tias tsis tas yuav tsim cov paj daus. Kuv xav tsis thoob tias nws txhais li cas. Muaj ib qho kev tshawb fawb tseeb tias tsis muaj ob lub snowflakes zoo ib yam hauv ntiaj teb, lawv txhua tus sib txawv me ntsis. Thiab sai li sai tau thaum kuv hnov ​​​​qhov no, kuv tam sim ntawd hnov ​​​​qhov hnyav tag nrho ntawm Terraform code. Vim tias thaum nws tsim nyog txav los ntawm version mus rau version, Terraform xav tau kev hloov pauv hloov pauv, piv txwv li cov cai tsis sib xws nrog cov ntawv tom ntej. Thiab peb yuav tsum ua qhov kev thov rub, uas tau them yuav luag ib nrab ntawm cov ntaub ntawv hauv kev tsim kho vaj tse, txhawm rau coj cov txheej txheem mus rau qhov txuas ntxiv ntawm Terraform.

Thiab tom qab xws li ib tug snowflake tshwm sim, tag nrho cov Terraform code uas peb tau tig mus rau hauv ib tug loj, loj pawg ntawm daus.

Rau tus tsim tawm sab nraud uas yog sab nraud kev ua haujlwm, qhov no tsis muaj teeb meem ntau rau nws, vim nws tau thov rub, nws cov peev txheej pib. Thiab qhov ntawd yog txhua yam, nws tsis yog nws qhov kev txhawj xeeb ntxiv lawm. Thiab pab pawg DevOps, uas ua kom txhua yam zoo, yuav tsum tau ua txhua yam kev hloov pauv no. Thiab tus nqi ntawm cov kev hloov pauv no tau nce ntau heev, nrog rau txhua qhov ntxiv snowflake.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Muaj ib zaj dab neeg hais txog yuav ua li cas ib tug me nyuam kawm ntawv ntawm ib lub rooj sib tham kos ob lub voj voog zoo meej nrog chalk rau ntawm daim ntawv dub. Thiab tus kws qhia ntawv xav tsis thoob li cas nws tau tswj kom kos tau zoo yam tsis muaj lub tshuab ntsuas. Tus tub ntxhais kawm teb tias: "Qhov yooj yim heev, kuv tau siv ob xyoos hauv cov tub rog tig cov nqaij grinder."

Thiab ntawm plaub xyoos uas kuv tau koom nrog hauv txoj haujlwm no, Kuv tau ua Terraform tau li ob xyoos. Thiab, tau kawg, kuv muaj qee qhov kev dag ntxias, qee cov lus qhia txog yuav ua li cas kom yooj yim rau Terraform code, ua haujlwm nrog nws zoo li cov lus programming thiab txo lub nra ntawm cov neeg tsim khoom uas yuav tsum khaws cov cai no mus txog hnub tim.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thawj qhov kuv xav pib nrog yog Symlinks. Terraform muaj ntau txoj cai rov ua dua. Piv txwv li, kev hu mus rau tus kws kho mob ntawm yuav luag txhua qhov chaw uas peb tsim ib qho kev tsim kho vaj tse zoo ib yam. Thiab nws yog qhov tsim nyog los muab tso rau hauv ib daim ntawv nyias nyias. Thiab nyob qhov twg tus kws kho mob yuav tsum tau ua Symlinks rau cov ntaub ntawv no.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Piv txwv li, hauv kev tsim khoom koj siv lub luag haujlwm, uas tso cai rau koj kom tau txais txoj cai nkag mus rau qee tus account sab nraud Amazon. Thiab tau hloov ib cov ntaub ntawv, tag nrho cov seem nyob rau hauv cov kev pab cuam tsob ntoo yuav muaj cov cai uas yuav tsum tau kom Terraform paub uas Amazon ntu nkag mus.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Symlinks poob qhov twg? Raws li kuv tau hais, Terraform muaj cov ntaub ntawv hauv xeev. Thiab lawv yog heev, txias heev. Tab sis qhov tshaj plaws yog tias Terraform pib qhov backend hauv thawj qhov chaw. Thiab nws tsis tuaj yeem siv ib qho kev hloov pauv hauv cov kev txwv no; lawv yuav tsum tau sau rau hauv cov ntawv ib txwm.

Thiab yog li ntawd, thaum ib tug neeg ua cov peev txheej tshiab, nws luam tawm qee qhov chaws los ntawm lwm cov folders. Thiab nws yuav ua yuam kev nrog tus yuam sij lossis nrog lub thoob. Piv txwv li, nws ua cov khoom sandbox los ntawm sandbox, thiab tom qab ntawd ua rau hauv kev tsim khoom. Thiab yog li nws yuav tig tawm tias lub thoob hauv kev tsim khoom yuav raug siv los ntawm sandbox. Tau kawg, lawv yuav pom sai sai. Nws yuav ua tau los kho qhov no me ntsis, tab sis txawm li cas los xij nws yog qhov nkim sij hawm thiab, rau qee qhov, cov peev txheej.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Peb tuaj yeem ua dab tsi ntxiv? Ua ntej ua haujlwm nrog Terraform, koj yuav tsum pib nws. Thaum pib, Terraform rub tawm tag nrho cov plugins. Qee lub sij hawm lawv tau faib los ntawm monolith mus rau ntau qhov kev pabcuam microservice. Thiab koj ib txwm yuav tsum ua Terraform init kom nws rub tawm tag nrho cov modules, tag nrho cov plugins.

Thiab koj tuaj yeem siv lub plhaub ntawv, uas, ua ntej, tuaj yeem tau txais tag nrho cov kev hloov pauv. Lub plhaub ntawv tsis txwv nyob rau hauv txhua txoj kev. Thiab, qhov thib ob, txoj kev. Yog tias peb ib txwm siv txoj hauv kev uas nyob hauv qhov chaw khaws cia ua tus yuam sij rau lub xeev cov ntaub ntawv, ces, raws li, qhov yuam kev ntawm no yuav raug tshem tawm.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Kuv tuaj yeem tau txais cov ntaub ntawv nyob qhov twg? JSON cov ntaub ntawv. Terraform tso cai rau koj sau cov txheej txheem tsis yog hauv hcl (HashiCorp Configuration Language), tab sis kuj hauv JSON.

JSON yooj yim nyeem los ntawm daim ntawv plhaub. Raws li, koj tuaj yeem tso cov ntaub ntawv teeb tsa nrog lub thoob hauv qee qhov chaw. Thiab siv lub thoob no ob qho tib si hauv Terraform code thiab hauv daim ntawv plhaub rau kev pib.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Vim li cas nws tseem ceeb kom muaj lub thoob rau Terraform? Vim muaj xws li ib yam li tej thaj chaw deb xeev cov ntaub ntawv. Qhov ntawd yog, thaum kuv tsa qee qhov peev txheej, txhawm rau qhia Amazon: "Thov tsa qhov piv txwv," Kuv yuav tsum tau qhia ntau qhov yuav tsum tau ua.

Thiab cov cim qhia no tau muab khaws cia rau hauv qee qhov ntawv tais ceev tseg. Thiab kuv tuaj yeem mus thiab hais tias: "Terraform, thov khiav mus rau lub xeev cov ntaub ntawv ntawm cov peev txheej thiab tau txais cov cim no rau kuv." Thiab yog li ib qho kev sib koom ua ke tshwm sim ntawm cov cheeb tsam sib txawv lossis ib puag ncig.

Nws tsis yog ib txwm ua tau los siv cov ntaub ntawv nyob deb xeev. Piv txwv li, koj tsim VPC los ntawm tes. Thiab Terraform code uas tsim VPC tsim cov VPC sib txawv uas nws yuav siv sij hawm ntev heev thiab koj yuav tau kho ib qho rau lwm tus, yog li koj tuaj yeem siv cov lus qhia nram qab no.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Ntawd yog, ua ib qho qauv uas zoo li ua rau VPC thiab, raws li nws tau, muab rau koj cov cim, tab sis qhov tseeb tsuas yog muaj cov ntaub ntawv nrog hardcoded qhov tseem ceeb uas tuaj yeem siv los tsim ib qho piv txwv.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Nws tsis yog ib txwm tsim nyog los txuag lub xeev cov ntaub ntawv hauv huab. Piv txwv li, thaum kuaj cov modules, koj tuaj yeem siv backend initialization, qhov twg cov ntaub ntawv tsuas yog khaws cia rau hauv disk thaum lub sijhawm kuaj.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Tam sim no me ntsis txog kev sim. Koj tuaj yeem kuaj dab tsi hauv Terraform? Tej zaum muaj ntau ntau, tab sis kuv yuav tham txog 4 yam no.

HashiCorp muaj kev nkag siab txog yuav ua li cas Terraform code yuav tsum tau formatted. Thiab Terraform fmt tso cai rau koj los tsim cov cai koj hloov raws li kev ntseeg no. Raws li, kev ntsuam xyuas yuav tsum tau kuaj xyuas seb qhov formatting sib haum li cas HashiCorp bequeathed, thiaj li tsis tas yuav hloov qhov chaw ntawm cov brackets, thiab lwm yam.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Cov tom ntej no yog Terraform validate. Nws ua me ntsis ntau dua li tshawb xyuas cov syntax - ala, seb tag nrho cov parentheses yog khub. Dab tsi tseem ceeb ntawm no? Peb cov infrastructure yog dav heev. Muaj ntau tus txiv sib txawv hauv nws. Thiab hauv txhua qhov koj yuav tsum tau khiav Terraform validate.

Raws li, txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm rau txhawm

Parallel yog qhov txias heev, siv nws.

Tab sis txhua zaus Terraform pib, nws mus rau HashiCorp thiab nug, "Dab tsi yog qhov tseeb plugins versions? Thiab lub plugin uas kuv muaj nyob rau hauv lub cache - nws puas yog ib qho los yog qhov tsis ncaj ncees lawm? Thiab qhov no qeeb qeeb ntawm txhua kauj ruam.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Yog tias koj qhia Terraform qhov twg cov plugins nyob, ces Terraform yuav hais tias: "Okay, qhov no yog qhov tseeb tshaj plaws uas nyob ntawd. Kuv yuav tsis mus qhov twg, Kuv mam li pib siv koj tus lej Terraform tam sim ntawd. "

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Txhawm rau sau cov ntawv tais ceev tseg nrog cov plugins tsim nyog, peb muaj qhov yooj yim Terraform code uas tsuas yog xav tau pib. Ntawm no, tau kawg, koj yuav tsum tau qhia tag nrho cov chaw muab kev pabcuam uas koom nrog koj cov cai, txwv tsis pub Terraform yuav hais tias: "Kuv tsis paub tus kws kho mob tshwj xeeb vim nws tsis nyob hauv cache."

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Tom ntej no yog Terraform txoj kev npaj. Raws li kuv hais, kev loj hlob yog cyclical. Peb hloov cov cai. Thiab tom qab ntawd koj yuav tsum paub seb qhov kev hloov pauv twg tau npaj rau kev tsim kho vaj tse.

Thiab thaum lub infrastructure yog heev, loj heev, koj tuaj yeem hloov ib qho module, kho qee qhov kev xeem ib puag ncig lossis qee thaj tsam tshwj xeeb thiab tawg qee qhov nyob sib ze. Yog li ntawd, Terraform txoj kev npaj yuav tsum tau ua rau tag nrho cov kev tsim kho vaj tse thiab qhia tias yuav hloov pauv li cas.

Koj ua tau qhov no ntse. Piv txwv li, peb tau sau ib tsab ntawv Python uas daws cov kev vam meej. Thiab nyob ntawm seb tau hloov pauv li cas: Terraform module lossis tsuas yog ib qho tshwj xeeb, nws ua cov phiaj xwm rau tag nrho cov nyob ruaj khov.

Cov phiaj xwm Terraform yuav tsum tau ua raws li kev thov. Tsawg kawg yog qhov peb ua.

Tau kawg, nws yog qhov zoo los ua qhov kev sim rau txhua qhov kev hloov pauv, rau txhua qhov kev cog lus, tab sis cov phiaj xwm yog qhov kim heev. Thiab hauv kev thov rub peb hais, "Thov muab cov phiaj xwm rau kuv." Tus neeg hlau pib. Thiab xa hauv cov lus lossis txuas tag nrho cov phiaj xwm uas xav tau los ntawm koj qhov kev hloov pauv.

Ib txoj kev npaj yog ib qho khoom kim heev. Nws yuav siv sij hawm vim Terraform mus rau Amazon thiab nug, "Puas yog qhov piv txwv no tseem muaj nyob? Puas yog qhov autoscale no muaj qhov tsis sib xws? Thiab txhawm rau ua kom qhov no nce, koj tuaj yeem siv qhov ntsuas xws li refresh = cuav. Qhov no txhais tau tias Terraform yuav rub tawm lub xeev los ntawm S3. Thiab nws yuav ntseeg tias lub xeev yuav haum raws li qhov muaj nyob hauv Amazon.

Xws li cov phiaj xwm Terraform mus nrawm dua, tab sis lub xeev yuav tsum sib haum rau koj qhov kev tsim kho vaj tse, piv txwv li qhov chaw, qee zaum Terraform refresh yuav tsum pib. Terraform refresh ua raws nraim li ntawd: lub xeev sib luag li cas nyob rau hauv qhov tseeb infrastructure.

Thiab peb yuav tsum tham txog kev nyab xeeb. Nov yog qhov uas peb yuav tsum pib. Qhov twg koj khiav Terraform thiab Terraform khiav ntawm koj cov infrastructure muaj qhov tsis zoo. Uas yog, koj yeej tseem ceeb executing code. Thiab yog tias qhov kev thov rub muaj qee yam kev phem code, ces nws tuaj yeem raug tua ntawm ib qho chaw uas muaj kev nkag mus ntau dhau. Yog li ceev faj qhov koj khiav Terraform txoj kev npaj.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Qhov tom ntej no kuv xav tham txog yog kev sim cov neeg siv cov ntaub ntawv.

Dab tsi yog user-data? Hauv Amazon, thaum peb tsim ib qho piv txwv, peb tuaj yeem xa ib tsab ntawv nrog rau qhov piv txwv - cov ntaub ntawv meta. Thaum piv txwv pib, feem ntau huab init yeej ib txwm muaj nyob rau hauv cov xwm txheej no. Huab init nyeem tsab ntawv no thiab hais tias: "OK, hnub no kuv yog tus load balancer." Thiab ua raws li cov kev khi lus no nws ua qee yam ua.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Tab sis, hmoov tsis, thaum peb ua Terraform txoj kev npaj thiab Terraform siv, cov neeg siv cov ntaub ntawv zoo li no hom ntawm cov lej. Ntawd yog, nws tsuas xa koj lub hash. Thiab txhua yam koj tuaj yeem saib hauv txoj kev npaj yog seb puas yuav muaj kev hloov pauv lossis seb tus hash yuav nyob li cas.

Thiab yog tias koj tsis xyuam xim rau qhov no, qee cov ntawv nyeem tawg tuaj yeem xaus rau ntawm Amazon, ntawm cov txheej txheem tiag tiag.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Xwb, thaum ua tiav, koj tuaj yeem hais tsis yog tag nrho cov txheej txheem, tab sis tsuas yog tus qauv. Thiab hauv cov cai hais tias: "Thov tso cov qauv no ntawm kuv lub vijtsam." Thiab yog li ntawd, koj tuaj yeem tau txais daim ntawv luam tawm ntawm koj cov ntaub ntawv yuav zoo li cas ntawm Amazon.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Lwm qhov kev xaiv yog siv lub module los tsim cov neeg siv cov ntaub ntawv. Koj yuav siv qhov module no. Koj tau txais cov ntaub ntawv ntawm disk. Muab piv nrog cov ntaub ntawv siv. Thiab yog li, yog tias qee tus txiv neej txiav txim siab kho cov neeg siv cov ntaub ntawv me ntsis, ces koj qhov kev ntsuam xyuas yuav hais tias: "OK, muaj qee qhov kev hloov pauv ntawm no thiab muaj - qhov no yog qhov qub."

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Qhov tom ntej no kuv xav tham txog yog Automate Terraform thov.

Tau kawg, nws yog qhov txaus ntshai heev ua Terraform siv rau hauv hom tsis siv neeg, vim leej twg paub tias qhov kev hloov pauv tau tuaj rau ntawd thiab qhov kev puas tsuaj lawv tuaj yeem ua rau cov vaj tsev nyob.

Rau ib puag ncig kev sim, qhov no yog txhua yam qub. Ntawd yog, txoj haujlwm uas tsim qhov chaw sim yog qhov uas txhua tus neeg tsim khoom xav tau. Thiab ib qho kev qhia xws li "txhua yam ua haujlwm rau kuv" tsis yog ib qho kev lom zem meme, tab sis pov thawj tias ib tug neeg tau tsis meej pem, tsa pawg, thiab khiav qee qhov kev sim ntawm pawg no. Thiab nws tau ua kom paub tseeb tias txhua yam zoo nyob ntawd thiab hais tias: "Ok, txoj cai uas kuv tso tawm tau raug sim lawm."

Hauv kev tsim khoom, sandbox thiab lwm qhov chaw uas muaj kev lag luam tseem ceeb dua, koj tuaj yeem siv qee qhov kev pab cuam zoo heev vim nws tsis ua rau leej twg tuag. Cov no yog: autoscale pawg, pab pawg kev ruaj ntseg, lub luag haujlwm, route53, thiab cov npe tuaj yeem loj heev. Tab sis khaws ib lub qhov muag ntawm dab tsi tshwm sim, nyeem cov ntawv ceeb toom ntawm daim ntawv thov.

Qhov twg yog qhov txaus ntshai lossis txaus ntshai los thov, piv txwv li, yog tias cov no yog qee qhov kev siv tsis tu ncua los ntawm cov ntaub ntawv, tom qab ntawd tau txais cov ntawv ceeb toom tias tsis muaj kev hloov pauv hauv qee qhov ntawm cov txheej txheem. Thiab tus engineer, nyob rau hauv kev saib xyuas, pib ua haujlwm los thov lossis ua los ntawm nws lub console.

Amazon muaj xws li Terminate kev tiv thaiv. Thiab nws tuaj yeem tiv thaiv qee kis los ntawm kev hloov pauv uas tsis xav tau rau koj. Ntawd yog, Terraform tau mus rau Amazon thiab hais tias: "Kuv yuav tsum tua qhov piv txwv no los ua lwm tus." Thiab Amazon hais tias: β€œThov txim, tsis yog hnub no. Peb muaj kev tiv thaiv Terminate. "

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thiab lub icing ntawm lub ncuav mog qab zib yog code optimization. Thaum peb ua hauj lwm nrog Terraform code, peb yuav tsum dhau ib tug loj tus naj npawb ntawm tsis mus rau lub module. Cov no yog cov kev txwv uas tsim nyog los tsim qee yam kev pab. Thiab cov cai hloov mus rau hauv cov npe loj ntawm cov kev txwv uas yuav tsum tau dhau los ntawm module mus rau module, los ntawm module rau module, tshwj xeeb tshaj yog tias cov modules yog nested.

Thiab nws nyuaj heev los nyeem. Nws yog qhov nyuaj heev los tshuaj xyuas qhov no. Thiab feem ntau nws hloov tawm tias qee qhov kev ntsuas tau raug tshuaj xyuas thiab lawv tsis yog qhov xav tau. Thiab qhov no siv sijhawm thiab nyiaj txiag los kho tom qab.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Yog li ntawd, kuv xav kom koj siv xws li ib tug complex parameter uas muaj xws li ib tug tej yam ntoo ntawm qhov tseem ceeb. Ntawd yog, koj xav tau qee hom ntawv tais ceev tseg uas koj muaj tag nrho cov txiaj ntsig uas koj xav kom muaj nyob rau qee qhov chaw.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Thiab los ntawm kev hu rau qhov module no, koj tuaj yeem tau txais ib tsob ntoo uas tau tsim nyob rau hauv ib qho qauv, uas yog, nyob rau hauv ib qho module uas ua hauj lwm ib yam rau tag nrho cov infrastructure.

Hauv cov qauv no koj tuaj yeem ua qee qhov kev suav siv xws li qhov tsis ntev los no hauv Terraform li cov neeg hauv zos. Thiab tom qab ntawd, nrog rau ib qho kev tso tawm, muab qee qhov tsis sib xws, uas yuav suav nrog array hashes, thiab lwm yam.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Qhov no yog qhov uas txhua qhov zoo tshaj plaws pom kuv tau xaus. Thiab kuv xav qhia ib zaj dab neeg txog Columbus. Thaum nws tab tom nrhiav nyiaj rau nws txoj kev ntoj ke mus nrhiav Is Nrias teb (raws li nws xav tau), tsis muaj leej twg ntseeg nws thiab lawv xav tias nws ua tsis tau. Ces nws hais tias: β€œNco ntsoov tias lub qe tsis poob.” Tag nrho cov bankers, nplua nuj heev thiab tej zaum cov neeg ntse, sim ua cas tso lub qe, thiab nws pheej poob. Ces Columbus coj lub qe thiab nias nws me ntsis. Lub plhaub crumpled thiab lub qe tseem motionless. Lawv hais tias, "Auj, qhov yooj yim heev!" Thiab Columbus teb tias: β€œYog lawm, nws yooj yim heev. Thiab thaum kuv qhib Is Nrias teb, txhua tus yuav siv txoj kev lag luam no. "

Thiab qhov kuv nyuam qhuav hais rau koj yog tej zaum qhov yooj yim thiab tsis tseem ceeb. Thiab thaum koj kawm txog lawv thiab pib siv lawv, nws yog nyob rau hauv qhov kev txiav txim ntawm yam. Yog li coj kom zoo dua. Thiab yog tias cov no yog txhua yam zoo rau koj, ces tsawg kawg koj paub yuav ua li cas tso lub qe kom nws tsis poob.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Wb sib sau:

  • Sim kom tsis txhob snowflakes. Thiab cov snowflakes tsawg dua, cov peev txheej tsawg dua koj yuav xav tau hloov pauv thoob plaws koj qhov chaw loj.
  • Kev hloov tsis tu ncua. Ntawd yog, thaum qee qhov kev hloov pauv tshwm sim hauv cov cai, koj yuav tsum coj koj cov txheej txheem ua raws li cov kev hloov pauv sai li sai tau. Yuav tsum tsis txhob muaj qhov xwm txheej uas ib tus neeg tuaj saib Elasticsearch ob lossis peb lub hlis tom qab, ua rau Terraform txoj kev npaj, thiab muaj ntau qhov kev hloov pauv uas nws tsis tau xav txog. Thiab nws yuav siv sijhawm ntau los muab txhua yam rov qab los.
  • Kev xeem thiab automation. Qhov ntau koj cov cai tau them nrog cov kev xeem thiab cov yam ntxwv, kev ntseeg siab ntau dua koj muaj tias koj ua txhua yam kom raug. Thiab kev xa khoom tsis siv neeg yuav ua rau koj muaj kev ntseeg siab ntau zaus.
  • Cov cai rau kev xeem thiab kev tsim khoom ib puag ncig yuav tsum zoo ib yam. Xyaum, vim tias kev tsim khoom tseem txawv me ntsis thiab tseem yuav muaj qee qhov nuances uas yuav dhau mus dhau qhov chaw sim. Tab sis txawm li cas los xij, ntxiv lossis rho tawm, qhov no tuaj yeem ua kom ntseeg tau.
  • Thiab yog tias koj muaj ntau Terraform code thiab nws yuav siv sij hawm ntau los khaws cov cai no mus txog hnub tim, ces nws yeej tsis lig dhau rau refactor thiab tau txais nws zoo.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

  • Immutable infrastructure. AMI kev xa khoom raws sijhawm.
  • Cov qauv rau route53 thaum koj muaj ntau qhov nkag thiab koj xav kom lawv nyob rau hauv ib qho kev txiav txim zoo ib yam.
  • Sib ntaus API tus nqi txwv. Qhov no yog thaum Amazon hais tias, "Qhov ntawd yog nws, Kuv tsis tuaj yeem txais kev thov ntxiv, thov tos." Thiab ib nrab ntawm lub chaw ua haujlwm tau tos kom txog thaum nws tuaj yeem tsim nws cov infrastructure.
  • Cov xwm txheej. Amazon tsis yog qhov xwm txheej pheej yig thiab cov chaw tso cai rau koj txuag tau ntau heev. Thiab nyob ntawd koj tuaj yeem qhia tag nrho daim ntawv qhia txog nws.
  • Kev ruaj ntseg thiab IAM lub luag haujlwm.
  • Tshawb nrhiav cov peev txheej ploj, thaum koj muaj cov xwm txheej tsis paub keeb kwm hauv Amazone, lawv noj nyiaj. Txawm hais tias piv txwv tus nqi $ 100-150 toj ib hlis, qhov ntawd ntau dua $ 1 toj xyoo. Nrhiav cov peev txheej no yog kev lag luam muaj txiaj ntsig.
  • Thiab tshwj xeeb piv txwv.

Cov qauv hauv Terraform los tawm tsam kev ntxhov siab thiab kev ua haujlwm niaj hnub. Maxim Kostrikin (Ixtens)

Qhov ntawd yog txhua yam rau kuv. Terraform yog txias heev, koj siv nws. Ua tsaug!

Lus nug

Ua tsaug rau daim ntawv qhia! Koj lub xeev cov ntaub ntawv nyob rau hauv S3, tab sis koj yuav ua li cas daws qhov teeb meem uas ntau tus neeg tuaj yeem nqa cov ntaub ntawv hauv xeev no thiab sim nthuav tawm?

Ua ntej tshaj plaws, peb tsis nrawm. Qhov thib ob, muaj cov chij, uas peb tshaj tawm tias peb tab tom ua haujlwm ntawm qee qhov kev cai. Ntawd yog, txawm hais tias qhov kev tsim kho vaj tse loj heev, qhov no tsis tau txhais hais tias ib tus neeg siv ib yam dab tsi tas li. Thiab thaum muaj lub sijhawm ua haujlwm, qhov no yog qhov teeb meem; peb khaws cov ntaub ntawv hauv xeev hauv Git. Qhov no yog ib qho tseem ceeb, txwv tsis pub ib tug neeg yuav ua ib lub xeev cov ntaub ntawv, thiab peb yuav tsum manually muab lawv ua ke kom txhua yam mus ntxiv. Tam sim no tsis muaj teeb meem li ntawd. Feem ntau, Terraform daws qhov teeb meem no. Thiab yog tias qee yam hloov pauv tas li, koj tuaj yeem siv cov xauv, uas tiv thaiv qhov koj hais.

Puas yog koj siv qhov chaw qhib lossis kev lag luam?

Tsis muaj kev lag luam, piv txwv li txhua yam koj tuaj yeem mus thiab rub tawm dawb.

Kuv lub npe yog Stanislav. Kuv xav ua ib qho ntxiv me me. Koj tau tham txog Amazon qhov tshwj xeeb uas tso cai rau koj los ua qhov piv txwv tsis tuaj yeem. Qhov no kuj yog nyob rau hauv Terraform nws tus kheej; nyob rau hauv lub neej thib ob thaiv koj tuaj yeem hais qhia txog kev txwv tsis pub hloov lossis txwv kev puas tsuaj.

Lub sij hawm raug txwv. Qhov zoo.

Kuv kuj xav nug ob yam. Ua ntej, koj tham txog kev sim. Koj puas tau siv cov cuab yeej kuaj? Kuv hnov ​​​​txog Test Kitchen plugin. Tej zaum muaj ib yam dab tsi ntxiv. Thiab kuv kuj xav nug txog Local Values. Yuav ua li cas lawv sib txawv los ntawm Input Variables? Thiab vim li cas kuv thiaj tsis tuaj yeem ntsuas qee yam los ntawm Local Values? Kuv sim xav txog lub ntsiab lus no, tab sis qee qhov kuv tsis tuaj yeem paub nws tus kheej.

Peb tuaj yeem tham ntau ntxiv sab nraum chav no. Peb cov cuab yeej kuaj tau ua tiav nws tus kheej. Tsis muaj dab tsi nyob ntawd los sim. Feem ntau, muaj cov kev xaiv thaum automated tests tuaj tos infrastructure qhov chaw, xyuas tias nws yog OK, thiab ces rhuav tshem txhua yam nrog ib daim ntawv qhia tias koj infrastructure yog tseem zoo. Peb tsis muaj qhov no vim tias cov ntawv xeem tau khiav txhua hnub. Thiab qhov ntawd txaus. Thiab yog tias ib yam dab tsi pib tawg, nws yuav pib tawg yam tsis muaj peb kuaj xyuas nws nyob rau lwm qhov.

Hais txog Cov Nqi Hauv Zos, cia peb txuas ntxiv kev sib tham sab nraum chav.

Nyob zoo! Ua tsaug rau daim ntawv qhia! Qhia paub heev. Koj hais tias koj muaj ntau hom kev cai los piav txog cov txheej txheem. Koj puas tau txiav txim siab tsim cov cai no?

Cov lus nug zoo, ua tsaug! Lub ntsiab lus yog tias thaum peb siv infrastructure li code, peb xav hais tias peb saib cov cai thiab nkag siab txog dab tsi infrastructure nyob tom qab code. Yog hais tias code yog generated, ces peb yuav tsum xav txog tej yam code yuav raug generated thiaj li yuav nkag siab zoo li cas infrastructure yuav muaj. Los yog peb tsim code, cog lus rau nws, thiab qhov tseem ceeb tib yam tshwm sim. Yog li ntawd peb ua raws li txoj kev uas peb tau sau, peb tau txais nws. Ntxiv rau cov tshuab hluav taws xob tshwm sim me ntsis tom qab thaum peb pib ua lawv. Thiab nws twb lig dhau lawm los hloov.

Koj puas tau hnov ​​dab tsi txog jsonnet?

Tsis

Saib, qhov no yog ib qho zoo heev. Kuv pom ib rooj plaub uas koj tuaj yeem siv nws thiab tsim cov qauv ntaub ntawv.

Generators yog qhov zoo thaum koj muaj lawv, zoo li hauv lus tso dag txog lub tshuab shaving. Ntawd yog, thawj zaug lub ntsej muag txawv, tab sis tom qab ntawd txhua tus neeg muaj lub ntsej muag tib yam. Cov tshuab hluav taws xob ua haujlwm zoo heev. Tab sis, hmoov tsis, peb lub ntsej muag txawv me ntsis. Qhov no yog teeb meem.

Cia li saib. Ua tsaug!

Kuv lub npe yog Maxim, Kuv tuaj ntawm Sberbank. Koj tham me ntsis txog qhov koj tab tom sim coj Terraform mus rau qhov sib npaug ntawm cov lus programming. Nws tsis yooj yim dua los siv Ansible?

Cov no yog yam txawv heev. Koj tuaj yeem tsim cov peev txheej hauv Ansible, thiab Puppet tuaj yeem tsim cov peev txheej hauv Amazon. Tab sis Terraform yog ncaj nraim sharpened.

Koj puas tsuas muaj Amazon?

Nws tsis yog tias peb tsuas muaj Amazon xwb. Peb yuav luag tsuas muaj Amazon. Tab sis qhov tseem ceeb feature yog Terraform nco ntsoov. Hauv Ansible, yog tias koj hais tias: "Muab kuv 5 zaus," ces nws yuav nce, thiab tom qab ntawd koj hais tias: "Thiab tam sim no kuv xav tau 3." Thiab Terraform yuav hais tias: "Okay, Kuv mam li tua 2," thiab Ansible yuav hais tias: "Okay, ntawm no yog 3 rau koj." Tag nrho 8.

Nyob zoo! Ua tsaug rau koj daim ntawv qhia! Nws yog qhov nthuav heev kom hnov ​​​​txog Terraform. Kuv xav tam sim ua ib qho lus me me txog qhov tseeb tias Terraform tseem tsis muaj qhov tso tawm ruaj khov, yog li kho Terraform nrog kev ceev faj zoo.

Ib diav zoo rau noj hmo. Qhov ntawd yog, yog tias koj xav tau kev daws teeb meem, qee zaum koj muab qhov tsis ruaj khov, thiab lwm yam, tab sis nws ua haujlwm thiab nws pab peb.

Lo lus nug yog qhov no. Koj siv Remote backend, koj siv S 3. Vim li cas koj ho tsis siv official backend?

Official?

Terraform Huab.

Nws tshwm sim thaum twg?

Kwv yees li 4 lub hlis dhau los.

Yog tias nws tau tshwm sim 4 xyoo dhau los, ces tej zaum kuv yuav tau teb koj cov lus nug.

Muaj twb muaj ib tug built-in muaj nuj nqi thiab xauv, thiab koj yuav khaws ib lub xeev cov ntaub ntawv. Muab nws sim. Tab sis kuv tseem tsis tau sim nws thiab.

Peb tab tom taug kev ntawm lub tsheb ciav hlau loj uas tab tom tsiv ntawm kev kub ceev. Thiab koj tsis tuaj yeem nqa ob peb lub tsheb thiab muab pov tseg.

Koj tham txog snowflakes, ua cas koj ho tsis siv ceg? Vim li cas ho tsis ua haujlwm li ntawd?

Peb txoj hauv kev yog tias tag nrho cov infrastructure yog nyob rau hauv ib lub repository. Terraform, Puppet, tag nrho cov ntawv sau uas muaj feem cuam tshuam nrog qhov no, lawv txhua tus nyob hauv ib qho chaw cia khoom. Qhov no peb tuaj yeem ua kom ntseeg tau tias cov kev hloov pauv nce ntxiv tau sim ib qho tom qab. Yog hais tias nws yog ib pawg ntawm ceg, ces xws li ib qhov project yuav luag tsis muaj peev xwm tswj tau. Rau lub hlis dhau los, thiab lawv sib txawv heev uas nws tsuas yog qee yam kev rau txim. Qhov no yog qhov kuv xav kom khiav tawm ua ntej refactoring.

Yog li nws tsis ua haujlwm?

Qhov no tsis ua haujlwm kiag li.

Hauv ceg kuv txiav tawm daim nplaub tshev swb. Ntawd yog, yog tias koj ua rau txhua pawg xeem, piv txwv li, pab pawg A muaj nws tus kheej nplaub tshev, pab pawg B muaj nws cov ntawv tais ceev tseg, ces qhov no kuj tsis ua haujlwm. Peb tau tsim ib qho kev xeem ib puag ncig kev sib koom ua ke uas hloov pauv tau txaus kom haum rau txhua tus. Ntawd yog, peb tau txais kev pabcuam ib tus lej.

Nyob zoo! Kuv lub npe yog Yura! Ua tsaug rau daim ntawv qhia! Cov lus nug txog modules. Koj hais tias koj siv modules. Koj yuav daws qhov teeb meem li cas yog tias kev hloov pauv tau ua rau ib qho module uas tsis sib haum nrog lwm tus neeg hloov? Puas yog koj ua li cas versioning lub modules los yog sim coj ib tug wunderwaffle kom tau raws li ob txoj cai?

Qhov no yog ib qho teeb meem loj daus. Qhov no yog qhov peb raug kev txom nyem los ntawm thaum qee qhov kev hloov pauv tsis muaj txiaj ntsig tuaj yeem tawg qee qhov ntawm cov txheej txheem. Thiab qhov no yuav pom tau tsuas yog tom qab qee lub sijhawm ntev.

Ntawd yog, nws tseem tsis tau daws?

Koj ua universal modules. Tsis txhob snowflakes. Thiab txhua yam yuav ua tiav. Qhov thib ob ib nrab ntawm tsab ntawv ceeb toom yog hais txog yuav ua li cas zam qhov no.

Nyob zoo! Ua tsaug rau daim ntawv qhia! Kuv xav kom meej. Hauv qab qhov xwm txheej muaj ib pawg loj uas kuv tuaj rau. Puppet thiab lub luag haujlwm faib ua ke li cas?

Cov neeg siv-cov ntaub ntawv.

Ntawd yog, koj tsuas nti tawm cov ntaub ntawv thiab ua li cas rau nws?

Cov neeg siv-cov ntaub ntawv yog ib qho kev ceeb toom, piv txwv li thaum peb ua ib lub clone ntawm daim duab, Daemon nce mus rau qhov ntawd thiab, sim xyuas seb nws yog leej twg, nyeem cov ntawv ceeb toom tias nws yog tus load balancer.

Qhov ntawd yog, qhov no puas yog qee yam txheej txheem cais uas tau muab tso tseg?

Peb tsis tau invent nws. Peb siv nws.

Nyob zoo! Kuv tsuas yog muaj lus nug txog Cov Neeg Siv - cov ntaub ntawv. Koj hais tias muaj teeb meem nyob ntawd, hais tias ib tug neeg yuav xa ib yam dab tsi mus rau qhov tsis ncaj ncees lawm. Puas muaj qee txoj hauv kev khaws cov neeg siv-cov ntaub ntawv hauv tib Git, kom nws ib txwm paub meej tias Tus Neeg Siv-cov ntaub ntawv hais txog dab tsi?

Peb tsim cov neeg siv-cov ntaub ntawv los ntawm template. Ntawd yog, qee tus lej ntawm kev hloov pauv tau siv nyob ntawd. Thiab Terraform tsim cov txiaj ntsig kawg. Yog li ntawd, koj tsis tuaj yeem saib tus qauv thiab hais tias yuav muaj dab tsi tshwm sim, vim tias txhua yam teeb meem cuam tshuam nrog qhov tseeb tias tus tsim tawm xav tias nws tau dhau txoj hlua ntawm qhov sib txawv no, tab sis ib qho array siv nyob ntawd. Thiab nws - bam thiab kuv - yog li-thiab-yog li, yog li-thiab-yog li, kab tom ntej, thiab txhua yam tawg. Yog tias qhov no yog cov peev txheej tshiab thiab ib tus neeg khaws nws thiab pom tias ib yam dab tsi tsis ua haujlwm, ces nws yuav daws tau sai. Thiab yog tias pawg autoscale no tau hloov kho, tom qab ntawd qee qhov xwm txheej hauv pawg autoscale pib hloov. Thiab bang, ib yam dab tsi tsis ua hauj lwm. Nws mob.

Nws hloov tawm tias qhov kev daws tsuas yog sim?

Yog, koj pom qhov teeb meem, koj ntxiv cov kauj ruam xeem nyob rau ntawd. Ntawd yog, cov zis kuj tuaj yeem kuaj. Tej zaum nws tsis yooj yim heev, tab sis koj tuaj yeem tso qee cov cim - xyuas tias Cov Neeg Siv-cov ntaub ntawv raug ntsia ntawm no.

Kuv lub npe yog Timur. Nws yog qhov txias heev uas muaj cov lus ceeb toom txog kev teeb tsa Terraform li cas.

Kuv tseem tsis tau pib.

Kuv xav tias tej zaum ntawm lub rooj sab laj tom ntej no yuav muaj. Kuv muaj lus nug yooj yim. Yog vim li cas koj hardcoding tus nqi nyob rau hauv ib tug nyias muaj nyias ib module es tsis siv tfvars, i.e. yog vim li cas yog ib tug module nrog cov nqi zoo dua tfvars?

Ntawd yog, kuv yuav tsum sau ntawm no (swb: Production/environment/settings.tf): domain = kuj tsis paub meej, sau vpcnetwork, sib txawv vpcnetwork thiab stvars – Kuv puas tuaj yeem tau txais tib yam?

Qhov ntawd yog qhov peb ua. Peb xa mus rau qhov chaw teeb tsa module, piv txwv li.

Qhov tseem ceeb, qhov no yog xws li tfvars. Tfvars yog qhov yooj yim heev hauv qhov chaw sim. Kuv muaj tfvars rau qhov loj, rau me me. Thiab kuv pov ib cov ntaub ntawv mus rau hauv lub nplaub tshev. Thiab kuv tau txais qhov kuv xav tau. Thaum peb tab tom txiav kev tsim kho vaj tse, peb xav kom nws tuaj yeem saib thiab nkag siab tam sim ntawd txhua yam. Thiab yog li nws hloov tawm tias koj yuav tsum tau saib ntawm no, tom qab ntawd saib tfvars.

Puas muaj peev xwm muaj txhua yam hauv ib qhov chaw?

Yog, tfvars yog thaum koj muaj ib tus lej. Thiab nws tau siv ntau qhov chaw sib txawv nrog cov nuances sib txawv. Tom qab ntawd koj yuav pov tfvars thiab tau txais koj cov nuances. Thiab peb yog infrastructure li code nyob rau hauv nws purest daim ntawv. Kuv ntsia thiab nkag siab.

Nyob zoo! Koj puas tau ntsib cov xwm txheej uas huab cua cuam tshuam nrog qhov koj ua Terraform? Wb hais tias peb kho cov metadata. Muaj cov yuam sij ssh. Thiab Google tas li tso nws cov metadata thiab nws cov yuam sij nyob ntawd. Thiab Terraform ib txwm sau tias nws muaj kev hloov pauv. Tom qab txhua qhov kev khiav, txawm tias tsis muaj dab tsi hloov pauv, nws ib txwm hais tias nws yuav hloov kho daim teb tam sim no.

Nrog cov yuam sij, tab sis yog, ib feem ntawm cov txheej txheem cuam tshuam los ntawm qhov no, piv txwv li Terraform hloov tsis tau dab tsi. Peb tsis tuaj yeem hloov dab tsi nrog peb txhais tes. Peb mam li nyob nrog rau tam sim no.

Qhov ntawd yog, koj tau ntsib tej yam zoo li no, tab sis tsis tau tshwm sim, nws ua li cas thiab ua nws tus kheej li cas?

Hmoov tsis muaj.

Nyob zoo! Kuv lub npe yog Starkov Stanislav. Xa ntawv. ru pab. Yuav ua li cas koj daws qhov teeb meem ntawm generating ib tug tag rau ..., koj yuav ua li cas hla nws nyob rau hauv? Raws li kuv nkag siab nws, los ntawm Cov Neeg Siv - cov ntaub ntawv los qhia lub npe tswv tsev, teeb tsa Puppet rau? Thiab qhov thib ob ntawm cov lus nug. Koj yuav daws qhov teeb meem no li cas hauv SG, piv txwv li thaum koj tsim SG, ntau pua zaus ntawm tib hom, lub npe raug rau lawv yog dab tsi?

Cov piv txwv uas tseem ceeb heev rau peb, peb muab lawv lub npe zoo nkauj. Cov uas tsis xav tau, muaj ib qho kev ceeb toom tias qhov no yog pawg autoscale. Thiab hauv txoj kev xav koj tuaj yeem ntsia nws thiab tau txais ib qho tshiab.

Raws li qhov teeb meem nrog lub cim npe, tsis muaj teeb meem li ntawd, tab sis muaj xws li kev ua haujlwm. Thiab peb siv cov cim npe heev, hnyav heev, vim tias cov txheej txheem loj thiab kim. Thiab peb yuav tsum saib seb cov nyiaj yuav mus qhov twg, yog li ntawv tso cai rau peb txhawm rau txhawm rau qhov twg mus qhov twg. Thiab, raws li, kev tshawb nrhiav ib yam dab tsi uas txhais tau hais tias ntau nyiaj tau siv ntawm no.

Dab tsi ntxiv yog cov lus nug txog?

Thaum SG tsim ntau pua zaus, lawv puas yuav tsum tau paub qhov txawv li cas?

Tsis yog, tsis txhob. Ntawm txhua qhov piv txwv muaj ib tus neeg sawv cev uas tshaj tawm tias kuv muaj teeb meem. Yog tias tus neeg sawv cev tshaj tawm, ces tus neeg sawv cev paub txog nws thiab, tsawg kawg, nws qhov chaw nyob IP muaj. Koj twb khiav tau lawm. Qhov thib ob, peb siv Consul rau Discovery, qhov twg Kubernetes tsis yog. Thiab Consul kuj qhia qhov chaw nyob IP ntawm qhov piv txwv.

Qhov ntawd yog, koj puas tsom tshwj xeeb rau IP, thiab tsis yog lub npe tswv?

Nws yog tsis yooj yim sua rau navigate los ntawm hostname, i.e. muaj ntau ntawm lawv. Muaj cov cim cim - AE, thiab lwm yam. Koj tuaj yeem pom nws qhov chaw, koj tuaj yeem muab pov rau hauv kev tshawb nrhiav.

Nyob zoo! Kuv pom tau tias Terraform yog ib qho zoo, haum rau huab.

Tsis tas li ntawv xwb.

Qhov no yog cov lus nug uas txaus siab rau kuv. Yog tias koj txiav txim siab txav mus, hais, mus rau Bare Metal en masse nrog tag nrho koj qhov xwm txheej? Puas yuav muaj teeb meem? Lossis koj puas tseem yuav tau siv lwm yam khoom, piv txwv li, tib Ansible uas tau hais ntawm no?

Ansible yog me ntsis txog lwm yam. Ntawd yog, Ansible twb ua haujlwm thaum piv txwv tau pib. Thiab Terraform ua haujlwm ua ntej piv txwv pib. Hloov mus rau Bare Hlau - tsis muaj.

Tsis yog tam sim no, tab sis kev lag luam yuav los thiab hais tias: "Los ntawm."

Hloov mus rau lwm huab - yog, tab sis muaj qhov sib txawv me ntsis ntawm no. Koj yuav tsum sau Terraform code nyob rau hauv xws li ib txoj kev uas koj yuav hloov mus rau lwm yam huab nrog tsawg zog.

Thaum xub thawj, txoj haujlwm tau teeb tsa tias peb cov txheej txheem tag nrho yog qhov tsis txaus ntseeg, piv txwv li huab cua yuav tsum tsim nyog, tab sis qee lub sijhawm cov lag luam tau tso tseg thiab hais tias: "Okay, N xyoo tom ntej peb yuav tsis mus qhov twg, peb tuaj yeem siv cov kev pabcuam. los ntawm Amazon "

Terraform tso cai rau koj los tsim cov haujlwm Front-End, teeb tsa PagerDuty, cov ntaub ntawv doc, thiab lwm yam. Nws muaj ntau cov tails. Nws muaj peev xwm tswj tau tag nrho lub ntiaj teb no.

Ua tsaug rau daim ntawv qhia! Kuv kuj tau siv Terraform tau 4 xyoos tam sim no. Nyob rau theem ntawm kev hloov pauv mus rau Terraform, mus rau kev tsim kho vaj tse, mus rau cov lus piav qhia, peb tau ntsib nrog qhov xwm txheej uas ib tus neeg ua ib yam dab tsi los ntawm tes, thiab koj tab tom sim ua ib txoj kev npaj. Thiab kuv tau txais qee yam yuam kev nyob ntawd. Koj yuav daws cov teeb meem li cas? Yuav ua li cas koj thiaj nrhiav tau cov ntaub ntawv ploj uas tau teev tseg?

Feem ntau nrog peb txhais tes thiab ob lub qhov muag, yog tias peb pom ib yam dab tsi coj txawv txawv hauv daim ntawv tshaj tawm, ces peb txheeb xyuas qhov tshwm sim ntawm qhov ntawd, lossis peb tsuas yog tua. Feem ntau, rub thov yog ib qho khoom siv.

Yog tias muaj qhov yuam kev, koj puas rov qab? Koj puas tau sim ua qhov no?

Tsis yog, qhov no yog tus neeg qhov kev txiav txim siab thaum nws pom qhov teeb meem.

Tau qhov twg los: www.hab.com