Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Mopatim-aw nga ang mga developer sa Terraform nagtanyag labi ka kombenyente nga labing kaayo nga mga gawi alang sa pagtrabaho kauban ang imprastraktura sa AWS. Lamang adunay usa ka nuance. Sa paglabay sa panahon, ang gidaghanon sa mga palibot nagdugang, ang mga bahin makita sa matag usa. Mopakita hapit usa ka kopya sa aplikasyon stack sa silingang rehiyon. Ug ang Terraform code kinahanglan nga maampingong kopyahon ug i-edit sumala sa bag-ong mga kinahanglanon o paghimo og snowflake.

Ang akong report mahitungod sa mga pattern sa Terraform aron mabatukan ang kagubot ug manwal nga rutina sa dagko ug taas nga mga proyekto.

Video:

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

40 na ko, 20 ka tuig na ko sa IT. Nagtrabaho ko sa Ixtens sulod sa 12 ka tuig. Kami nakigbahin sa ecommerce-driven-development. Ug nagpraktis ako sa mga gawi sa DevOps sulod sa 5 ka tuig.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang akong istorya maghisgot bahin sa kasinatian sa usa ka proyekto sa usa ka kompanya kansang ngalan dili nako isulti, nagtago sa luyo sa usa ka kasabutan nga wala ibutyag.

Ang mga numero sa slide gihatag aron masabtan ang kasangkaran sa proyekto. Ug ang tanan nga akong isulti sa sunod may kalabotan sa Amazon.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Miapil ko niini nga proyekto 4 ka tuig na ang milabay. Ug ang pag-refactor sa imprastraktura sa bug-os nga paglihok, tungod kay ang proyekto mitubo. Ug kadtong mga pattern nga gigamit, dili na sila angay. Ug gihatagan ang tanan nga giplano nga pag-uswag sa proyekto, kinahanglan nga maghimo usa ka bag-ong butang.

Salamat kang Matvey, kinsa misugilon kanamo kagahapon sa nahitabo sa Dodo Pizza. Mao ni ang nahitabo namo 4 years ago.

Ang mga developers miabut ug nagsugod sa paghimo sa infrastructure code.

Ang labing klaro nga mga hinungdan ngano nga kini gikinahanglan mao ang panahon sa pagpamaligya. Kinahanglan nga masiguro nga ang koponan sa DevOps dili usa ka bottleneck sa paglansad. Ug taliwala sa ubang mga butang, ang Terraform ug Puppet gigamit sa labing una nga lebel.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang Terraform usa ka open source nga proyekto gikan sa HashiCorp. Ug alang sa mga wala mahibal-an kung unsa kini, ang sunod nga mga slide.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang imprastraktura isip code nagpasabot nga mahimo natong ihulagway ang atong imprastraktura ug hangyoon ang pipila ka mga robot sa pagsiguro nga makuha nato ang mga kahinguhaan nga atong gihulagway.

Pananglitan, kinahanglan namon ang usa ka virtual nga makina. Atong ihulagway, idugang ang pipila ka gikinahanglan nga mga parameter.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Pagkahuman niana, among i-configure ang pag-access sa Amazon sa console. Ug pangayo alang sa plano sa Terraform. Ang plano sa Terraform moingon: "Ok, alang sa imong kapanguhaan, mahimo namon kini nga mga butang." Ug labing menos usa ka kapanguhaan ang idugang. Ug walay mga kausaban nga gipaabot.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Pagkahuman sa tanan nga angay kanimo, mahimo nimong pangutan-on ang Terraform nga magamit ug ang Terraform maghimo usa ka pananglitan alang kanimo, ug makakuha ka usa ka virtual nga makina sa imong panganod.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Dugang pa, nag-uswag ang among proyekto. Nagdugang kami og pipila ka mga pagbag-o didto. Nangayo kami og dugang nga mga higayon, nagdugang kami og 53 ka mga entries.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ug among gisubli. Palihog pagplano. Atong makita kung unsa nga mga pagbag-o ang giplano. Pag-aplay. Ug mao nga ang atong imprastraktura motubo.

Ang Terraform naggamit sa usa ka butang sama sa mga file sa estado. Kana mao, gitipigan niini ang tanan nga mga pagbag-o nga moadto sa Amazon sa usa ka file, diin alang sa matag kapanguhaan nga imong gihulagway, adunay katugbang nga mga kapanguhaan nga gihimo sa Amazon. Busa, kung giusab ang paghulagway sa usa ka kapanguhaan, nahibal-an gyud ni Terraform kung unsa ang kinahanglan usbon sa Amazon.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Kini nga mga file sa estado orihinal nga mga file lamang. Ug among gitipigan sila sa Git, nga dili kaayo kombenyente. Kanunay adunay nakalimot sa paghimo sa mga pagbag-o, ug adunay daghang mga panagbangi.

Karon posible nga gamiton ang backend, i.e. Gipakita ang Terraform kung asa nga balde, diin ang yawe kinahanglan nga maluwas ang file sa estado. Ug ang Terraform mismo ang mag-atiman sa pagkuha niini nga file sa estado, nga buhaton ang tanan nga salamangka ug ibalik ang katapusan nga sangputanan.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Nagkadako ang among imprastraktura. Ania ang among code. Ug karon dili kami gusto nga maghimo lang usa ka virtual nga makina, gusto namon nga adunay usa ka palibot sa pagsulay.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Gitugotan ka sa Terraform nga maghimo usa ka butang sama sa usa ka module, i.e. ihulagway ang parehas nga butang sa pipila nga folder.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ug, pananglitan, sa pagsulay, tawga kini nga module ug kuhaa ang parehas nga butang nga kung gibuhat namon ang Terraform nga magamit sa module mismo. Ania ang code alang sa pagsulay.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Alang sa produksiyon, mahimo kaming magpadala pipila ka mga pagbag-o didto, tungod kay sa pagsulay wala kami magkinahanglan daghang mga higayon, sa paghimo daghang mga higayon nga magamit.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ug unya mobalik ako sa proyekto. Kini usa ka lisud nga buluhaton, ang imprastraktura giplano nga dako kaayo. Ug kinahanglan nga ibutang ang tanan nga code aron kini mahimong kombenyente alang sa tanan: alang sa mga nagpahigayon sa pagmentinar niini nga code, ug alang sa mga nagbag-o. Ug giplanohan nga ang bisan kinsa nga developer mahimong moadto ug ayohon ang imprastraktura kung gikinahanglan alang sa iyang bahin sa plataporma.

Kini usa ka punoan sa direktoryo nga girekomenda sa HashiCorp kung ikaw adunay usa ka dako nga proyekto ug makatarunganon nga bahinon ang tibuuk nga imprastraktura sa pipila ka gagmay nga mga piraso, ug ihulagway ang matag piraso sa usa ka lahi nga folder.

