Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Daghang mga tawo ang nahibal-an ug naggamit sa Terraform sa ilang adlaw-adlaw nga trabaho, apan ang labing kaayo nga mga gawi alang niini wala pa maporma. Ang matag team kinahanglan nga mag-imbento sa kaugalingon nga mga pamaagi ug pamaagi.

Ang imong imprastraktura hapit siguradong nagsugod sa yano: pipila ka mga kapanguhaan + pipila ka mga developer. Sa paglabay sa panahon, kini motubo sa tanang matang sa mga direksyon. Nakapangita ka ba og mga paagi sa paggrupo sa mga kahinguhaan ngadto sa mga module sa Terraform, pag-organisar sa code ngadto sa mga folder, ug unsa pa ang posibleng masayop? (bantog nga katapusan nga mga pulong)

Paglabay sa panahon ug gibati nimo nga ang imong imprastraktura mao ang imong bag-ong binuhi, apan ngano? Nabalaka ka bahin sa dili mahibal-an nga mga pagbag-o sa imprastraktura, nahadlok ka nga mahikap ang imprastraktura ug code - ingon usa ka sangputanan, nalangan nimo ang bag-ong pagpaandar o pagkunhod sa kalidad ...

Pagkahuman sa tulo ka tuig nga pagdumala sa usa ka koleksyon sa mga module sa komunidad sa Terraform alang sa AWS sa Github ug dugay nga pagmentinar sa Terraform sa produksiyon, andam si Anton Babenko nga ipaambit ang iyang kasinatian: kung giunsa pagsulat ang mga module sa TF aron dili kini masakitan sa umaabot.

Sa pagtapos sa pakigpulong, ang mga partisipante mahimong mas pamilyar sa mga prinsipyo sa pagdumala sa kahinguhaan sa Terraform, labing maayo nga mga gawi nga may kalabutan sa mga module sa Terraform, ug pipila ka padayon nga mga prinsipyo sa paghiusa nga may kalabutan sa pagdumala sa imprastraktura.

nga pagpasabot: Namatikdan nako nga kini nga taho gipetsahan Nobyembre 2018—2 ka tuig na ang milabay. Ang bersyon sa Terraform 0.11 nga gihisgutan sa report wala na gisuportahan. Sa miaging 2 ka tuig, 2 ka bag-ong pagpagawas ang gipagawas, nga adunay daghang mga inobasyon, pagpaayo ug pagbag-o. Palihug pagtagad niini ug susiha ang dokumentasyon.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Mga reperensiya:

Ako si Anton Babenko. Ang uban kaninyo lagmit migamit sa kodigo nga akong gisulat. Ako karon mosulti mahitungod niini uban sa labaw nga pagsalig kay sa kaniadto, tungod kay ako adunay access sa statistics.

Nagtrabaho ko sa Terraform ug nahimong aktibong partisipante ug nag-ambag sa daghang mga open source nga proyekto nga may kalabutan sa Terraform ug Amazon sukad 2015.

Sukad niadto nakasulat ako og igo nga code aron ibutang kini sa usa ka makapaikag nga paagi. Ug sulayan nako nga isulti kanimo kini karon.

Maghisgot ako bahin sa mga intricacies ug mga detalye sa pagtrabaho kauban ang Terraform. Apan dili kana ang hilisgutan sa HighLoad. Ug karon masabtan nimo kung ngano.

Sa paglabay sa panahon, nagsugod ako sa pagsulat sa mga module sa Terraform. Ang mga tiggamit nagsulat og mga pangutana, akong gisulat pag-usab. Unya nagsulat ko og lain-laing mga utilities para ma-format ang code gamit ang pre-commit hook, etc.

Adunay daghang makapaikag nga mga proyekto. Ganahan ko sa paghimo og code tungod kay ganahan ko sa kompyuter nga mobuhat ug dugang ug dugang trabaho para nako ug sa programmer, mao nga sa pagkakaron nagtrabaho ko sa Terraform code generator gikan sa visual diagrams. Tingali ang uban kaninyo nakakita kanila. Nindot kini nga mga kahon nga adunay mga pana. Ug sa akong hunahuna kini maayo kung mahimo nimo i-klik ang "Export" nga buton ug makuha kini tanan ingon code.

Gikan ko sa Ukraine. Nagpuyo ko sa Norway sa daghang tuig.

Usab, ang impormasyon alang niini nga taho gikolekta gikan sa mga tawo nga nakaila sa akong ngalan ug nakakaplag kanako sa mga social network. Halos pareha ra kog angga.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

Sama sa akong nahisgutan, ako ang nag-unang tigmentinar sa Terraform AWS modules, nga usa sa pinakadako nga repository sa GitHub diin nag-host kami og mga modules alang sa labing komon nga mga buluhaton: VPC, Autoscaling, RDS.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug ang imong nadungog karon mao ang labing sukaranan. Kung nagduhaduha ka nga nasabtan nimo kung unsa ang Terraform, nan mas maayo nga igahin ang imong oras sa ubang lugar. Adunay daghang mga teknikal nga termino dinhi. Ug wala ako magduha-duha sa pagdeklarar nga ang lebel sa taho mao ang labing taas. Kini nagpasabut nga ako makasulti gamit ang tanan nga posible nga mga termino nga wala’y daghang katin-awan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang Terraform nagpakita sa 2014 isip usa ka utility nga nagtugot kanimo sa pagsulat, pagplano ug pagdumala sa imprastraktura isip code. Ang yawe nga konsepto dinhi mao ang "imprastraktura ingon code."