Adunay usa ka halapad nga librarya sa kapanguhaan, mahimo nimong tawagan ang parehas nga butang sa pagsulay ug sa paghimo.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Sa among kaso, kini dili hingpit nga angay, tungod kay ang test stack alang sa mga developers o alang sa pagsulay kinahanglan nga makuha sa usa ka paagi nga mas simple. Ug dili ko gusto nga moagi sa mga folder ug mag-apply sa husto nga pagkasunod-sunod, ug mabalaka nga ang base mobangon, ug unya ang pananglitan nga naggamit niini nga base mobangon. Busa, ang tanan nga pagsulay gilunsad gikan sa usa ka folder. Ang parehas nga mga module gitawag didto, apan ang tanan naagi sa usa ka dagan.

Giatiman sa Terraform ang tanan nga mga dependency. Ug kini kanunay nga nagmugna og mga kapanguhaan sa kana nga pagkasunod-sunod aron makakuha ka usa ka IP address, pananglitan, gikan sa usa ka bag-ong nahimo nga pananglitan, ug makuha kini nga IP address sa pagsulod sa ruta53.

Dugang pa, ang plataporma dako kaayo. Ug ang pagpadagan sa usa ka test stack, bisan kung sa usa ka oras, bisan kung sa 8 ka oras, usa ka mahal nga negosyo.

Ug gi-automate namo kini nga negosyo. Ug ang trabaho sa Jenkins nagtugot sa stack nga modagan. Gikinahanglan ang paglansad sa usa ka hangyo sa pagbitad niini uban ang mga pagbag-o nga gusto sulayan sa developer, ipiho ang tanan nga kinahanglan nga mga kapilian, sangkap, ug gidak-on. Kung gusto niya ang pagsulay sa pasundayag, mahimo siyang magkuha daghang mga higayon. Kung kinahanglan lang niyang susihon kung adunay usa ka porma nga bukas, mahimo siyang magsugod sa minimum nga sweldo. Ug ipakita usab kung gikinahanglan ang usa ka cluster o dili, ug uban pa.

Ug dayon giduso ni Jenkins ang usa ka script sa kabhang nga gamay nga giusab ang code sa folder sa Terraform. Gikuha ang wala kinahanglana nga mga file, gidugang ang kinahanglan nga mga file. Ug unya, sa usa ka run sa Terraform nga magamit, ang stack mibangon.

Ug unya adunay ubang mga lakang nga dili nako gusto nga buhaton.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Tungod sa kamatuoran nga alang sa pagsulay kinahanglan namon ang gamay nga kapilian kaysa sa produksiyon, kinahanglan namon nga maghimo mga kopya sa mga module aron sa kini nga mga kopya madugangan namon ang mga bahin nga gikinahanglan lamang sa pagsulay.

Ug nahitabo nga sa pagsulay, ingon og gusto nimo nga sulayan ang mga pagbag-o nga sa katapusan moadto sa produksiyon. Apan sa pagkatinuod, usa ka butang ang gisulayan, ug usa ka gamay nga kalainan ang gigamit sa produksyon. Ug adunay gamay nga break sa sumbanan nga sa produksiyon ang tanan nga mga pagbag-o gipadapat sa operation team. Ug usahay kini nahimo nga ang mga pagbag-o nga kinahanglan nga gikan sa pagsulay hangtod sa paghimo, nagpabilin sila sa lain nga bersyon.

Dugang pa, adunay ingon nga problema nga ang usa ka bag-ong serbisyo gidugang, nga gamay nga lahi sa pipila nga naa na. Ug imbes nga usbon ang naa na nga module, kinahanglan nimo nga maghimo usa ka kopya niini ug idugang ang kinahanglan nga mga pagbag-o.

Sa pagkatinuod, ang Terraform dili tinuod nga pinulongan. Kini usa ka deklarasyon. Kung kinahanglan namon nga ipahayag ang usa ka butang, nan among ipahayag kini. Ug kini tanan molihok.

Sa usa ka punto, sa dihang naghisgot sa usa sa akong mga hangyo sa pagbitad, usa sa akong mga kaubanan miingon nga dili kinahanglan nga maghimo ug mga snowflake. Naglibog ko unsay iyang gipasabot. Adunay ingon nga siyentipikong kamatuoran nga sa kalibutan walay duha ka managsama nga mga snowflake, silang tanan gamay, apan lahi. Ug sa pagkadungog nako niini, gibati dayon nako ang tibuuk nga gibug-aton sa code sa Terraform. Tungod kay kung gikinahanglan ang pagbalhin gikan sa bersyon ngadto sa bersyon, ang Terraform nanginahanglan usa ka pagbag-o sa kadena nga nagputol, ie ang code dili na tugma sa sunod nga bersyon. Ug kinahanglan kong maghimo usa ka hangyo sa pagbitad, nga nagsakup sa hapit katunga sa mga file sa imprastraktura, aron madala ang imprastraktura sa sunod nga bersyon sa Terraform.

Ug pagkahuman sa ingon nga snowflake nagpakita, ang tanan nga Terraform code nga among nahimo nga usa ka dako, dako nga pundok sa niyebe.

Alang sa usa ka eksternal nga developer nga wala sa operasyon, dili kini hinungdanon alang kaniya, tungod kay naghimo siya usa ka hangyo sa pagbitad, nagsugod ang iyang kapanguhaan. Ug mao na, dili kini iyang kabalaka. Ug ang koponan sa DevOps nga nagsiguro nga OK ra ang tanan kinahanglan nga buhaton ang tanan nga kini nga mga pagbag-o. Ug ang gasto niini nga mga pagbag-o miuswag kaayo, sa matag dugang nga snowflake.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Adunay usa ka istorya kung giunsa ang usa ka estudyante sa usa ka seminar nagdrowing og duha ka perpekto nga mga bilog nga adunay chalk sa pisara. Ug natingala ang magtutudlo kung giunsa niya pagdrowing nga hapsay nga wala’y kompas. Ang estudyante mitubag: "Simple ra kaayo, akong gigaling ang karne sulod sa duha ka tuig sa kasundalohan."