Ang tanan nga dokumentasyon, ingon sa akong giingon, nahisulat sa terraform.io. Nanghinaut ko nga kadaghanan sa mga tawo nahibal-an bahin sa kini nga site ug nakabasa sa dokumentasyon. Kung mao, nan naa ka sa husto nga lugar.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Mao kini ang hitsura sa usa ka regular nga Terraform configuration file, diin una natong gihubit ang pipila ka mga variable.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Niini nga kaso atong gihubit ang "aws_region".

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Dayon among gihulagway kung unsa nga mga kapanguhaan ang gusto namon nga buhaton.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Nagdagan kami pipila ka mga mando, labi na ang "terraform init" aron ma-load ang mga dependency ug provider.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug among gipadagan ang "terraform apply" nga sugo aron masusi kung ang espesipikong configuration mohaum sa mga kapanguhaan nga among gibuhat. Tungod kay wala pa kami nakamugna bisan unsa kaniadto, giaghat kami sa Terraform sa paghimo niini nga mga kapanguhaan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Among gikumpirma kini. Sa ingon naghimo kami usa ka balde nga gitawag og seasnail.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Adunay usab daghang susama nga mga utilities. Daghan kaninyo nga naggamit sa Amazon nakaila sa AWS CloudFormation o Google Cloud Deployment Manager o Azure Resource Manager. Ang matag usa kanila adunay kaugalingong pagpatuman sa usa ka matang sa pagdumala sa mga kahinguhaan sulod sa matag usa niining mga public cloud providers. Labi nga mapuslanon ang Terraform tungod kay gitugotan ka nga magdumala sa sobra sa 100 nga mga tighatag. (Dugang detalye dinhi)

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang mga katuyoan nga gipadayon sa Terraform gikan sa sinugdanan:

  • Ang Terraform naghatag usa ka pagtan-aw sa mga kapanguhaan.
  • Nagtugot kanimo sa pagsuporta sa tanan nga modernong mga plataporma.
  • Ug ang Terraform gidisenyo gikan sa sinugdanan isip usa ka utility nga nagtugot kanimo sa pag-usab sa imprastraktura nga luwas ug matag-an.

Sa 2014, ang pulong nga "predictable" morag talagsaon kaayo niini nga konteksto.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang Terraform usa ka unibersal nga gamit. Kung ikaw adunay API, nan mahimo nimong kontrolon ang tanan:

  • Mahimo nimong gamiton ang labaw sa 120 nga mga tighatag aron madumala ang tanan nga gusto nimo.
  • Pananglitan, mahimo nimong gamiton ang Terraform aron ihulagway ang pag-access sa mga repositoryo sa GitHub.
  • Mahimo ka pa nga maghimo ug magsira sa mga bug sa Jira.
  • Mahimo nimong madumala ang Bag-ong Relic metrics.
  • Mahimo ka pa nga maghimo mga file sa dropbox kung gusto nimo.

Kining tanan makab-ot gamit ang Terraform providers, nga adunay bukas nga API nga mahulagway sa Go.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ingnon ta nga nagsugod kami sa paggamit sa Terraform, nagbasa sa pipila ka dokumentasyon sa site, nagtan-aw sa pipila ka video, ug nagsugod sa pagsulat sa main.tf, sama sa akong gipakita sa miaging mga slide.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug maayo ang tanan, naa kay file nga nagmugna ug VPC.

Kung gusto nimo maghimo usa ka VPC, nan imong gitino ang gibanabana nga 12 ka linya. Ihulagway kung asa nga rehiyon gusto nimong buhaton, kung unsang cidr_block sa mga IP adres ang gamiton. Mao ra.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Natural, anam-anam nga motubo ang proyekto.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug magdugang ka usa ka tonelada nga bag-ong butang didto: mga kapanguhaan, mga gigikanan sa datos, i-integrate nimo ang mga bag-ong provider, kalit nga gusto nimong gamiton ang Terraform aron madumala ang mga tiggamit sa imong GitHub account, ug uban pa. Mahimo nimong gamiton lain-laing DNS providers , tabok sa tanan. Gipasayon ​​kini sa Terraform.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Atong tan-awon ang mosunod nga pananglitan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Hinay-hinay nimong gidugang ang internet_gateway tungod kay gusto nimo ang mga kapanguhaan gikan sa imong VPC nga adunay internet access. Kini usa ka maayong ideya.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang resulta mao kini nga main.tf:

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kini ang kinatas-ang bahin sa main.tf.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kini ang ubos nga bahin sa main.tf.

Dayon imong idugang ang subnet. Sa oras nga gusto nimong idugang ang mga gateway sa NAT, mga ruta, mga lamesa sa ruta ug usa ka hugpong sa ubang mga subnet, wala ka'y ​​38 nga linya, apan gibana-bana nga 200-300 nga linya.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Sa ato pa, ang imong main.tf file anam-anam nga nagtubo. Ug sa kasagaran gibutang sa mga tawo ang tanan sa usa ka file. 10-20 Kb makita sa main.tf. Hunahunaa nga 10-20 Kb ang sulod sa teksto. Ug ang tanan konektado sa tanan. Kini sa hinay-hinay nahimong lisud sa pagtrabaho uban sa. Ang 10-20 Kb usa ka maayong kaso sa tiggamit, usahay labaw pa. Ug ang mga tawo dili kanunay maghunahuna nga kini daotan.

Sama sa regular nga pagprograma, i.e. dili imprastraktura ingon code, naanad kami sa paggamit sa usa ka hugpong sa lainlaing mga klase, pakete, module, paggrupo. Gitugotan ka sa Terraform nga buhaton ang parehas nga butang.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

  • Nagkadako ang code.
  • Ang mga pagsalig tali sa mga kahinguhaan nagkadako usab.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug kita adunay usa ka dako, dako nga panginahanglan. Atong nasabtan nga dili na kita magkinabuhi nga sama niini. Ang among code nahimong dako. Ang 10-20 Kb, siyempre, dili kaayo lapad, apan naghisgot lamang kami bahin sa network stack, i.e. gidugang ra nimo ang mga kapanguhaan sa network. Wala kami maghisgot bahin sa Application Load Balancer, deployment ES cluster, Kubernetes, ug uban pa, diin ang 100 Kb dali nga ma-weaved. Kung imong isulat kining tanan, mahibal-an nimo sa dili madugay nga ang Terraform naghatag mga module sa Terraform.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang mga module sa Terraform kay usa ka self-contained Terraform configuration nga gidumala isip grupo. Mao ra kana ang kinahanglan nimong mahibal-an bahin sa mga module sa Terraform. Dili gyud sila maalamon, dili ka nila tugutan nga maghimo bisan unsang komplikado nga koneksyon depende sa usa ka butang. Kining tanan nahulog sa mga abaga sa mga developers. Kana mao, kini usa lamang ka matang sa pag-configure sa Terraform nga imong gisulat na. Ug mahimo nimong tawagan kini ingon usa ka grupo.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Mao nga gisulayan namon nga masabtan kung giunsa namon ma-optimize ang among 10-20-30 Kb nga code. Anam-anam namong naamgohan nga kinahanglan namong gamiton ang pipila ka modules.