Ug gikan sa upat ka tuig nga naa ko sa kini nga proyekto, naghimo ako og Terraform sulod sa mga duha ka tuig. Ug, siyempre, ako adunay pipila ka mga limbong, pipila ka mga tip kung giunsa ang pagpayano sa Terraform code, pagtrabaho uban niini sama sa usa ka programming language ug pagpakunhod sa palas-anon sa mga developers kinsa kinahanglan nga magpadayon niini nga code nga labing bag-o.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang unang butang nga gusto nakong sugdan mao ang Symlinks. Ang Terraform adunay daghang nagbalik-balik nga code. Pananglitan, ang pagtawag sa usa ka tighatag sa halos matag punto diin kita maghimo usa ka piraso sa imprastraktura parehas. Ug makatarunganon nga ibutang kini sa usa ka lahi nga papa. Ug bisan asa ang provider gikinahanglan sa paghimo sa Symlinks niini nga file.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Pananglitan, gigamit nimo ang pag-angkon nga papel sa produksiyon, nga nagtugot kanimo nga makakuha mga katungod sa pag-access sa pipila ka eksternal nga account sa Amazon. Ug pinaagi sa pagbag-o sa usa ka file, ang tanan nga nahabilin nga naa sa punoan sa kapanguhaan adunay kinahanglan nga mga katungod aron mahibal-an sa Terraform kung unsang bahin sa Amazon ang ma-access.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Diin ang Symlinks dili molihok? Sama sa akong giingon, ang Terraform adunay mga file sa estado. Ug sila bugnaw kaayo. Apan ang tinuod mao nga gisugdan sa Terraform ang backend sa una. Ug dili siya makagamit sa bisan unsang mga baryable sa kini nga mga parameter, kinahanglan sila kanunay nga isulat sa teksto.

Ug ingon usa ka sangputanan, kung adunay maghimo usa ka bag-ong kapanguhaan, gikopya niya ang bahin sa code gikan sa ubang mga folder. Ug mahimo siyang masayop sa yawe o sa balde. Pananglitan, naghimo siya usa ka butang nga sandbox gikan sa usa ka sandbox, ug dayon gihimo kini sa produksiyon. Ug mao nga mahimo nga ang balde sa produksiyon gamiton gikan sa sandbox. Siyempre, makit-an dayon nila kini. Mahimong posible nga ayohon kini, apan bisan pa kini usa ka pag-usik sa oras ug, sa usa ka sukod, mga kapanguhaan.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Unsay sunod natong buhaton? Sa wala pa magtrabaho kauban ang Terraform, kinahanglan nimo nga unahon kini. Sa panahon sa pagsugod, gi-download sa Terraform ang tanan nga mga plugin. Sa usa ka punto, sila nabuak gikan sa usa ka monolith ngadto sa usa ka mas microservice nga arkitektura. Ug kinahanglan nimo kanunay nga buhaton ang Terraform init aron makuha niini ang tanan nga mga module, tanan nga mga plugins.

Ug mahimo nimong gamiton ang script sa shell, nga, una, makuha ang tanan nga mga variable. Ang script sa Shell walay kutub. Ug, ikaduha, ang paagi. Kung kanunay natong gamiton ang dalan nga anaa sa repository isip yawe sa file sa estado, nan, sumala niana, ang sayup dili iapil dinhi.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Asa makuha ang datos? JSON nga file. Gitugotan ka sa Terraform sa pagsulat sa imprastraktura dili lamang sa hcl (HashiCorp Configuration Language), apan usab sa JSON.

Ang JSON dali nga basahon gikan sa usa ka script sa shell. Sa ingon, mahimo nimong ibutang ang usa ka file sa pag-configure nga adunay usa ka balde sa usa ka lugar. Ug gamita kini nga balde sa Terraform code ug sa shell script para sa pagsugod.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ngano nga importante nga adunay usa ka Terraform nga balde? Tungod kay adunay usa ka butang sama sa hilit nga mga file sa estado. Sa ato pa, kung magpataas ako usa ka kapanguhaan, aron isulti sa Amazon: "Palihug pagpataas pananglitan", kinahanglan nako nga ipiho ang daghang gikinahanglan nga mga parameter.

Ug kini nga mga identifier gitipigan sa ubang folder. Ug mahimo nako kini ug isulti: "Terraform, palihug pagdagan sa file sa estado sa kana nga kapanguhaan ug kuhaa ako kini nga mga identifier." Ug sa ingon adunay usa ka matang sa panaghiusa tali sa lainlaing mga rehiyon o palibot.

Dili kanunay posible ang paggamit sa usa ka hilit nga file sa estado. Pananglitan, mano-mano ka nga naghimo og VPC. Ug ang Terraform code nga nagmugna sa VPC nagmugna og lahi nga VPC nga nagkinahanglan og taas nga panahon ug kinahanglan nimo nga i-adjust ang usa ngadto sa usa, aron imong magamit ang mosunod nga limbong.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Kana mao, ang paghimo sa usa ka module nga, ingon kaniadto, naghimo sa VPC ug naghatag kanimo mga identifier, apan sa tinuud adunay usa ka file nga adunay mga hardcoded nga kantidad nga magamit sa paghimo sa parehas nga pananglitan.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Dili kanunay kinahanglan nga i-save ang file sa estado sa panganod. Pananglitan, sa pagsulay sa mga module, mahimo nimong gamiton ang backend initialization, kung ang file ma-save ra sa disk sa panahon sa pagsulay.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Karon gamay bahin sa pagsulay. Unsa ang masulayan sa Terraform? Tingali, daghan ang posible, apan akong hisgutan kining 4 ka butang.

Ang HashiCorp adunay pagsabot kung unsaon pag-format ang Terraform code. Ug gitugotan ka sa Terraform fmt nga i-format ang code nga imong gi-edit sumala sa kana nga pagtuo. Tungod niini, kinahanglan nga susihon sa mga pagsulay kung ang pag-format nagtugma sa gibilin sa HashiCorp, aron dili nimo kinahanglan nga usbon ang lokasyon sa mga bracket, ug uban pa.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang sunod mao ang Terraform validate. Nagbuhat kini labi pa sa usa ka pagsusi sa syntax - ala, ang tanan nga mga bracket gipares. Unsa ang importante dinhi? Kita adunay usa ka nipis kaayo nga imprastraktura. Kini adunay daghang lainlaing mga folder. Ug sa matag usa kinahanglan nimo nga padaganon ang Terraform validate.

Tungod niini, aron mapadali ang pagsulay, nagpadagan kami daghang mga proseso nga managsama gamit ang parallel.

Ang parallel usa ka cool nga butang, gamita kini.

Apan sa matag higayon nga ang Terraform gisugdan, kini moadto sa HashiCorp ug mangutana, "Unsa ang pinakabag-o nga mga plugins? Ug ang plugin nga naa nako sa cache - kini ba o dili ang usa? Ug kini mihinay sa matag lakang.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Kung isulti kanimo sa Terraform kung asa ang mga plugins, ang Terraform moingon: "OK, tingali kini ang labing bag-o nga butang nga naa. Dili ko moadto bisan asa, sugdan nako ang pag-validate sa imong Terraform code dayon."

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Aron mapuno ang folder sa gikinahanglan nga mga plugin, kami adunay usa ka yano kaayo nga Terraform code nga kinahanglan lang nga masugdan. Dinhi, siyempre, kinahanglan nimo nga ipiho ang tanan nga mga provider nga sa usa ka paagi moapil sa imong code, kung dili ang Terraform moingon: "Wala ko kaila sa bisan unsang provider, tungod kay wala kini sa cache."

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang sunod mao ang plano sa Terraform. Sa ako nang giingon, cyclical ang development. Naghimo kami og code nga adunay mga pagbag-o. Ug unya kinahanglan nimo nga mahibal-an kung unsang mga pagbag-o ang giplano alang sa imprastraktura.

Ug kung ang imprastraktura dako kaayo, mahimo nimong usbon ang usa ka module, ayohon ang pipila ka palibot sa pagsulay o pipila ka piho nga rehiyon, ug bungkagon ang pipila nga silingan. Busa, ang usa ka Terraform nga plano kinahanglan nga himoon alang sa tibuok nga imprastraktura ug ipakita kung unsang mga pagbag-o ang giplano.

Mahimo nimo kini sa maalamon nga paagi. Pananglitan, nagsulat kami usa ka script sa Python nga nagsulbad sa mga dependency. Ug depende sa nabag-o: usa ka module sa Terraform o usa lang ka piho nga sangkap, naghimo kini mga plano alang sa tanan nga nagsalig nga mga folder.

Ang plano sa Terraform kinahanglan buhaton kung gihangyo. Sa labing gamay mao kana ang atong buhaton.

Ang mga pagsulay, siyempre, maayo nga buhaton alang sa matag pagbag-o, alang sa matag pasalig, apan ang mga plano usa ka mahal nga butang. Ug giingon namon sa hangyo sa pagbitad: "Palihug ihatag kanako ang mga plano." Nagsugod ang robot. Ug ipadala sa mga komento o ilakip ang tanan nga mga plano nga gipaabut gikan sa imong mga pagbag-o.

Ang plano usa ka mahal nga butang. Nagkinahanglan kini og panahon tungod kay ang Terraform moadto sa Amazon ug nangutana, "Naglungtad pa ba kini nga higayon? Ang kini ba nga autoscale adunay parehas nga mga parameter? ” Ug aron mapadali kini, mahimo nimong gamiton ang usa ka parameter sama sa refresh=false. Nagpasabot kini nga ang Terraform magwagtang sa estado sa S3. Ug motuo nga ang estado motakdo gayud sa unsay naa sa Amazon.

Ang ingon nga plano sa Terraform labi ka paspas, apan ang estado kinahanglan nga motugma sa imong imprastraktura, ie, sa usa ka lugar, usahay ang pag-refresh sa Terraform kinahanglan magsugod. Ang pag-refresh sa Terraform mao gyud kana, aron ang estado magtugma kung unsa ang naa sa tinuud nga imprastraktura.

Ug kinahanglan kong isulti bahin sa kaluwasan. Dinhi na unta kini magsugod. Kung diin imong gipadagan ang Terraform ug ang Terraform nagtrabaho sa imong imprastraktura, adunay usa ka kahuyang. Kana mao, ikaw sa esensya nagpatuman sa code. Ug kung ang hangyo sa pagbitad adunay usa ka matang sa malisyosong code, nan mahimo kini nga ipatuman sa usa ka imprastraktura nga adunay daghang pag-access. Busa, pag-amping kung asa nimo ilunsad ang Terraform nga plano.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang sunod nga butang nga gusto nakong hisgutan mao ang pagsulay sa datos sa gumagamit.

Unsa ang user-data? Sa Amazon, kung maghimo kami usa ka pananglitan, mahimo kaming magpadala usa ka matang sa sulat gikan sa pananglitan - meta data. Kung nagsugod ang usa ka instance, kasagaran ang cloud init kanunay nga naa sa mga higayon. Gibasa ni Cloud init kini nga sulat ug miingon: "OK, karon usa ako ka load balancer." Ug sumala niini nga mga lagda, siya naghimo sa pipila ka mga aksyon.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Apan, ikasubo, kung buhaton namon ang plano sa Terraform ug magamit ang Terraform, ang data sa gumagamit ingon kini nga slurry sa mga numero. Sa ato pa, padad-an ra ka niya og hash. Ug ang makita ra nimo sa plano kung adunay mga pagbag-o o ang hash magpabilin nga parehas.

Ug kung dili nimo kini tagdon, nan ang pipila nga gibunalan nga text file mahimong moadto sa Amazon, sa tinuud nga imprastraktura.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Sa laing paagi, mahimo nimong ipiho dili ang tibuuk nga imprastraktura sa panahon sa pagpatuman, apan ang template lamang. Ug sa code, ingna: "Palihug ipakita kini nga template alang kanako." Ug ingon usa ka sangputanan, mahimo ka makakuha usa ka pag-imprinta kung unsa ang hitsura sa imong data sa Amazon.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang laing kapilian mao ang paggamit og module aron makamugna og user-data. Imong ipadapat kini nga module. Kuhaa ang file sa disk. Itandi kini sa reperensiya. Ug sa ingon, kung ang pipila ka jun nakahukom nga ayohon ang gamay nga datos sa gumagamit, nan ang imong mga pagsulay moingon: "OK, adunay pipila ka mga pagbag-o dinhi ug didto - kini normal."

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ang sunod nga butang nga gusto nakong hisgutan mao ang pag-apply sa Automate Terraform.

Siyempre, kini igo nga makahadlok nga buhaton ang Terraform nga magamit sa awtomatikong mode, tungod kay kinsa ang nahibal-an kung unsang mga pagbag-o ang moabut didto ug kung unsa kini makadaot sa usa ka buhi nga imprastraktura.

Alang sa usa ka palibot sa pagsulay, kini tanan maayo. Kana mao, ang usa ka trabaho nga nagmugna usa ka palibot sa pagsulay mao ang kinahanglan sa tanan nga mga developer. Ug ang ingon nga ekspresyon nga "tanan nagtrabaho alang kanako" dili usa ka kataw-anan nga meme, apan pamatuod nga ang usa ka tawo naglibog, nagpataas sa usa ka stack, naglunsad og pipila ka mga pagsulay niini nga stack. Ug gisiguro niya nga maayo ang tanan didto ug miingon: "OK, ang code nga akong gipagawas nasulayan na."

Sa produksiyon, sandbox, ug uban pang mga palibot nga mas kritikal sa negosyo, luwas ang partially paggamit sa pipila ka mga kapanguhaan tungod kay dili kini hinungdan sa bisan kinsa nga mamatay. Kini mao ang: autoscale nga mga grupo, mga grupo sa seguridad, mga tahas, ruta53 ug didto ang listahan mahimong dako kaayo. Apan pagbantay kung unsa ang nahitabo, basaha ang mga taho sa mga awtomatiko nga aplikasyon.