Ang unang matang sa modules nga imong masugatan mao ang resource modules. Wala sila makasabut kung unsa ang imong imprastraktura, kung unsa ang imong negosyo, asa ug unsa ang mga kondisyon. Mao gyud kini ang mga module nga akong gidumala, kauban ang bukas nga gigikanan nga komunidad, ug among gibutang sa unahan ingon ang una nga mga bloke sa pagtukod alang sa imong imprastraktura.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Usa ka pananglitan sa usa ka module sa kapanguhaan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Sa diha nga kita motawag sa usa ka kapanguhaan module, kita espesipiko gikan sa unsa nga dalan kita kinahanglan nga load sa mga sulod niini.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Gipakita namon kung unsang bersyon ang gusto namon i-download.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Gipasa namo ang usa ka hugpong sa mga argumento didto. Mao ra. Mao ra kana ang kinahanglan natong masayran kung gamiton nato kini nga module.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Daghang mga tawo ang naghunahuna nga kung gamiton nila ang pinakabag-o nga bersyon, ang tanan mahimong lig-on. Apan dili. Ang imprastraktura kinahanglan nga adunay bersyon; kinahanglan naton nga tin-aw nga tubagon kung unsang bersyon kini o kana nga sangkap gi-deploy.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ania ang code nga naa sa sulod niini nga module. Module sa grupo sa seguridad. Dinhi ang linukot nga basahon moadto sa ika-640 nga linya. Ang paghimo sa usa ka kapanguhaan sa seguridad-croup sa Amazon sa matag posible nga pag-configure usa ka dili hinungdanon nga buluhaton. Dili igo ang paghimo lang usa ka grupo sa seguridad ug isulti kung unsang mga lagda ang ipasa niini. Kini yano ra kaayo. Adunay usa ka milyon nga lainlaing mga pagdili sa sulod sa Amazon. Pananglitan, kon imong gamiton VPC endpoint, prefix list, lain-laing mga API ug misulay sa paghiusa sa tanan niini sa tanan nga uban pa, unya ang Terraform dili motugot kanimo sa pagbuhat niini. Ug ang Amazon API dili usab motugot niini. Busa, kinahanglan natong itago ang tanan niining makalilisang nga lohika sa usa ka module ug ihatag ang user code nga sama niini.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Dili kinahanglan nga mahibal-an sa tiggamit kung giunsa kini gihimo sa sulod.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang ikaduha nga matang sa mga module, nga naglangkob sa mga module sa kapanguhaan, nakasulbad na sa mga problema nga mas magamit sa imong negosyo. Kasagaran kini usa ka lugar nga usa ka extension alang sa Terraform ug nagtakda sa pipila ka mga estrikto nga kantidad alang sa mga tag, alang sa mga sumbanan sa kompanya. Mahimo ka usab makadugang pag-andar didto nga ang Terraform dili karon tugotan kanimo nga gamiton. Kini mao ang karon. Karon nga bersyon 0.11, nga hapit na mahimong butang sa nangagi. Apan sa gihapon, ang mga preprocessors, jsonnet, cookiecutter ug uban pang mga butang mao ang auxiliary nga mekanismo nga kinahanglan gamiton alang sa hingpit nga trabaho.

Sunod akong ipakita ang pipila ka mga pananglitan niini.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang module sa imprastraktura gitawag sa parehas nga paagi.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Gipakita ang gigikanan kung diin i-download ang sulud.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Usa ka hugpong sa mga kantidad ang gipasa ug gipasa sa kini nga module.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Sunod, sulod niini nga module, usa ka pundok sa mga resource modules ang gitawag para maghimo ug VPC o Application Load Balancer, o maghimo ug security-group o para sa Elastic Container Service cluster.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Adunay duha ka matang sa modules. Importante kini nga masabtan tungod kay kadaghanan sa impormasyon nga akong gi-grupo niini nga taho wala gisulat sa dokumentasyon.

Ug ang dokumentasyon sa Terraform karon medyo problemado tungod kay giingon lang nga adunay kini nga mga bahin, mahimo nimo kini gamiton. Apan wala niya isulti kung giunsa paggamit kini nga mga bahin, ngano nga mas maayo nga gamiton kini. Busa, daghan kaayong tawo ang nagsulat ug butang nga dili nila mapuy-an.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Atong tan-awon kung giunsa pagsulat kini nga mga module sa sunod. Unya atong tan-awon kon sa unsang paagi sa pagtawag kanila ug sa unsa nga paagi sa pagtrabaho uban sa code.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Terraform Registry - https://registry.terraform.io/

Tip #0 mao ang dili pagsulat sa mga module sa kapanguhaan. Kadaghanan niini nga mga module gisulat na para kanimo. Sama sa akong giingon, sila bukas nga gigikanan, wala silay sulod sa bisan unsang lohika sa imong negosyo, wala silay mga hardcoded nga kantidad alang sa mga IP address, mga password, ug uban pa. Ang module labi ka dali. Ug kini lagmit nasulat na. Adunay daghang mga module alang sa mga kapanguhaan gikan sa Amazon. Mga 650. Ug kadaghanan kanila maayo ang kalidad.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Niini nga pananglitan, adunay usa nga miduol kanimo ug miingon, “Gusto ko nga makadumala sa usa ka database. Paghimo og module aron makahimo ko og database." Ang tawo wala mahibal-an ang mga detalye sa pagpatuman sa Amazon o Terraform. Siya yano nga nag-ingon: "Gusto kong modumala sa MSSQL." Sa ato pa, gipasabot namo nga tawgon niini ang among module, ipasa ang tipo sa makina didto, ug ipaila ang time zone.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug ang usa ka tawo dili kinahanglan mahibal-an nga maghimo kami duha ka lainlaing mga kapanguhaan sa sulod niini nga module: ang usa para sa MSSQL, ang ikaduha alang sa tanan, tungod lamang sa Terraform 0.11 dili nimo matino ang mga kantidad sa time zone ingon opsyonal.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug sa paggawas gikan niini nga module, ang usa ka tawo makadawat sa usa ka adres. Dili niya mahibal-an kung diin nga database, gikan sa diin nga kapanguhaan gimugna namon kining tanan sa sulod. Kini usa ka hinungdanon kaayo nga elemento sa pagtago. Ug kini magamit dili lamang sa mga module nga publiko sa bukas nga gigikanan, apan usab sa mga module nga imong isulat sa sulod sa imong mga proyekto ug mga team.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kini ang ikaduha nga argumento, nga hinungdanon kung gigamit nimo ang Terraform sa makadiyot. Adunay ka usa ka repository diin imong gibutang ang tanan nimo nga mga module sa Terraform alang sa imong kompanya. Ug normal ra nga sa paglabay sa panahon kini nga proyekto motubo sa gidak-on nga usa o duha ka megabytes. Maayo kini.