Kung diin kini delikado o makahadlok nga gamiton, pananglitan, kung kini ang pipila nga nagpadayon nga mga kapanguhaan, gikan sa usa ka database, dayon pagkuha mga taho nga adunay wala magamit nga mga pagbag-o sa pipila nga mga bahin sa imprastraktura. Ug ang inhenyero gidumala na sa pagpadagan sa mga trabaho aron magamit o buhaton kini gikan sa iyang console.

Ang Amazon adunay usa ka butang sama sa pagtapos sa proteksyon. Ug kini makapanalipod sa pipila ka mga kaso gikan sa mga pagbag-o nga wala gikinahanglan alang kanimo. Mao nga ang Terraform miadto sa Amazon ug nag-ingon "Kinahanglan kong patyon kini nga higayon aron makahimo usa pa". Ug ang Amazon nag-ingon, "Pasensya, dili karon. Kami adunay proteksyon sa Terminate. ”

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ug ang icing sa cake mao ang pag-optimize sa code. Kung nagtrabaho kami sa Terraform code, kinahanglan namon nga ipasa ang daghang mga parameter sa module. Kini ang mga parameter nga gikinahanglan aron makahimo og usa ka matang sa kapanguhaan. Ug ang code nahimo nga daghang mga lista sa mga parameter nga kinahanglan ipasa gikan sa module hangtod sa module, gikan sa module hangtod sa module, labi na kung ang mga module gisalag.

Ug lisod kaayo basahon. Lisod kaayo ang pagrepaso niini. Ug kanunay nga nahibal-an nga ang pipila nga mga parameter gisusi ug dili sila ang kinahanglan. Ug naggasto kini og panahon ug salapi aron ayohon kini sa ulahi.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Busa, gisugyot ko nga gamiton nimo ang ingon nga butang ingon usa ka komplikado nga parameter nga naglakip sa usa ka piho nga punoan sa mga kantidad. Kana mao, kinahanglan nimo ang usa ka matang sa folder diin naa nimo ang tanan nga mga kantidad nga gusto nimo nga maangkon sa usa ka matang sa palibot.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Ug pinaagi sa pagtawag niini nga module, mahimo nimong makuha ang usa ka kahoy nga namugna sa usa ka sagad nga module, nga mao, sa usa ka sagad nga module nga parehas nga molihok alang sa tibuuk nga imprastraktura.

Niini nga module, mahimo nimong buhaton ang pipila ka mga kalkulasyon gamit ang usa ka bag-ong bahin sa Terraform isip mga lokal. Ug unya sa usa ka output, mag-isyu og usa ka matang sa komplikadong parameter, nga mahimong maglakip sa mga hash, arrays, ug uban pa.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Niini, ang tanan nga labing kaayo nga nakit-an nga akong natapos. Ug gusto ko nga isulti ang usa ka istorya bahin sa Columbus. Sa diha nga siya nangita og salapi alang sa iyang ekspedisyon sa pagdiskobre sa India (sama sa iyang gihunahuna kaniadto), walay usa nga mituo kaniya ug mituo nga kini imposible. Unya siya miingon: "Siguraduha nga ang itlog dili mahulog." Ang tanan nga mga bangkero, dato kaayo ug lagmit maalamon nga mga tawo, misulay sa pagbutang sa itlog sa usa ka paagi, ug kini nahulog sa tanang panahon. Dayon gikuha ni Columbus ang itlog, gipugos kini og gamay. Ang kabhang nadugmok ug ang itlog nagpabilin nga wala maglihok. Miingon sila, "Oh, sayon ​​ra kaayo kana!" Ug si Columbus mitubag: "Oo, kini yano ra kaayo. Ug kung ablihan nako ang India, ang tanan mogamit niini nga ruta sa pamatigayon.

Ug ang bag-o lang nako nga gisulti kanimo lagmit yano ug walay hinungdan nga mga butang. Ug kung nahibal-an nimo ang bahin niini ug nagsugod sa paggamit niini, naa kini sa han-ay sa mga butang. Busa gamita kini. Ug kung kini mga normal nga butang alang kanimo, nan labing menos nahibal-an nimo kung giunsa ang pagbutang usa ka itlog aron dili kini mahulog.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Sumaryo naton:

  • Sulayi nga likayan ang mga snowflake. Ug ang gamay nga mga snowflake, mas gamay nga mga kapanguhaan nga kinahanglan nimo aron mahimo ang bisan unsang mga pagbag-o sa imong tibuuk nga dagkong imprastraktura.
  • Kanunay nga pagbag-o. Kana mao, kung adunay mga pagbag-o nga nahitabo sa code, kinahanglan nimo nga dad-on ang imong imprastraktura sa linya sa kini nga mga pagbag-o sa labing madali. Dili kinahanglan nga adunay usa ka sitwasyon kung adunay moabut sa duha o tulo ka bulan aron tan-awon ang Elasticsearch, maghimo usa ka plano sa Terraform, ug adunay daghang mga pagbag-o nga wala niya damha. Ug nagkinahanglag daghang panahon aron mabalik ang tanan.
  • Mga pagsulay ug automation. Ang mas daghang code nga imong natabonan sa mga pagsulay ug mga feature, mas dako ang imong pagsalig nga imong gibuhat ang tanan sa husto. Ug ang awtomatik nga pagpadala makadugang sa imong pagsalig sa daghang mga higayon.
  • Ang code alang sa pagsulay ug mga palibot sa produksiyon kinahanglan nga halos parehas. Praktikal, tungod kay pagkahuman sa tanan, ang produksiyon medyo lahi ug adunay pipila nga mga nuances nga molapas sa palibot sa pagsulay. Apan bisan pa niana, plus o minus kini mahimong ihatag.
  • Ug kung ikaw adunay daghang Terraform code ug nagkinahanglan kini og daghang panahon aron mapadayon kini nga code nga labing bag-o, nan dili pa ulahi ang pag-refactor ug paghimo niini sa maayo nga porma.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

  • dili mausab nga imprastraktura. Paghatud sa AMI sa iskedyul.
  • Structure para sa route53 kung daghan kag entry ug gusto nimo nga naa sila sa makanunayon nga pagkahan-ay.
  • Makig-away batok sa mga limitasyon sa rate sa API. Mao kini ang giingon sa Amazon, "Mao na, dili na ako makadawat sa bisan unsang mga hangyo, palihug paghulat." Ug ang katunga sa buhatan naghulat hangtud nga kini makalusad sa iyang imprastraktura.
  • spot nga mga higayon. Ang Amazon dili usa ka barato nga panghitabo ug ang mga lugar nagtugot kanimo nga makatipig og daghan. Ug didto mahimo nimong isulti ang usa ka tibuuk nga taho bahin niini.
  • Mga tahas sa seguridad ug IAM.
  • Pagpangita alang sa nawala nga mga kahinguhaan, kung adunay mga higayon nga wala ka nahibal-an nga gigikanan sa Amazone, mokaon sila og salapi. Bisan kung ang mga higayon nagkantidad og $100-150 matag bulan, kini labaw pa sa $1 matag tuig. Ang pagpangita sa ingon nga mga kapanguhaan usa ka mapuslanon nga negosyo.
  • Ug gitagana nga mga higayon.

Mga sumbanan sa Terraform aron mabuntog ang kagubot ug manual nga rutina. Maxim Kostrikin (Ixtens)

Kanang tanan para nako. Ang Terraform bugnaw kaayo, gamita kini. Salamat!

Ang imong mga pangutana

Salamat sa report! Ikaw adunay usa ka estado nga file sa S3, apan unsaon nimo pagsulbad ang problema nga daghang mga tawo ang makakuha niini nga file sa estado ug mosulay sa pag-deploy?

Una, wala kami nagdali. Ikaduha, adunay mga bandila, diin among gitaho nga kami nagtrabaho sa usa ka piraso sa code. Kana mao, bisan pa sa kamatuoran nga ang imprastraktura dako kaayo, wala kini magpasabot nga adunay kanunay nga naggamit sa usa ka butang. Ug kung adunay usa ka aktibo nga hugna, kini usa ka problema, among gitipigan ang mga file sa estado sa Git. Importante kini, kung dili adunay maghimo usa ka file sa estado, ug kinahanglan namon nga mano-mano nga kolektahon kini sa usa ka tapok aron makapadayon pa. Karon wala nay ingon niana nga problema. Sa kinatibuk-an, gisulbad sa Terraform kini nga problema. Ug kung adunay kanunay nga pagbag-o, mahimo nimong gamiton ang mga kandado nga makapugong sa imong gisulti.

Gigamit ba nimo ang open source o negosyo?

Wala’y negosyo, kana mao, ang tanan nga mahimo nimong adtoan ug i-download nga libre.

Ako si Stanislav. Gusto ko nga maghimo usa ka gamay nga pagdugang. Gihisgutan nimo ang bahin sa Amazon nga nagtugot kanimo sa paghimo sa usa ka pananglitan nga dili mapatay. Anaa usab kini sa Terraform mismo, sa Life Second block, mahimo nimong ireseta ang pagdili sa pagbag-o, o pagdili sa paglaglag.

Limitado sa panahon. Maayong punto.

Gusto sab kong mangutana ug duha ka butang. Una, naghisgot ka bahin sa pagsulay. Nakagamit ka ba og bisan unsang mga himan sa pagsulay? Nakadungog ko bahin sa Test Kitchen plugin. Tingali adunay lain. Ug mangutana ko bahin sa Local Values. Sa unsang paagi sila lahi sa mga Input Variable? Ug nganong dili man nako ma-parametrize ang usa ka butang pinaagi lamang sa Local Values? Gisulayan nako nga atubangon kini nga hilisgutan, apan sa usa ka paagi wala nako mahibal-an kini sa akong kaugalingon.

Mahimo natong hisgotan ang mas detalyado luyo niini nga hawanan. Ang mga himan sa pagsulay mao ang among kompleto nga hinimo sa kaugalingon. Walay bisan unsa didto sa pagsulay. Sa kinatibuk-an, adunay mga kapilian kung ang awtomatik nga mga pagsulay nagpataas sa imprastraktura sa usa ka lugar, susiha nga OK ra kini, ug dayon gub-a ang tanan nga adunay usa ka taho nga ang imong imprastraktura maayo pa. Wala kami niana tungod kay ang mga test stack nagdagan kada adlaw. Ug igo na kana. Ug kung ang usa ka butang magsugod sa pagkaguba, nan kini magsugod sa pagkaguba nga wala naton kini gisusi sa ubang lugar.

Mahitungod sa Local Values, atong ipadayon ang panag-istoryahanay sa gawas sa mga tigpaminaw.

Hello! Salamat sa report! Very informative. Giingon nimo nga daghan ka nga parehas nga tipo sa code aron ihulagway ang imprastraktura. Nakahunahuna ka ba sa paghimo niini nga code?

Nindot nga pangutana, salamat! Ang punto mao nga kung gamiton nato ang imprastraktura isip code, atong hunahunaon nga atong tan-awon ang code ug masabtan kung unsa nga matang sa imprastraktura ang anaa sa luyo niini nga code. Kung ang code namugna, nan kinahanglan naton mahanduraw kung unsa nga code ang mabuhat aron masabtan kung unsang klase nga imprastraktura ang naa didto. O nagmugna kami sa code, gitugyan kini ug, sa tinuud, nakuha namon ang parehas nga butang. Busa, mipadayon kami sa paagi nga among gisulat, nakuha namo kini. Dugang pa, ang mga generator nagpakita sa ulahi, sa dihang nagsugod kami sa paghimo. Ug ulahi na kaayo aron magbag-o.

Nakadungog ka ba sa jsonnet?

Dili

Tan-awa, nindot kaayo ni nga butang. Nakita nako ang usa ka piho nga kaso diin mahimo nimo kini magamit ug makamugna usa ka istruktura sa datos.

Maayo ang mga generator kung naa nimo, sama sa joke bahin sa shaving machine. Kana mao, sa unang higayon nga ang nawong lahi, apan ang tanan adunay parehas nga nawong. Ang mga generator bugnaw kaayo. Apan, sa walay palad, ang among mga nawong medyo lahi. Kini ang problema.

Tan-awa lang. Salamat!

Ako si Maxim, taga Sberbank ko. Gisulti nimo ang gamay nga gisulayan nimo nga dad-on ang Terraform sa usa ka analogue sa usa ka programming language. Dili ba mas dali gamiton ang Ansible?

Lahi kaayo kini nga mga butang. Ang Ansible makahimo og mga kapanguhaan, ug ang Puppet makahimo og mga kapanguhaan sa Amazon. Apan ang Terraform hingpit nga gipahait.

Naa ra ba nimo ang Amazon?

Dili kini nga kita adunay Amazon lamang. Kami halos adunay Amazon lamang. Apan ang hinungdanon nga bahin mao nga ang Terraform nahinumdom. Sa Ansible, kung moingon ka: "Kuhaa ko ang 5 nga mga higayon", nan kini motaas, ug unya moingon ka: "Ug karon kinahanglan ko ang 3". Ug ang Terraform moingon: "Ok, patyon ko ang 2", ug ang Ansible moingon: "Ok, ania ang 3 alang kanimo." Total 8.

Hello! Salamat sa imong report! Makapaikag kaayo nga makadungog bahin sa Terraform. Gusto lang ko maghimo usa ka gamay nga komento bahin sa kamatuoran nga ang Terraform wala gihapon usa ka lig-on nga pagpagawas, busa pag-amping pag-ayo sa Terraform.

Nindot nga kutsara para sa panihapon. Kana mao, kung kinahanglan nimo ang usa ka solusyon, unya usahay imong i-postpone kung unsa ang dili lig-on, ug uban pa, apan kini molihok ug nakatabang kanamo.