Apan ang problema mao kung giunsa pagtawag sa Terraform kini nga mga module. Pananglitan, kung magtawag ka ug module aron paghimo sa matag indibidwal nga tiggamit, ang Terraform una nga magkarga sa tibuuk nga repository ug dayon mag-navigate sa folder kung diin nahimutang ang piho nga module. Niining paagiha maka-download ka usa ka megabyte matag higayon. Kung nagdumala ka sa 100 o 200 nga tiggamit, unya mag-download ka sa 100 o 200 megabytes, ug dayon adto sa kana nga folder. Mao nga natural nga dili nimo gusto nga mag-download usa ka hugpong sa mga butang matag higayon nga maigo nimo ang "Terraform init".

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Adunay duha ka solusyon niini nga problema. Ang una mao ang paggamit sa mga relatibong agianan. Niining paagiha imong gipakita sa code nga ang folder lokal (./). Ug sa dili ka pa maglansad bisan unsa, maghimo ka usa ka Git clone sa kini nga repository sa lokal. Niining paagiha buhaton nimo kini kausa.

Adunay, siyempre, daghang mga kakulangan. Pananglitan, dili nimo magamit ang pag-bersyon. Ug kini usahay lisud nga mabuhi uban.

Ikaduha nga solusyon. Kung ikaw adunay daghang mga submodules ug ikaw adunay usa ka matang sa natukod nga pipeline, nan adunay proyekto sa MBT, nga nagtugot kanimo sa pagkolekta sa daghang lain-laing mga pakete gikan sa usa ka monorepository ug i-upload kini sa S3. Kini usa ka maayo kaayo nga paagi. Busa, ang iam-user-1.0.0.zip nga file motimbang lamang ug 1 Kb, tungod kay ang code sa paghimo niini nga kapanguhaan gamay ra kaayo. Ug kini molihok nga mas paspas.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Atong hisgutan kung unsa ang dili magamit sa mga module.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ngano nga kini daotan sa mga module? Ang pinakagrabe nga butang mao ang pag-assume sa user. Hunahunaa nga ang tiggamit usa ka kapilian sa pag-authenticate sa provider nga magamit sa lainlaing mga tawo. Pananglitan, kitang tanan mag-assimilate sa papel. Kini nagpasabot nga ang Terraform maoy modala niini nga tahas. Ug unya uban niini nga tahas kini maghimo sa ubang mga aksyon.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug ang daotan mao nga kung si Vasya ganahan nga makonektar sa Amazon sa usa ka paagi, pananglitan, gamit ang default nga variable sa palibot, ug gusto ni Petya nga gamiton ang iyang gipaambit nga yawe, nga naa niya sa usa ka sekreto nga lugar, nan dili nimo matino ang duha sa Terraform. Ug aron dili sila makasinati og pag-antos, dili kinahanglan nga ipasabut kini nga bloke sa module. Kini kinahanglan nga ipahayag sa mas taas nga lebel. Sa ato pa, aduna kitay resource module, infrastructure module ug komposisyon sa ibabaw. Ug kini kinahanglan nga ipasabut sa usa ka lugar nga mas taas.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang ikaduha nga daotan mao ang tighatag. Dinhi ang daotan dili kaayo hinungdanon, tungod kay kung nagsulat ka og code ug kini molihok alang kanimo, mahimo nimong hunahunaon nga kung kini molihok, nan nganong usbon kini.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang daotan mao nga dili nimo kanunay makontrol kung kanus-a ilunsad kini nga tighatag, una. Ug ikaduha, dili nimo makontrol kung unsa ang gipasabut sa aws ec2, ie naghisgut ba kami bahin sa Linux o Windows karon. Mao nga dili ka makasulat og usa ka butang nga parehas nga magamit sa lainlaing mga operating system o alang sa lainlaing mga kaso sa tiggamit.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang labing kasagaran nga pananglitan, nga gipakita usab sa opisyal nga dokumentasyon, mao nga kung imong isulat ang aws_instance ug ipiho ang usa ka hugpong sa mga argumento, nan wala’y sayup kung imong ipiho ang provisioner nga "local-exec" didto ug ipadagan ang imong ansible- playbook .

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Sa pagkatinuod, oo, walay daotan niana. Apan sa dili madugay imong maamgohan nga kining local-exec nga butang wala, pananglitan, sa launch_configuration.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug kung mogamit ka ug launch_configuration, ug gusto nimo nga maghimo usa ka grupo sa autoscaling gikan sa usa ka higayon, unya sa launch_configuration wala’y konsepto sa "provisioner". Adunay konsepto sa "data sa gumagamit".

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Busa, ang usa ka mas unibersal nga solusyon mao ang paggamit sa datos sa tiggamit. Ug kini ilunsad bisan sa instance mismo, kung gi-on ang instance, o sa parehas nga datos sa tiggamit, kung gigamit sa grupo sa autoscaling kini nga launch_configuration.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kung gusto pa nimo nga modagan ang provisioner, tungod kay kini usa ka sangkap nga gluing, kung ang usa ka kapanguhaan gihimo, sa kana nga higayon kinahanglan nimo nga ipadagan ang imong provisioner, ang imong mando. Adunay daghang ingon nga mga sitwasyon.

Ug ang labing tukma nga kapanguhaan alang niini gitawag nga null_resource. Ang Null_resource usa ka dummy nga kapanguhaan nga wala gyud nahimo. Wala kini makahikap bisan unsa, walay API, walay autoscaling. Apan gitugotan ka nga makontrol kung kanus-a ipadagan ang mando. Sa kini nga kaso, ang mando gipadagan sa panahon sa paglalang.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

link http://bit.ly/common-traits-in-terraform-modules

Adunay daghang mga timailhan. Dili nako hisgotan ang tanan nga mga timailhan sa daghang detalye. Adunay usa ka artikulo bahin niini. Apan kung nagtrabaho ka sa Terraform o gigamit ang mga module sa ubang mga tawo, nan kanunay nimong namatikdan nga daghang mga module, sama sa kadaghanan sa code sa bukas nga gigikanan, gisulat sa mga tawo alang sa ilang kaugalingon nga mga panginahanglanon. Gisulat kini sa usa ka lalaki ug gisulbad ang iyang problema. Gipilit ko kini sa GitHub, buhian kini. Kini mabuhi, apan kung walay dokumentasyon ug mga pananglitan didto, nan walay usa nga mogamit niini. Ug kung wala’y pag-andar nga nagtugot kanimo nga masulbad ang labi pa sa espesipikong buluhaton niini, nan wala’y bisan kinsa nga mogamit niini. Adunay daghang mga paagi aron mawala ang mga tiggamit.

Kung gusto nimong isulat ang usa ka butang aron magamit kini sa mga tawo, unya girekomenda nako nga sundon kini nga mga timailhan.

Kini mao ang:

  • Dokumentasyon ug mga pananglitan.
  • Bug-os nga gamit.
  • Makatarunganon nga mga default.
  • Limpyo nga code.
  • Mga Pagsulay.

Ang mga pagsulay usa ka lahi nga sitwasyon tungod kay kini lisud isulat. Mas nagtuo ko sa dokumentasyon ug mga pananglitan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Mao nga, gitan-aw namon kung giunsa pagsulat ang mga module. Adunay duha ka argumento. Ang una, nga mao ang labing hinungdanon, dili pagsulat kung mahimo nimo, tungod kay daghang mga tawo ang nakahimo na niini nga mga buluhaton sa wala pa nimo. Ug ikaduha, kung magdesisyon ka pa, nan sulayi nga dili mogamit mga provider sa mga module ug provisioner.

Kini ang abuhon nga bahin sa dokumentasyon. Mahimong maghunahuna ka karon: “May dili klaro. Dili kombinsido." Apan magkita ta sa unom ka bulan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Karon atong hisgutan kung giunsa pagtawag kini nga mga module.

Nasabtan namo nga ang among code motubo sa paglabay sa panahon. Wala na mi usa ka file, naa na miy 20 ka files. Tanan sila sa usa ka folder. O tingali sa lima ka mga folder. Tingali nagsugod kami sa usa ka paagi sa pagbungkag kanila sa rehiyon, sa pipila nga mga sangkap. Unya nasabtan nato nga karon aduna na kitay pipila ka sukaranan sa pag-synchronize ug orkestra. Sa ato pa, kinahanglan naton masabtan kung unsa ang kinahanglan naton buhaton kung gibag-o naton ang mga kapanguhaan sa network, kung unsa ang kinahanglan naton buhaton sa nahabilin nga mga kahinguhaan, kung giunsa kini hinungdan sa kini nga mga dependency, ug uban pa.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Adunay duha ka extreme. Ang unang extreme kay all in one. Kami adunay usa ka master file. Sa pagkakaron, kini ang opisyal nga labing maayong praktis sa website sa Terraform.

Apan karon kini gisulat nga wala na gigamit ug gitangtang. Sa paglabay sa panahon, ang komunidad sa Terraform nakaamgo nga kini layo sa pinakamaayo nga praktis, tungod kay ang mga tawo nagsugod sa paggamit sa proyekto sa lain-laing mga paagi. Ug adunay mga problema. Pananglitan, kung among gilista ang tanan nga mga dependency sa usa ka lugar. Adunay mga sitwasyon nga atong i-klik ang "Terraform plan" ug hangtod nga gi-update sa Terraform ang mga estado sa tanan nga mga kahinguhaan, daghang oras ang mahimong molabay.

Daghang oras, pananglitan, 5 minuto. Alang sa pipila kini daghang oras. Nakakita kog mga kaso diin niabot ug 15 minutos. Ang AWS API migugol ug 15 ka minuto nga naningkamot nga mahibal-an kung unsa ang nahitabo sa kahimtang sa matag kapanguhaan. Kini usa ka dako kaayo nga lugar.

Ug, natural, ang usa ka may kalabutan nga problema motungha kung gusto nimo usbon ang usa ka butang sa usa ka lugar, unya maghulat ka 15 minuto, ug maghatag kanimo usa ka canvas sa pipila nga mga pagbag-o. Naglaway ka, nagsulat og "Oo", ug adunay sayup. Kini usa ka tinuod nga pananglitan. Ang Terraform dili mosulay sa pagpanalipod kanimo gikan sa mga problema. Sa ato pa, isulat ang imong gusto. Adunay mga problema - ang imong mga problema. Samtang ang Terraform 0.11 wala mosulay sa pagtabang kanimo sa bisan unsang paagi. Adunay pipila ka makapaikag nga mga lugar sa 0.12 nga nagtugot kanimo sa pag-ingon: "Vasya, gusto nimo kini, mahimo ka ba makaamgo?"

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang ikaduhang paagi mao ang pagpakunhod niini nga dapit, nga mao, ang mga tawag gikan sa usa ka dapit mahimong dili kaayo konektado gikan sa laing dapit.

Ang bugtong problema mao nga kinahanglan nimo nga magsulat og dugang nga code, i.e. kinahanglan nimo nga ihulagway ang mga variable sa daghang mga file ug i-update kini. Ang ubang mga tawo dili ganahan niini. Normal kini alang kanako. Ug ang ubang mga tawo naghunahuna: "Ngano nga isulat kini sa lainlaing mga lugar, ibutang ko kini tanan sa usa ka lugar." Posible kini, apan kini ang ikaduha nga grabe.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kinsa ang nagpuyo niining tanan sa usa ka dapit? Usa, duha, tulo ka tawo, sa ato pa, adunay naggamit niini.