Ang pangutana mao. Gigamit nimo ang Remote backend, gigamit nimo ang S 3. Ngano nga wala nimo gigamit ang opisyal nga backend?

Opisyal?

Terraform Cloud.

Kanus-a siya nagpakita?

4 ka bulan ang milabay.

Kung kini nagpakita 4 ka tuig na ang milabay, nan, tingali, akong tubagon ang imong pangutana.

Adunay na usa ka built-in nga function ug mga kandado, ug mahimo nimong tipigan ang usa ka file sa estado. Sulayi kini. Pero wala pa nako natestingan.

Naa mi sa dakong tren nga kusog kaayo ang dagan. Ug dili nimo mahimo nga kuhaon ug ilabay ang pipila ka mga awto.

Naghisgot ka bahin sa mga snowflake, nganong wala nimo gigamit ang sanga? Ngano nga wala kini nahimo nga ingon niana?

Kami adunay ingon nga pamaagi nga ang tibuuk nga imprastraktura naa sa usa ka tipiganan. Terraform, Puppet, tanan nga mga script nga adunay kalabotan niini, silang tanan naa sa usa ka repository. Niining paagiha atong masiguro nga ang mga incremental nga mga pagbag-o gisulayan sa usag usa. Kung kini usa ka hugpong sa mga sanga, nan ang ingon nga proyekto hapit imposible nga mapadayon. Unom ka bulan ang milabay, ug sila magkalahi kaayo nga kini usa lamang ka matang sa silot. Kini ang gusto nako nga likayan sa wala pa mag-refactor.

i.e. dili kini molihok?

Dili gyud kini molihok.

Sa sanga, akong giputol ang folder slide. Kana mao, kung buhaton nimo ang matag stack sa pagsulay, pananglitan, ang team A adunay kaugalingon nga tatay, ang team B adunay kaugalingon nga tatay, nan dili usab kini molihok. Naghimo kami usa ka hiniusa nga code sa kalikopan sa pagsulay nga igo nga flexible aron mahiangay sa tanan. Sa ato pa, nagsilbi kami usa ka code.

Hello! Ako nga pala si Yura! Salamat sa report! Pangutana bahin sa modules. Giingon nimo nga naggamit ka mga module. Giunsa nimo pagsulbad ang isyu kung ang mga pagbag-o gihimo sa usa ka module nga dili tugma sa pagbag-o sa laing tawo? Bisan unsa nga paagi sa pag-bersyon sa mga module o pagsulay sa pagdala sa usa ka katingalahan aron matubag ang duha nga mga kinahanglanon?

Kini ang dakong problema sa snow pile. Mao kini ang atong giantos kung ang pipila ka dili makadaot nga pagbag-o makaguba sa pipila ka bahin sa imprastraktura. Ug kini mamatikdan lamang pagkahuman sa dugay nga panahon.

Sa ato pa, wala pa nakadesisyon?

Naghimo ka ug universal modules. Likayi ang mga snowflake. Ug ang tanan molihok. Ang ikaduha nga katunga sa taho mao ang kung unsaon paglikay niini.

Hello! Salamat sa report! Gusto nakong klarohon. Sa luyo sa mga talan-awon adunay usa ka dako nga pundok, diin ako miadto. Giunsa ang pag-apod-apod sa Puppet ug papel?

user-data.

Sa ato pa, giluwa ba nimo ang file ug sa usa ka paagi ipatuman kini?

Ang data sa gumagamit usa ka nota, i.e. kung maghimo kami usa ka clone sa imahe, unya si Daemon mibangon didto ug naningkamot nga mahibal-an kung kinsa siya, nagbasa usa ka nota nga siya usa ka balanse sa pagkarga.

Sa ato pa, usa ba kini ka lahi nga proseso nga gihatag?

Wala mi nag-imbento. Gigamit namo kini.

Hello! Naa lang koy pangutana bahin sa User - data. Miingon ka nga adunay mga problema didto, nga adunay magpadala usa ka butang sa sayup nga lugar. Naa bay paagi sa pagtipig sa user - data sa parehas nga Git, aron kanunay nga klaro kung unsa ang gipasabut sa User-data?

Naghimo kami og User-data gikan sa template. Kana mao, ang usa ka piho nga gidaghanon sa mga variable nga gigamit didto. Ug ang Terraform nagmugna sa katapusang resulta. Busa, dili nimo mahimo nga tan-awon lang ang template ug isulti kung unsa ang mahitabo, tungod kay ang tanan nga mga problema nalangkit sa kamatuoran nga ang developer naghunahuna nga siya nagpasa sa usa ka hilo niini nga variable, ug unya usa ka array ang gigamit. Ug siya - bang ug ako - mao-ug-mao, mao-ug-ingon, ang sunod nga linya, ug ang tanan nabungkag. Kung kini usa ka bag-ong kapanguhaan ug ang usa ka tawo nagpataas niini, nakakita nga adunay usa ka butang nga wala molihok, nan kini dali nga masulbad. Ug kung kini nga autoscale nga grupo na-update, unya sa usa ka punto ang mga higayon sa autoscale nga grupo magsugod sa pag-ilis. Ug palakpak, adunay dili molihok. Sakit kaayo.

Kini nahimo nga ang bugtong solusyon mao ang pagsulay?

Oo, nakita nimo ang problema, gidugang nimo ang mga lakang sa pagsulay didto. Sa ato pa, ang output mahimo usab nga masulayan. Tingali dili kaayo kombenyente, apan mahimo usab nimo ibutang ang pipila ka mga marka - susiha nga ang User-data gilansang dinhi.

Ang akong ngalan kay Timur. Nindot kaayo nga adunay mga taho kung giunsa ang pag-organisar sa husto nga Terraform.

Ni sugod ko.

Sa akong hunahuna nga sa sunod nga komperensya, tingali adunay. Naa koy simple nga pangutana. Ngano nga gi-hardcode nimo ang kantidad sa usa ka bulag nga module kaysa sa paggamit sa mga tfvars, ie usa ka module nga adunay mga kantidad nga labi ka maayo kaysa mga tfvars?

Sa ato pa, kinahanglan kong isulat dinhi (slide: Production/environment/settings.tf): domain = variable, domain vpcnetwork, vpcnetwork variable ug stvars - makuha ang parehas nga butang?

Gibuhat gyud namo kana. Gihisgotan namon ang module sa gigikanan sa setting, pananglitan.

Sa tinuud, kini usa ka tfvars. Ang Tfvars magamit kaayo sa usa ka palibot sa pagsulay. Naa koy mga tfvar para sa dagkong mga higayon, para sa gagmay. Ug gilabay nako ang usa ka file sa folder. Ug nakuha ang akong gusto. Kung nakita namon ang imprastraktura, gusto namon nga makita ug masabtan dayon ang tanan. Ug mao nga kinahanglan nimong tan-awon dinhi, unya tan-awa ang tfvars.