Ug kinsa ang nagtawag sa usa ka partikular nga sangkap, usa ka bloke o usa ka module sa imprastraktura? Lima ngadto sa pito ka tawo. Nindot ni.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang labing komon nga tubag anaa sa tunga-tunga. Kung ang proyekto dako, nan kanunay ka nga adunay usa ka sitwasyon diin walay solusyon nga angay ug dili ang tanan molihok didto, mao nga ikaw adunay usa ka sagol. Wala’y daotan niini, basta masabtan nimo nga adunay mga bentaha ang duha.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kung adunay nausab sa stack VPC ug gusto nimo nga i-apply kini nga mga pagbag-o sa EC2, ie gusto nimo nga i-update ang autoscaling nga grupo tungod kay adunay ka bag-ong subnet, unya gitawag nako kini nga klase sa dependency orchestration. Adunay pipila ka mga solusyon: kinsa ang naggamit sa unsa?

Makasugyot ko kung unsa ang mga solusyon. Mahimo nimong gamiton ang Terraform aron mahimo ang salamangka, o mahimo nimong gamiton ang mga makefile aron magamit ang Terraform. Ug tan-awa kung adunay nausab didto, mahimo nimo kini ilunsad dinhi.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Giunsa nimo gusto kini nga desisyon? Aduna bay nagtuo nga kini usa ka cool nga solusyon? Nakakita kog pahiyom, dayag nga nisulod ang mga pagduhaduha.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Siyempre, ayaw pagsulay niini sa balay. Ang Terraform wala gayud gidesinyo nga ipadagan gikan sa Terraform.

Sa usa ka taho gisultihan nila ako: "Dili, dili kini molihok." Ang punto mao nga kini kinahanglan nga dili molihok. Bisan kung kini tan-awon nga impresibo kung mahimo nimong ilunsad ang Terraform gikan sa Terraform, ug dayon ang Terraform, dili nimo kinahanglan buhaton kana. Ang Terraform kinahanglan kanunay magsugod nga dali ra kaayo.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

https://github.com/gruntwork-io/terragrunt/

Kung kinahanglan nimo ang pagtawag sa orkestra kung adunay nabag-o sa usa ka lugar, nan adunay Terragrunt.

Ang Terragrunt usa ka utility, usa ka add-on sa Terraform, nga nagtugot kanimo sa pag-coordinate ug pag-orchestrate sa mga tawag sa mga module sa imprastraktura.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang usa ka tipikal nga Terraform configuration file ingon niini.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Gitakda nimo kung unsang piho nga module ang gusto nimo tawagan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Unsang mga dependency ang naa sa module?

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug unsa nga mga argumento ang gidawat niini nga module. Mao ra kana ang nahibal-an bahin sa Terragrunt.

Anaa ang dokumentasyon, ug adunay 1 ka bituon sa GitHub. Apan sa kadaghanan nga mga kaso kini ang kinahanglan nimong mahibal-an. Ug kini sayon ​​​​kaayo nga ipatuman sa mga kompanya nga nagsugod pa sa pagtrabaho kauban ang Terraform.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Busa ang orkestra mao ang Terragrunt. Adunay laing mga kapilian.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Karon hisgutan naton kung giunsa ang pagtrabaho sa code.

Kung kinahanglan nimo nga idugang ang mga bag-ong bahin sa imong code, sa kadaghanan nga mga kaso kini dali. Nagsulat ka usa ka bag-ong kapanguhaan, ang tanan yano ra.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kung aduna kay resource nga imong gimugna daan, pananglitan, nakakat-on ka bahin sa Terraform human nimo giablihan ang AWS account ug gusto nimong gamiton ang mga resources nga naa na nimo, nan kini angay nga i-extend ang imong module niining paagiha, aron kini nagsuporta sa paggamit sa kasamtangan nga mga kapanguhaan.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug gisuportahan ang paghimo sa bag-ong mga kahinguhaan gamit ang block resource.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Sa output kanunay namong ibalik ang output id depende sa gigamit.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang ikaduha nga hinungdanon nga problema sa Terraform 0.11 nagtrabaho sa mga lista.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang kalisud mao nga kung kita adunay ingon nga lista sa mga tiggamit.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug kung gimugna namo kini nga mga tiggamit gamit ang block resource, nan maayo ang tanan. Gisusi namon ang tibuuk nga lista, paghimo usa ka file alang sa matag usa. Maayo ra ang tanan. Ug unya, pananglitan, ang user3, nga naa sa tunga, kinahanglan nga tangtangon gikan dinhi, unya ang tanan nga mga kahinguhaan nga gibuhat pagkahuman niya pagabuhaton pag-usab tungod kay ang indeks mausab.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Pagtrabaho uban ang mga lista sa usa ka stateful nga palibot. Unsa ang stateful environment? Kini ang kahimtang diin ang usa ka bag-ong kantidad gihimo kung kini nga kapanguhaan gihimo. Pananglitan, ang AWS Access Key o AWS Secret Key, i.e. sa dihang maghimo kita og user, makadawat kita og bag-ong Access o Secret Key. Ug sa matag higayon nga atong tangtangon ang usa ka tiggamit, kini nga tiggamit adunay bag-ong yawe. Apan dili kini feng shui, tungod kay ang tiggamit dili gusto nga makighigala kanato kung maghimo kita og bag-ong tiggamit alang kaniya sa matag higayon nga adunay mobiya sa team.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Kini ang solusyon. Kini ang code nga gisulat sa Jsonnet. Ang Jsonnet usa ka templating nga pinulongan gikan sa Google.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Gitugotan ka niini nga mando nga dawaton kini nga template ug isip output nagbalik kini usa ka json file nga gihimo sumala sa imong template.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ingon niini ang template.

Gitugotan ka sa Terraform nga magtrabaho kauban ang HCL ug Json sa parehas nga paagi, mao nga kung adunay ka abilidad sa pagmugna og Json, mahimo nimo kini i-slip sa Terraform. Ang file nga adunay extension nga .tf.json malampuson nga ma-download.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug unya kami nagtrabaho uban niini sama sa naandan: terraform init, terramorm magamit. Ug naghimo kami og duha ka tiggamit.

Karon dili kami mahadlok kung adunay mobiya sa team. I-edit ra namo ang json file. Si Vasya Pupkin mibiya, si Petya Pyatochkin nagpabilin. Si Petya Pyatochkin dili makadawat og bag-ong yawe.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang paghiusa sa Terraform sa ubang mga himan dili gyud trabaho sa Terraform. Gibuhat ang Terraform isip plataporma sa pagmugna og mga kahinguhaan ug mao na. Ug ang tanan nga moabut sa ulahi dili kabalaka sa Terraform. Ug dili kinahanglan nga maghabol niini didto. Adunay Ansible, nga naghimo sa tanan nga imong gikinahanglan.

Apan motungha ang mga sitwasyon kung gusto namong i-extend ang Terraform ug tawagan ang pipila ka sugo human makompleto ang usa ka butang.

Unang paagi. Naghimo kami usa ka output diin among gisulat kini nga mando.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ug dayon gitawag nato kini nga sugo gikan sa shell terraform output ug ipiho ang bili nga atong gusto. Sa ingon, ang mando gipatuman sa tanan nga gipuli nga mga kantidad. Komportable kaayo kini.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ikaduhang paagi. Kini ang paggamit sa null_resource depende sa mga pagbag-o sa among imprastraktura. Mahimo namong tawagan ang parehas nga local-exe sa diha nga ang ID sa pipila nga mga kapanguhaan mausab.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Natural, kini tanan hapsay sa papel, tungod kay ang Amazon, sama sa tanan nga uban pang mga publiko nga tagahatag, adunay usa ka hugpong sa kaugalingon nga mga kaso sa sulud.

Ang labing kasagaran nga kaso sa sulud mao nga kung magbukas ka usa ka AWS account, hinungdanon kung unsang mga rehiyon ang imong gigamit; gi-enable ba kini nga bahin didto; basin giablihan nimo after December 2013; basin naggamit ka ug default sa VPC ug uban pa. Adunay daghang mga pagdili. Ug gipatibulaag sila sa Amazon sa tibuuk nga dokumentasyon.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Adunay pipila ka mga butang nga akong girekomenda nga likayan.

Sa pagsugod, likayi ang tanang dili sekretong argumento sulod sa Terraform plan o Terraform CLI. Kining tanan mahimong ibutang sa tfvars file o sa environment variable.

Apan dili nimo kinahanglan nga sag-ulohon kining tibuok nga sugo sa salamangka. Plano sa Terraform - var ug moadto kami. Ang una nga variable mao ang var, ang ikaduha nga variable mao ang var, ang ikatulo, ikaupat. Ang labing importante nga prinsipyo sa imprastraktura isip code nga kanunay nakong gigamit mao nga pinaagi lang sa pagtan-aw sa code, kinahanglan nako nga adunay tin-aw nga pagsabot kung unsa ang gipakatap didto, sa unsa nga estado ug sa unsa nga mga bili. Ug mao nga dili nako kinahanglan nga basahon ang dokumentasyon o pangutan-on si Vasya kung unsang mga parameter ang iyang gigamit sa paghimo sa among cluster. Kinahanglan ko lang nga magbukas sa usa ka file nga adunay extension sa tfvars, nga kanunay nga katumbas sa palibot, ug tan-awon ang tanan didto.

Usab, ayaw gamita ang target nga mga argumento aron makunhuran ang sakup. Alang niini mas sayon ​​​​ang paggamit sa gagmay nga mga module sa imprastraktura.

Usab, dili kinahanglan nga limitahan ug dugangan ang paralelismo. Kung ako adunay 150 nga mga kapanguhaan ug gusto nako nga madugangan ang paralelismo sa Amazon gikan sa default nga 10 hangtod 100, nan lagmit adunay usa ka butang nga sayup. O mahimo’g maayo kini karon, apan kung giingon sa Amazon nga daghan ka nga mga tawag, maproblema ka.

Gisulayan sa Terraform nga i-restart ang kadaghanan sa kini nga mga problema, apan halos wala ka makab-ot. Ang parallelism=1 usa ka importanteng butang nga gamiton kung makasugat ka ug bug sa sulod sa AWS API o sa sulod sa Terraform provider. Ug unya kinahanglan nimong ipiho: parallelism=1 ug maghulat hangtod mahuman sa Terraform ang usa ka tawag, dayon ang ikaduha, dayon ang ikatulo. Isa-isa niya silang ilusad.

Ang mga tawo kanunay nga mangutana kanako, "Ngano sa akong hunahuna nga ang mga workspace sa Terraform daotan?" Nagtuo ako nga ang prinsipyo sa imprastraktura isip code mao ang pagtan-aw kung unsa nga imprastraktura ang nahimo ug kung unsa ang mga kantidad.

Ang mga workspace wala gihimo sa mga tiggamit. Wala kini magpasabut nga ang mga tiggamit nagsulat sa mga isyu sa GitHub nga dili kami mabuhi kung wala ang mga workspace sa Terraform. Dili dili ingon niini. Ang Terraform Enterprise usa ka komersyal nga solusyon. Ang Terraform gikan sa HashiCorp nakahukom nga kinahanglan namo ang mga workspace, mao nga gi-file namo kini. Mas sayon ​​​​ko nga ibutang kini sa usa ka lahi nga folder. Unya adunay gamay pa nga mga file, apan kini mas klaro.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Giunsa pagtrabaho ang code? Sa tinuud, ang pagtrabaho kauban ang mga lista mao ra ang kasakit. Ug kuhaa ang Terraform nga dali. Dili kini ang butang nga makahimo sa tanan nga maayo alang kanimo. Dili kinahanglan nga iduso ang tanan nga nahisulat sa dokumentasyon didto.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang hilisgutan sa taho gisulat "para sa umaabot." Akong hisgutan kini sa mubo kaayo. Alang sa umaabot, kini nagpasabut nga ang 0.12 ipagawas sa dili madugay.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Ang 0.12 usa ka tonelada nga bag-ong butang. Kung gikan ka sa regular nga pagprograma, nan gimingaw ka sa tanan nga mga matang sa dinamikong mga bloke, mga galong, husto ug kondisyon nga pagtandi nga mga operasyon, diin ang wala ug tuo nga mga kilid wala kalkulado nga dungan, apan depende sa sitwasyon. Gimingaw ka kaayo niini, mao nga 0.12 ang makasulbad niini alang kanimo.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Apan! Kung magsulat ka nga dili kaayo ug labi ka yano, gamit ang andam nga mga module ug mga solusyon sa ikatulo nga partido, nan dili ka kinahanglan maghulat ug maglaum nga ang 0.12 moabut ug ayohon ang tanan alang kanimo.