Kini nahimo nga ang tanan naa sa usa ka lugar?

Oo, ang tfvars kung adunay ka usa ka code. Ug kini gigamit sa daghang lainlaing mga lugar nga adunay lainlaing mga nuances. Dayon imong ilabay ang mga tfvars ug makuha ang imong mga nuances. Ug kami mga imprastraktura isip code sa labing putli nga porma niini. Gitan-aw ug nasabtan.

Hello! Nakasugat ka ba sa mga sitwasyon diin ang cloud provider nanghilabot sa imong nahimo sa Terraform? Ingnon ta nga gi-edit namo ang meta-data. Adunay mga ssh nga yawe. Ug ang Google kanunay nga nag-slip sa iyang meta-data, ang mga yawe niini didto. Ug ang Terraform kanunay nagsulat nga kini adunay mga pagbag-o. Pagkahuman sa matag dagan, bisan kung wala’y pagbag-o, kanunay niyang giingon nga i-update niya kini nga uma karon.

Uban sa mga yawe, apan - oo, ang bahin sa imprastraktura naapektuhan sa ingon nga butang, i.e. Ang Terraform dili makausab sa bisan unsa. Dili usab nato mabag-o ang bisan unsa sa atong mga kamot. Hangtud nga kita nagpuyo uban niini.

Sa ato pa, nakit-an nimo kini, apan wala’y nahibal-an, giunsa niya kini pagbuhat ug gibuhat kini sa iyang kaugalingon?

Makasubo, oo.

Hello! Ako si Stanislav Starkov. Mail. en Grupo. Giunsa nimo pagsulbad ang problema sa paghimo og tag sa ..., giunsa nimo kini pagpasa sa sulod? Sa akong nasabtan, pinaagi sa User - data, aron matino ang host name, mag-aghat sa Puppet? Ug ang ikaduhang bahin sa pangutana. Giunsa nimo pagsulbad kini nga isyu sa SG, i.e. kung imong gimugna ang SG, usa ka gatos nga mga higayon sa parehas nga tipo, kung giunsa kini pagngalan sa husto?

Katong mga instance nga importante kaayo sa atoa, tawgon namo silag nindot. Kadtong wala kinahanglana, adunay usa ka postscript nga kini usa ka autoscale nga grupo. Ug sa teoriya kini mahimong ilansang, ug makakuha og bag-o.

Mahitungod sa problema sa tag, walay ingon nga problema, apan adunay ingon nga buluhaton. Ug naggamit kami og mga tag, labi ka bug-at, tungod kay ang imprastraktura dako ug mahal. Ug kinahanglan natong tan-awon kung unsang kwarta ang gigasto, mao nga ang mga tag nagtugot kanato sa paghan-ay kung unsa ug asa kini miadto. Ug, sumala niana, ang pagpangita alang sa usa ka butang dinhi daghang salapi nga gigasto.

Unsa pa ang pangutana bahin sa?

Kung ang SG naghimo og usa ka gatos nga mga higayon, kinahanglan ba sila nga mailhan bisan unsang paagi?

Dili, ayaw. Ang matag higayon adunay ahente nga nagsulti kanako nga ako adunay problema. Kung ang ahente nagreport, nan ang ahente nahibal-an bahin kaniya ug, labing menos, ang iyang IP address anaa. Makadagan ka na. Ikaduha, gigamit namo ang Consul for Discovery, diin walay Kubernetes. Ug gipakita usab sa Consul ang IP address sa pananglitan.

Kana mao, imong gipunting ang eksakto nga IP, ug dili ang ngalan sa host?

Imposible nga mag-navigate sa ngalan sa host, i.e. adunay daghan kanila. Adunay mga instance identifiers - AE, ug uban pa. Makita nimo kini sa usa ka dapit, mahimo nimong ihulog kini sa pagpangita.

Hello! Nakaamgo ko nga ang Terraform usa ka maayong butang, gipahaum sa mga panganod.

Dili lang.

Kini ang pangutana nga nakapainteres kanako. Kung nakahukom ka nga mobalhin, ingnon ta, sa Bare Metal en masse sa tanan nimong mga higayon? Aduna bay mga problema? O kinahanglan pa ba nimo gamiton ang ubang mga produkto, pananglitan, ang parehas nga Ansible nga gihisgutan dinhi?

Ang Ansible medyo bahin sa laing butang. Sa ato pa, nagdagan na ang Ansible kung nagsugod na ang instance. Ug ang Terraform nagtrabaho sa wala pa magsugod ang pananglitan. Ang pagbalhin sa Bare Metal dili.

Dili karon, apan ang negosyo moabut ug moingon: "Dali."

Pagbalhin sa lain nga panganod - oo, apan adunay gamay nga lahi nga bahin dinhi. Kinahanglan nimong isulat ang Terraform code sa paagi nga makabalhin ka sa ubang panganod nga adunay gamay nga pagpaagas sa dugo.

Sa sinugdan, ang tahas mao nga ang among tibuuk nga imprastraktura agnostiko, i.e. bisan unsang panganod kinahanglan nga maayo, apan sa usa ka punto ang negosyo mihunong ug miingon: "OK, sa sunod nga N ka tuig dili kami moadto bisan diin, mahimo nimong magamit ang mga serbisyo gikan sa Amazon ".

Gitugotan ka sa Terraform nga maghimo mga trabaho sa Front-End, i-configure ang PagerDuty, mga dokumento sa datos, ug uban pa. Daghan kini nga mga ikog. Siya halos makakontrolar sa tibuok kalibotan.

Salamat sa report! Ako usab nagtuyok sa Terraform sulod sa 4 ka tuig na karon. Sa yugto sa usa ka hapsay nga transisyon sa Terraform, sa imprastraktura, sa usa ka deklaratibo nga paghulagway, kami nag-atubang sa usa ka sitwasyon diin ang usa ka tawo nagbuhat sa usa ka butang pinaagi sa kamot, ug ikaw naningkamot sa paghimo sa usa ka plano. Ug naa koy sayop didto. Giunsa nimo pag-atubang ang ingon nga mga problema? Giunsa nimo pagpangita ang nawala nga mga kapanguhaan nga gipakita?

Kasagaran sa atong mga kamot ug mga mata, kung makakita kita og usa ka butang nga katingad-an sa report, unya atong analisahon kung unsa ang nahitabo didto, o atong patyon kini. Sa kinatibuk-an, ang mga hangyo sa pagbitad usa ka kasagaran nga butang.

Kung naay error, rollback ba ka? Nasulayan na ba nimo kini?

Dili, kini usa ka desisyon sa usa ka tawo sa higayon nga makita niya ang problema.

Source: www.habr.com