Deskripsyon sa imprastraktura sa Terraform alang sa umaabot. Anton Babenko (2018)

Salamat sa report! Naghisgot ka bahin sa imprastraktura ingon code ug literal nga nagsulti usa ka pulong bahin sa mga pagsulay. Kinahanglan ba ang mga pagsulay sa mga module? Kang kinsang responsibilidad kini? Kinahanglan ba nako nga isulat kini sa akong kaugalingon o kini ba ang responsibilidad sa mga module?

Ang sunod nga tuig mapuno sa mga taho nga nakahukom kami nga sulayan ang tanan. Unsa ang sulayan mao ang pinakadako nga pangutana. Adunay daghang mga dependency, daghang mga pagdili gikan sa lainlaing mga provider. Kung ikaw ug ako nag-istoryahanay ug moingon ka: "Kinahanglan ko ang mga pagsulay," unya mangutana ako: "Unsa ang imong sulayan?" Nag-ingon ka nga magsulay ka sa imong rehiyon. Unya ako moingon nga kini dili molihok sa akong rehiyon. Sa ato pa, dili gani ta magkasabot niini. Wala’y labot nga adunay daghang mga problema sa teknikal. Sa ato pa, kung giunsa pagsulat kini nga mga pagsulay aron kini igo.

Aktibo ako nga nagsiksik niini nga hilisgutan, i.e. kung giunsa ang awtomatikong paghimo og mga pagsulay base sa imprastraktura nga imong gisulat. Kana mao, kung gisulat nimo kini nga kodigo, nan kinahanglan nako nga ipadagan kini, base niini makahimo ako mga pagsulay.

Terratest mao ang usa sa labing kanunay nga gihisgutan nga mga librarya nga nagtugot kanimo sa pagsulat sa mga pagsulay sa panagsama alang sa Terraform. Kini usa sa mga utilities. Mas gusto nako ang tipo sa DSL, pananglitan, rspec.

Anton, salamat sa report! Ako si Valery. Tugoti ako nga mangutana usa ka gamay nga pilosopikal nga pangutana. Adunay, conditionally, provisioning, adunay deployment. Ang pagprobisyon nagmugna sa akong imprastraktura, sa pag-deploy gipuno namo kini sa usa ka butang nga mapuslanon, pananglitan, mga server, aplikasyon, ug uban pa. Ug naa sa akong ulo nga ang Terraform labi pa alang sa paghatag, ug ang Ansible labi pa alang sa pag-deploy, tungod kay ang Ansible alang usab sa pisikal Ang imprastraktura nagtugot kanimo sa pag-instalar sa nginx, Postgres. Apan sa samang higayon, ang Ansible daw nagtugot sa paghatag, pananglitan, sa Amazon o Google nga mga kapanguhaan. Apan gitugotan ka usab sa Terraform nga mag-deploy sa pipila ka software gamit ang mga module niini. Gikan sa imong panglantaw, aduna bay usa ka matang sa utlanan nga nagdagan tali sa Terraform ug Ansible, asa ug unsa ang mas maayo nga gamiton? O, pananglitan, sa imong hunahuna nga ang Ansible basura na, kinahanglan nimong sulayan nga gamiton ang Terraform alang sa tanan?

Maayong pangutana, Valery. Nagtuo ko nga ang Terraform wala mausab sa mga termino sa katuyoan sukad sa 2014. Gibuhat kini alang sa imprastraktura ug namatay alang sa imprastraktura. Aduna pa kami ug kinahanglan nga magdumala sa pag-configure nga Ansible. Ang hagit mao nga adunay data sa user sulod sa launch_configuration. Ug didto imong gibira ang Ansible, ug uban pa. Kini ang standard nga kalainan nga akong gusto.

Kung naghisgot kami bahin sa matahum nga imprastraktura, nan adunay mga utility sama sa Packer nga nagkolekta niini nga imahe. Ug unya gigamit sa Terraform ang gigikanan sa datos aron makit-an kini nga imahe ug i-update ang launch_configuration niini. Sa ato pa, niining paagiha ang pipeline mao nga una natong ibira ang Tracker, dayon ibira ang Terraform. Ug kung mahitabo ang pagtukod, unya usa ka bag-ong pagbag-o ang mahitabo.

Hello! Salamat sa report! Ako si Misha, kompanya sa RBS. Mahimo nimong tawagan ang Ansible pinaagi sa provisioner kung maghimo usa ka kapanguhaan. Ang Ansible usab adunay usa ka hilisgutan nga gitawag nga dinamikong imbentaryo. Ug mahimo nimo una nga tawagan ang Terraform, ug dayon tawagan ang Ansible, nga magkuha mga kapanguhaan gikan sa estado ug ipatuman kini. Unsa ang mas maayo?

Gigamit sa mga tawo ang duha nga adunay managsama nga kalampusan. Para nako nga ang dinamikong imbentaryo sa Ansible usa ka kombenyente nga butang, kung wala kita maghisgot bahin sa autoscaling nga grupo. Tungod kay sa autoscaling nga grupo aduna na kitay kaugalingong toolkit, nga gitawag ug launch_configuration. Sa launch_configuration among girekord ang tanan nga kinahanglan ilunsad kung maghimo kami usa ka bag-ong kapanguhaan. Busa, sa Amazon, gamit ang dinamikong imbentaryo ug pagbasa sa Terraform ts file, sa akong opinyon, sobra ra. Ug kung mogamit ka sa ubang mga himan diin wala’y konsepto sa "autoscaling nga grupo", pananglitan, gigamit nimo ang DigitalOcean o uban pang provider kung diin wala’y grupo nga autoscaling, nan kinahanglan nimo nga mano-mano nga ibira ang API, pangitaa ang mga IP address, paghimo. usa ka dinamikong file sa imbentaryo, ug ang Ansible maglatagaw na niini. Kana mao, alang sa Amazon adunay launch_configuration, ug alang sa tanan adunay dinamikong imbentaryo.

Source: www.habr.com

Idugang sa usa ka comment