Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ħafna nies jafu u jużaw Terraform fix-xogħol tagħhom ta 'kuljum, iżda l-aħjar prattiki għaliha għadhom ma ġewx iffurmati. Kull tim irid jivvinta l-approċċi u l-metodi tiegħu stess.

L-infrastruttura tiegħek kważi ċertament tibda sempliċi: ftit riżorsi + ftit żviluppaturi. Maż-żmien, tikber f'kull xorta ta 'direzzjonijiet. Issib modi biex tiġbor ir-riżorsi f'moduli Terraform, torganizza l-kodiċi f'folders, u x'iktar jista 'possibilment tmur ħażin? (l-aħħar kliem famuż)

Iż-żmien jgħaddi u tħoss li l-infrastruttura tiegħek hija l-pet il-ġdid tiegħek, imma għaliex? Int inkwetat dwar bidliet inspjegabbli fl-infrastruttura, tibża' tmiss l-infrastruttura u l-kodiċi - bħala riżultat, iddewwem funzjonalità ġdida jew tnaqqas il-kwalità...

Wara tliet snin ta 'ġestjoni ta' kollezzjoni ta 'moduli tal-komunità Terraform għal AWS fuq Github u manutenzjoni fit-tul ta' Terraform fil-produzzjoni, Anton Babenko lest jaqsam l-esperjenza tiegħu: kif jikteb moduli TF sabiex ma jweġġgħux fil-futur.

Sa tmiem it-taħdita, il-parteċipanti se jkunu aktar familjari mal-prinċipji tal-ġestjoni tar-riżorsi f'Terraform, l-aħjar prattiki assoċjati ma 'moduli f'Terraform, u xi prinċipji ta' integrazzjoni kontinwa assoċjati mal-ġestjoni tal-infrastruttura.

Ċaħda ta 'responsabbiltà: Ninnota li dan ir-rapport huwa ddatat Novembru 2018—diġà għaddew sentejn. Il-verżjoni ta' Terraform 2 diskussa fir-rapport m'għadhiex appoġġjata. Matul l-aħħar 0.11 snin, ġew rilaxxati 2 ħarġiet ġodda, li fihom ħafna innovazzjonijiet, titjib u bidliet. Jekk jogħġbok oqgħod attent għal dan u iċċekkja d-dokumentazzjoni.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Referenzi:

Jisimni Anton Babenko. Xi wħud minnkom probabbilment użaw il-kodiċi li ktibt. Issa se nitkellem dwar dan b’aktar kunfidenza minn qatt qabel, għax għandi aċċess għall-istatistika.

Jien naħdem fuq Terraform u kont parteċipant attiv u kontributur għal numru kbir ta 'proġetti open source relatati ma' Terraform u Amazon mill-2015.

Minn dakinhar ktibt biżżejjed kodiċi biex inpoġġiha b'mod interessanti. U issa nipprova ngħidlek dwar dan.

Se nitkellem dwar l-intricacies u l-ispeċifiċitajiet ta 'ħidma ma' Terraform. Imma dak mhux verament is-suġġett ta 'HighLoad. U issa tifhem għaliex.

Maż-żmien, bdejt nikteb il-moduli Terraform. L-utenti kitbu mistoqsijiet, ktibthom mill-ġdid. Imbagħad ktibt diversi utilitajiet biex tifformattja l-kodiċi bl-użu ta 'ganċ ta' pre-commit, eċċ.

Kien hemm ħafna proġetti interessanti. Inħobb il-ġenerazzjoni tal-kodiċi għax inħobb li l-kompjuter jagħmel aktar u aktar xogħol għalija u għall-programmatur, għalhekk bħalissa qed naħdem fuq ġeneratur tal-kodiċi Terraform minn dijagrammi viżwali. Forsi xi wħud minnkom rajtuhom. Dawn huma kaxxi sbieħ bil-vleġeġ. U naħseb li huwa kbir jekk tista 'tikklikkja l-buttuna "Esportazzjoni" u ġġibu kollox bħala kodiċi.

Jien mill-Ukrajna. Ilni ngħix fin-Norveġja għal ħafna snin.

Ukoll, informazzjoni għal dan ir-rapport inġabret mingħand nies li jafu ismi u jsibuni fuq in-netwerks soċjali. Kważi dejjem għandi l-istess laqam.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

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

Kif semmejt, jiena l-mantenitur ewlieni tal-moduli Terraform AWS, li huwa wieħed mill-akbar repożitorji fuq GitHub fejn nospitaw moduli għall-aktar kompiti komuni: VPC, Autoscaling, RDS.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U dak li smajt issa huwa l-aktar bażiku. Jekk tiddubita li tifhem x'inhu Terraform, allura aħjar li tqatta' l-ħin tiegħek x'imkien ieħor. Hawn se jkun hemm ħafna termini tekniċi. U ma qagħadx lura milli niddikjara l-livell tar-rapport bħala l-ogħla. Dan ifisser li nista' nitkellem bl-użu tat-termini kollha possibbli mingħajr ħafna spjegazzjoni.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Terraform deher fl-2014 bħala utilità li tippermettilek tikteb, tippjana u timmaniġġja l-infrastruttura bħala kodiċi. Il-kunċett ewlieni hawnhekk huwa "infrastruttura bħala kodiċi."

Id-dokumentazzjoni kollha, kif għedt, hija miktuba fiha terraform.io. Nispera li ħafna nies jafu dwar dan is-sit u qraw id-dokumentazzjoni. Jekk iva, allura inti fil-post it-tajjeb.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Dan huwa kif jidher fajl ta 'konfigurazzjoni Terraform regolari, fejn l-ewwel niddefinixxu xi varjabbli.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

F'dan il-każ aħna niddefinixxu "aws_region".

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Imbagħad niddeskrivu liema riżorsi rridu noħolqu.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Aħna nħaddmu xi kmandi, b'mod partikolari "terraform init" sabiex tagħbija dipendenzi u fornituri.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U nħaddmu l-kmand "terraform apply" sabiex niċċekkjaw jekk il-konfigurazzjoni speċifikata taqbilx mar-riżorsi li ħloqna. Peress li ma ħloqna xejn qabel, Terraform iqanqalna biex noħolqu dawn ir-riżorsi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Aħna nikkonfermaw dan. B’hekk noħolqu barmil imsejjaħ seasnail.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Hemm ukoll diversi utilitajiet simili. Ħafna minnkom li jużaw Amazon jafu AWS CloudFormation jew Google Cloud Deployment Manager jew Azure Resource Manager. Kull wieħed minnhom għandu l-implimentazzjoni tiegħu stess ta 'xi tip għall-ġestjoni tar-riżorsi f'kull wieħed minn dawn il-fornituri tas-sħab pubbliċi. Terraform huwa utli b'mod speċjali għaliex jippermettilek timmaniġġja aktar minn 100 fornitur. (Iktar dettalji hawn)

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

L-għanijiet li Terraform segwiet mill-bidu nett:

  • Terraform jipprovdi veduta waħda tar-riżorsi.
  • Jippermettilek tappoġġja l-pjattaformi moderni kollha.
  • U Terraform kien iddisinjat mill-bidu nett bħala utilità li tippermettilek tibdel l-infrastruttura b'mod sikur u prevedibbli.

Fl-2014, il-kelma "prevedibbli" tinstema 'ħafna mhux tas-soltu f'dan il-kuntest.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Terraform hija utilità universali. Jekk għandek API, allura tista 'tikkontrolla assolutament kollox:

  • Tista' tuża aktar minn 120 fornitur biex tmexxi dak kollu li trid.
  • Per eżempju, tista 'tuża Terraform biex tiddeskrivi l-aċċess għar-repożitorji GitHub.
  • Tista 'anki toħloq u tagħlaq bugs f'Jira.
  • Tista 'timmaniġġja metriċi New Relic.
  • Tista 'anki toħloq fajls fil-dropbox jekk verament trid.

Dan kollu jinkiseb bl-użu ta' fornituri Terraform, li għandhom API miftuħa li tista' tiġi deskritta f'Go.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ejja ngħidu li bdejna nużaw Terraform, qrajna xi dokumentazzjoni fuq is-sit, rajna xi vidjow, u bdejna niktbu main.tf, kif urejt fuq is-slajds preċedenti.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U kollox huwa kbir, għandek fajl li joħloq VPC.

Jekk trid toħloq VPC, allura tispeċifika bejn wieħed u ieħor dawn it-12-il linja. Iddeskrivi f'liema reġjun trid toħloq, liema cidr_block ta' indirizzi IP tuża. Dak kollox.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Naturalment, il-proġett se jikber gradwalment.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U int tkun qed iżżid ton ta’ affarijiet ġodda hemmhekk: riżorsi, sorsi tad-dejta, tkun qed tintegra ma’ fornituri ġodda, f’daqqa waħda tkun trid tuża Terraform biex timmaniġġja l-utenti fil-kont GitHub tiegħek, eċċ. Tista’ tkun trid tuża fornituri differenti tad-DNS, jaqsmu kollox. Terraform jagħmilha faċli.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ejja nħarsu lejn l-eżempju li ġej.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Int żid gradwalment internet_gateway għax trid li r-riżorsi mill-VPC tiegħek ikollhom aċċess għall-internet. Din hija idea tajba.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ir-riżultat huwa dan main.tf:

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Din hija l-parti ta 'fuq ta' main.tf.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Din hija l-parti t'isfel ta 'main.tf.

Imbagħad żid is-subnet. Saż-żmien li trid iżżid NAT gateways, rotot, routing tables u mazz ta 'subnets oħra, ma jkollokx 38 linja, iżda madwar 200-300 linja.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Jiġifieri, il-fajl main.tf tiegħek qed jikber gradwalment. U ħafna drabi n-nies ipoġġu kollox f'fajl wieħed. 10-20 Kb jidher fil-main.tf. Immaġina li 10-20 Kb huwa kontenut tat-test. U kollox huwa konness ma 'kollox. Dan bil-mod il-mod qed isir diffiċli biex taħdem miegħu. 10-20 Kb huwa każ ta 'utent tajjeb, kultant aktar. U n-nies mhux dejjem jaħsbu li dan huwa ħażin.

Bħal fil-programmazzjoni regolari, jiġifieri mhux infrastruttura bħala kodiċi, aħna mdorrijin nużaw mazz ta 'klassijiet, pakketti, moduli, gruppi differenti differenti. Terraform jippermettilek tagħmel ħafna l-istess ħaġa.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

  • Il-kodiċi qed jikber.
  • Id-dipendenzi bejn ir-riżorsi qed jikbru wkoll.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U għandna bżonn kbir, kbir. Nifhmu li ma nistgħux ngħixu hekk aktar. Il-kodiċi tagħna qed isir immens. 10-20 Kb huwa, ovvjament, mhux vast ħafna, iżda qed nitkellmu biss dwar il-munzell tan-netwerk, jiġifieri żidt biss riżorsi tan-netwerk. Aħna mhux qed nitkellmu dwar Applikazzjoni Load Balancer, iskjerament ES cluster, Kubernetes, eċċ, fejn 100 Kb jistgħu faċilment jiġu weaved. Jekk tikteb dan kollu, dalwaqt titgħallem li Terraform jipprovdi moduli Terraform.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Il-moduli Terraform huma konfigurazzjoni Terraform awtonoma li hija ġestita bħala grupp. Dak kollu li għandek bżonn tkun taf dwar il-moduli Terraform. Mhuma intelliġenti xejn, ma jippermettulekx tagħmel xi konnessjonijiet kumplessi skont xi ħaġa. Dan kollu jaqa 'fuq l-ispallejn ta' l-iżviluppaturi. Jiġifieri, din hija biss xi tip ta 'konfigurazzjoni Terraform li diġà ktibt. U tista 'sempliċement issejjaħ bħala grupp.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Għalhekk qed nippruvaw nifhmu kif se nottimizzaw l-10-20-30 Kb tagħna tal-kodiċi. Qed nirrealizzaw gradwalment li għandna bżonn nużaw xi moduli.

L-ewwel tip ta 'moduli li tiltaqa' magħhom huma moduli tar-riżorsi. Ma jifhmux x'inhi l-infrastruttura tiegħek, x'inhu n-negozju tiegħek, fejn u x'inhuma l-kundizzjonijiet. Dawn huma eżattament il-moduli li jien, flimkien mal-komunità tas-sors miftuħ, namministra, u li aħna ressaqna bħala l-blokki tal-bini inizjali ħafna għall-infrastruttura tiegħek.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Eżempju ta' modulu tar-riżorsi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Meta nsejħu modulu tar-riżorsi, aħna nispeċifikaw minn liema triq għandna tagħbija l-kontenut tiegħu.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Nindikaw liema verżjoni rridu tniżżel.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ngħaddu mazz argumenti hemmhekk. Dak kollox. Dak kollu li għandna bżonn inkunu nafu meta nużaw dan il-modulu.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ħafna nies jaħsbu li jekk jużaw l-aħħar verżjoni, kollox ikun stabbli. Imma le. L-infrastruttura trid tiġi verżjoni rridu nwieġbu b'mod ċar għal liema verżjoni ġie skjerat dan jew dak il-komponent.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Hawn hu l-kodiċi li jinsab ġewwa dan il-modulu. Modulu tal-grupp tas-sigurtà. Hawnhekk l-iscroll imur sal-640 linja. Il-ħolqien ta 'riżorsa ta' sigurtà fl-Amazon f'kull konfigurazzjoni possibbli hija kompitu mhux trivjali ħafna. Mhuwiex biżżejjed li sempliċement toħloq grupp tas-sigurtà u tgħidlu liema regoli tgħaddilu. Ikun sempliċi ħafna. Hemm miljun restrizzjonijiet differenti ġewwa Amazon. Per eżempju, jekk tuża Endpoint tal-VPC, lista tal-prefissi, APIs varji u jipprova jgħaqqad dan kollu ma 'kull ħaġa oħra, allura Terraform ma jippermettilekx tagħmel dan. U l-Amazon API lanqas ma tippermetti dan. Għalhekk, għandna bżonn naħbu din il-loġika terribbli kollha f'modulu u nagħtu l-kodiċi tal-utent li jidher eżatt bħal dan.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

L-utent m'għandux għalfejn ikun jaf kif isir ġewwa.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

It-tieni tip ta 'moduli, li jikkonsisti f'moduli ta' riżorsi, diġà jsolvu problemi li huma aktar applikabbli għan-negozju tiegħek. Ħafna drabi dan huwa post li huwa estensjoni għal Terraform u jistabbilixxi xi valuri stretti għat-tikketti, għall-istandards tal-kumpanija. Tista 'wkoll iżżid funzjonalità hemmhekk li Terraform bħalissa ma jippermettix li tuża. Dan huwa dritt issa. Issa l-verżjoni 0.11, li waslet biex issir xi ħaġa tal-passat. Iżda xorta waħda, preproċessuri, jsonnet, cookiecutter u mazz ta 'affarijiet oħra huma l-mekkaniżmu awżiljarju li għandu jintuża għal xogħol sħiħ.

Sussegwentement ser nuri xi eżempji ta' dan.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Il-modulu tal-infrastruttura jissejjaħ eżattament bl-istess mod.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Is-sors minn fejn tniżżel il-kontenut huwa indikat.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Mazz ta 'valuri huma mgħoddija u mgħoddija f'dan il-modulu.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Sussegwentement, ġewwa dan il-modulu, mazz ta 'moduli ta' riżorsi huma msejħa biex jinħoloq VPC jew Applikazzjoni Load Balancer, jew biex jinħoloq grupp ta 'sigurtà jew għal cluster ta' Servizz ta 'Kontenitur Elastiku.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Hemm żewġ tipi ta 'moduli. Dan huwa importanti li wieħed jifhem għaliex il-biċċa l-kbira tal-informazzjoni li għaqqadt f'dan ir-rapport mhijiex miktuba fid-dokumentazzjoni.

U d-dokumentazzjoni f'Terraform bħalissa hija pjuttost problematika għax tgħid biss li hemm dawn il-karatteristiċi, tista 'tużahom. Iżda hi ma tgħidx kif tuża dawn il-karatteristiċi, għaliex huwa aħjar li tużahom. Għalhekk, numru kbir ħafna ta 'nies jiktbu xi ħaġa li ma jistgħux jgħixu magħha.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ejja nagħtu ħarsa lejn kif tikteb dawn il-moduli jmiss. Imbagħad naraw kif isejħulhom u kif taħdem bil-kodiċi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Reġistru Terraform - https://registry.terraform.io/

Tip #0 huwa li ma tiktebx moduli tar-riżorsi. Ħafna minn dawn il-moduli diġà huma miktuba għalik. Kif għedt, huma sors miftuħ, ma fihom ebda loġika tan-negozju tiegħek, m'għandhomx valuri hardcoded għall-indirizzi IP, passwords, eċċ. Il-modulu huwa flessibbli ħafna. U x'aktarx li diġà nkiteb. Hemm ħafna moduli għar-riżorsi mill-Amazon. Madwar 650. U ħafna minnhom huma ta 'kwalità tajba.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

F'dan l-eżempju, xi ħadd ġie għandek u qallek, “Irrid inkun kapaċi nmexxi database. Oħloq modulu sabiex inkun nista' noħloq database." Il-persuna ma tafx id-dettalji ta 'implimentazzjoni la ta' Amazon jew Terraform. Huwa sempliċement jgħid: "Irrid immaniġġja MSSQL." Jiġifieri nfissru li se jsejjaħ il-modulu tagħna, jgħaddi t-tip ta 'magna hemmhekk, u jindika ż-żona tal-ħin.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U persuna m'għandhiex tkun taf li se noħolqu żewġ riżorsi differenti ġewwa dan il-modulu: waħda għal MSSQL, it-tieni għal kull ħaġa oħra, biss għaliex f'Terraform 0.11 ma tistax tispeċifika valuri taż-żona tal-ħin bħala fakultattivi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U fil-ħruġ minn dan il-modulu, persuna tkun tista 'sempliċement tirċievi indirizz. Mhux se jkun jaf minn liema database, minn liema riżors qed noħolqu dan kollu internament. Dan huwa element importanti ħafna ta 'ħabi. U dan japplika mhux biss għal dawk il-moduli li huma pubbliċi f'sors miftuħ, iżda wkoll għal dawk il-moduli li se tikteb fil-proġetti u t-timijiet tiegħek.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Dan huwa t-tieni argument, li huwa pjuttost importanti jekk ilek tuża Terraform għal xi żmien. Għandek repożitorju li fih tpoġġi l-moduli Terraform kollha tiegħek għall-kumpanija tiegħek. U huwa pjuttost normali li maż-żmien dan il-proġett jikber għal daqs ta 'wieħed jew żewġ megabytes. Dan tajjeb.

Iżda l-problema hija kif Terraform isejjaħ dawn il-moduli. Pereżempju, jekk issejjaħ modulu biex toħloq kull utent individwali, Terraform l-ewwel jgħabbi r-repożitorju kollu u mbagħad jinnaviga lejn il-folder fejn jinsab dak il-modulu speċifiku. B'dan il-mod inti tniżżel megabyte wieħed kull darba. Jekk timmaniġġja 100 jew 200 utent, imbagħad tniżżel 100 jew 200 megabytes, u mbagħad mur f'dak il-folder. Allura naturalment ma tridx tniżżel mazz ta 'għalf kull darba li tolqot "Terraform init".

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Hemm żewġ soluzzjonijiet għal din il-problema. L-ewwel huwa li tuża mogħdijiet relattivi. Dan il-mod tindika fil-kodiċi li l-folder huwa lokali (./). U qabel ma tniedi xi ħaġa, tagħmel klonu Git ta 'dan ir-repożitorju lokalment. Dan il-mod inti tagħmel dan darba.

Hemm, ovvjament, ħafna aspetti negattivi. Per eżempju, ma tistax tuża l-verżjoni. U dan kultant huwa diffiċli biex tgħix miegħu.

It-tieni soluzzjoni. Jekk għandek ħafna sottomoduli u diġà għandek xi tip ta 'pipeline stabbilit, allura hemm il-proġett MBT, li jippermettilek tiġbor ħafna pakketti differenti minn monorepożitorju u ttellahom fuq S3. Dan huwa mod tajjeb ħafna. Għalhekk, il-fajl iam-user-1.0.0.zip se jiżen biss 1 Kb, minħabba li l-kodiċi biex tinħoloq din ir-riżorsa hija żgħira ħafna. U se taħdem ħafna aktar malajr.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ejja nitkellmu dwar dak li ma jistax jintuża fil-moduli.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Għaliex dan il-ħażen fil-moduli? L-agħar ħaġa hija li tassumi l-utent. Assumi l-utent huwa għażla ta 'awtentikazzjoni tal-fornitur li tista' tintuża minn nies differenti. Pereżempju, aħna lkoll se nassimilaw ir-rwol. Dan ifisser li Terraform se tieħu dan ir-rwol. U mbagħad b'dan ir-rwol se twettaq azzjonijiet oħra.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U l-ħażen huwa li jekk Vasya jħobb jgħaqqad ma 'Amazon b'mod wieħed, pereżempju, billi juża l-varjabbli tal-ambjent default, u Petya jħobb juża ċ-ċavetta kondiviża tiegħu, li għandu f'post sigriet, allura ma tistax tispeċifika t-tnejn f' Terraform. U sabiex ma jesperjenzawx tbatija, m'hemmx għalfejn tindika din il-blokka fil-modulu. Dan għandu jiġi indikat f'livell ogħla. Jiġifieri għandna modulu tar-riżorsi, modulu tal-infrastruttura u kompożizzjoni fuq nett. U dan għandu jiġi indikat x'imkien ogħla.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

It-tieni ħażen huwa l-provider. Hawnhekk il-ħażen mhux daqshekk trivjali, għax jekk tikteb kodiċi u taħdem għalik, allura tista 'taħseb li jekk taħdem, allura għaliex ibiddlu.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Il-ħażen huwa li mhux dejjem tikkontrolla meta dan il-provveditur se jitnieda, l-ewwelnett. U t-tieni, ma tikkontrollax xi tfisser aws ec2, jiġifieri qed nitkellmu dwar Linux jew Windows issa. Allura ma tistax tikteb xi ħaġa li taħdem l-istess fuq sistemi operattivi differenti jew għal każijiet ta 'utent differenti.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

L-aktar eżempju komuni, li huwa indikat ukoll fid-dokumentazzjoni uffiċjali, huwa li jekk tikteb aws_instance u tispeċifika mazz ta 'argumenti, allura m'hemm xejn ħażin f'dan jekk tispeċifika l-provisioner "local-exec" hemmhekk u tmexxi ansible- playbook .

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Fil-fatt, iva, m'hemm xejn ħażin f'dan. Imma litteralment dalwaqt tirrealizza li din il-ħaġa lokali-exec ma teżistix, pereżempju, fil launch_configuration.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U meta tuża launch_configuration, u trid toħloq grupp ta 'autoscaling minn istanza waħda, allura f' launch_configuration m'hemm l-ebda kunċett ta' "provisioner". Hemm il-kunċett ta '"data tal-utent".

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Għalhekk, soluzzjoni aktar universali hija li tuża d-dejta tal-utent. U se titnieda jew fuq l-istanza nnifisha, meta l-istanza tkun mixgħula, jew fl-istess data tal-utent, meta l-grupp ta 'autoscaling juża din launch_configuration.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Jekk xorta trid tħaddem il-provisioner, minħabba li huwa komponent tal-inkullar, meta tinħoloq riżorsa waħda, f'dak il-mument għandek bżonn tmexxi l-provisioner tiegħek, il-kmand tiegħek. Hemm ħafna sitwazzjonijiet bħal dawn.

U l-aktar riżors korrett għal dan jissejjaħ null_resource. Null_resource hija riżors finta li qatt ma tinħoloq fil-fatt. Ma tmiss xejn, l-ebda API, l-ebda autoscaling. Iżda jippermettilek tikkontrolla meta tmexxi l-kmand. F'dan il-każ, il-kmand jitmexxa waqt il-ħolqien.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

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

Hemm diversi sinjali. Mhux se nidħol fis-sinjali kollha f'dettall kbir. Hemm artiklu dwar dan. Imma jekk ħdimt ma 'Terraform jew użajt moduli ta' nies oħra, allura spiss innutajt li ħafna moduli, bħall-biċċa l-kbira tal-kodiċi f'sors miftuħ, huma miktuba minn nies għall-bżonnijiet tagħhom stess. Raġel kitebha u solva l-problema tiegħu. Waħħalha f'GitHub, ħalliha tgħix. Se jgħix, imma jekk ma jkunx hemm dokumentazzjoni u eżempji hemmhekk, allura ħadd ma jużah. U jekk ma jkun hemm l-ebda funzjonalità li tippermettilek issolvi ftit aktar mill-kompitu speċifiku tagħha, allura ħadd ma jużaha lanqas. Hemm ħafna modi kif titlef l-utenti.

Jekk trid tikteb xi ħaġa sabiex in-nies jużawha, allura nirrakkomanda li ssegwi dawn is-sinjali.

Dawn huma:

  • Dokumentazzjoni u eżempji.
  • Funzjonalità sħiħa.
  • Inadempjenzi raġonevoli.
  • Kodiċi nadif.
  • Testijiet.

It-testijiet huma sitwazzjoni differenti minħabba li huma pjuttost diffiċli biex tikteb. Nemmen aktar fid-dokumentazzjoni u l-eżempji.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Allura, ħares lejn kif tikteb moduli. Hemm żewġ argumenti. L-ewwel, li huwa l-aktar importanti, huwa li ma tikteb jekk tista ', għaliex mazz ta' nies diġà għamlu dawn il-kompiti qabel int. U t-tieni, jekk xorta tiddeċiedi, imbagħad ipprova ma tużax fornituri f'moduli u provvedituri.

Din hija l-parti l-griża tad-dokumentazzjoni. Issa forsi tkun qed taħseb: “Xi ħaġa mhix ċara. Mhux konvint." Imma naraw sitt xhur.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Issa ejja nitkellmu dwar kif insejħu dawn il-moduli.

Aħna nifhmu li l-kodiċi tagħna jikber maż-żmien. M'għadniex fajl wieħed, diġà għandna 20 fajl. Huma kollha f'folder wieħed. Jew forsi f'ħames folders. Forsi qed nibdew inkissruhom b'xi mod skont ir-reġjun, b'xi komponenti. Imbagħad nifhmu li issa għandna xi bidu ta’ sinkronizzazzjoni u orkestrazzjoni. Jiġifieri, irridu nifhmu x'għandna nagħmlu jekk inbiddlu r-riżorsi tan-netwerk, x'għandna nagħmlu mal-bqija tar-riżorsi tagħna, kif nikkawżaw dawn id-dipendenzi, eċċ.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Hemm żewġ estremi. L-ewwel estrem huwa kollu f'wieħed. Għandna fajl wieħed prinċipali. Għalissa, din kienet l-aħjar prattika uffiċjali fuq il-websajt Terraform.

Imma issa huwa miktub bħala deprecated u mneħħija. Maż-żmien, il-komunità Terraform induna li din kienet 'il bogħod mill-aħjar prattika, għaliex in-nies bdew jużaw il-proġett b'modi differenti. U hemm problemi. Pereżempju, meta nilnukaw id-dipendenzi kollha f'post wieħed. Hemm sitwazzjonijiet meta nikklikkjaw "Pjan Terraform" u sakemm Terraform jaġġorna l-istati tar-riżorsi kollha, jista 'jgħaddi ħafna ħin.

Ħafna ħin huwa, pereżempju, 5 minuti. Għal xi wħud dan huwa ħafna ħin. Rajt każijiet fejn ħadu 15-il minuta. L-API tal-AWS qattgħet 15-il minuta tipprova tara x'kien qed jiġri bl-istat ta 'kull riżorsa. Din hija żona kbira ħafna.

U, naturalment, problema relatata se tidher meta trid tibdel xi ħaġa f'post wieħed, imbagħad tistenna 15-il minuta, u tagħtik tila ta 'xi bidliet. Beżqet, ktibt "Iva", u xi ħaġa marret ħażin. Dan huwa eżempju reali ħafna. Terraform ma jipprovax jipproteġik mill-problemi. Jiġifieri, ikteb dak li trid. Se jkun hemm problemi - il-problemi tiegħek. Filwaqt li Terraform 0.11 mhux qed jipprova jgħinek bl-ebda mod. Hemm ċerti postijiet interessanti f'0.12 li jippermettulek tgħid: "Vasya, int verament trid dan, tista' tiġi f'sensiek?"

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

It-tieni mod huwa li titnaqqas din iż-żona, jiġifieri, sejħiet minn post wieħed jistgħu jkunu inqas konnessi minn post ieħor.

L-unika problema hija li għandek bżonn tikteb aktar kodiċi, jiġifieri trid tiddeskrivi varjabbli f'numru kbir ta 'fajls u taġġorna dan. Xi nies ma jogħġobhomx. Dan huwa normali għalija. U xi nies jaħsbu: "Għaliex tikteb dan f'postijiet differenti, se npoġġiha kollha f'post wieħed." Dan huwa possibbli, iżda dan huwa t-tieni estrem.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Min għandu dan kollu jgħix f’post wieħed? Wieħed, tnejn, tlieta, jiġifieri, xi ħadd qed jużaha.

U min isejjaħ komponent wieħed partikolari, blokka waħda jew modulu infrastrutturali wieħed? Ħames sa seba’ persuni. Dan jibred.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

L-aktar tweġiba komuni hija x'imkien fin-nofs. Jekk il-proġett huwa kbir, allura ħafna drabi jkollok sitwazzjoni fejn l-ebda soluzzjoni ma tkun adattata u mhux kollox jaħdem hemmhekk, għalhekk tispiċċa b'taħlita. M'hemm xejn ħażin f'dan, sakemm tifhem li t-tnejn għandhom vantaġġi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Jekk xi ħaġa nbidlet fil-munzell VPC u ridt tapplika dawn il-bidliet għal EC2, jiġifieri ridt taġġorna l-grupp ta 'autoscaling għaliex kellek subnet ġdid, allura nsejjaħ dan it-tip ta' orkestrazzjoni tad-dipendenza. Hemm xi soluzzjonijiet: min juża xiex?

Nista' nissuġġerixxi x'soluzzjonijiet hemm. Tista 'tuża Terraform biex tagħmel il-maġija, jew tista' tuża makefiles biex tuża Terraform. U ara jekk xi ħaġa nbidlitx hemm, tista 'tniediha hawn.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Kif togħġbok din id-deċiżjoni? Xi ħadd jemmen li din hija soluzzjoni friska? Nara tbissima, jidher li daħlu dubji.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Naturalment, tippruvax dan id-dar. Terraform qatt ma kien iddisinjat biex jitmexxa minn Terraform.

F’rapport wieħed qaluli: “Le, dan mhux se jaħdem.” Il-punt hu li m'għandux jaħdem. Għalkemm jidher daqshekk impressjonanti meta tista 'tniedi Terraform minn Terraform, u mbagħad Terraform, m'għandekx tagħmel dan. Terraform għandu dejjem jibda faċilment.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

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

Jekk għandek bżonn l-orkestrazzjoni tas-sejħa meta xi ħaġa tkun inbidlet f'post wieħed, allura hemm Terragrunt.

Terragrunt hija utilità, add-on għal Terraform, li tippermettilek tikkoordina u orkestra sejħiet għal moduli tal-infrastruttura.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Fajl ta 'konfigurazzjoni tipiku ta' Terraform jidher bħal dan.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Int tispeċifika liema modulu speċifiku trid issejjaħ.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Liema dipendenzi għandu l-modulu?

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U liema argumenti jaċċetta dan il-modulu. Dak hu dak kollu li għandek tkun taf dwar Terragrunt.

Id-dokumentazzjoni tinsab hemm, u hemm 1 stilla fuq GitHub. Iżda f'ħafna każijiet dan huwa dak li għandek bżonn tkun taf. U dan huwa faċli ħafna li jiġi implimentat f'kumpaniji li għadhom qed jibdew jaħdmu ma 'Terraform.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Allura l-orkestrazzjoni hija Terragrunt. Hemm għażliet oħra.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Issa ejja nitkellmu dwar kif taħdem mal-kodiċi.

Jekk għandek bżonn iżżid karatteristiċi ġodda mal-kodiċi tiegħek, f'ħafna każijiet dan huwa faċli. Qed tikteb riżors ġdid, kollox huwa sempliċi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Jekk għandek xi riżors li ħloqt minn qabel, pereżempju, tgħallimt dwar Terraform wara li ftaħt kont AWS u trid tuża r-riżorsi li diġà għandek, allura jkun xieraq li testendi l-modulu tiegħek b'dan il-mod, sabiex tappoġġja l-użu tar-riżorsi eżistenti.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U appoġġja l-ħolqien ta 'riżorsi ġodda bl-użu tar-riżorsi tal-blokk.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Fuq l-output aħna dejjem ritorn output id jiddependi fuq dak li kien użat.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

It-tieni problema sinifikanti ħafna f'Terraform 0.11 qed taħdem ma 'listi.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Id-diffikultà hija li jekk ikollna tali lista ta 'utenti.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U meta noħolqu dawn l-utenti bl-użu tar-riżorsi tal-blokki, allura kollox imur tajjeb. Aħna ngħaddu mill-lista kollha, u noħolqu fajl għal kull wieħed. Kollox sew. U mbagħad, pereżempju, l-utent3, li jinsab fin-nofs, għandu jitneħħa minn hawn, allura r-riżorsi kollha li nħolqu warajh se jiġu maħluqa mill-ġdid minħabba li l-indiċi se jinbidel.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Ħidma ma 'listi f'ambjent stateful. X'inhu ambjent stateful? Din hija s-sitwazzjoni fejn jinħoloq valur ġdid meta tinħoloq din ir-riżorsa. Pereżempju, AWS Access Key jew AWS Secret Key, jiġifieri meta noħolqu utent, nirċievu Aċċess jew Ċavetta Sigrieta ġdida. U kull darba li nħassru utent, dan l-utent ikollu ċavetta ġdida. Iżda dan mhuwiex feng shui, għax l-utent ma jridx ikun ħbieb magħna jekk noħolqu utent ġdid għalih kull darba li xi ħadd iħalli t-tim.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Din hija s-soluzzjoni. Dan huwa kodiċi miktub f'Jsonnet. Jsonnet hija lingwa ta 'templating minn Google.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Dan il-kmand jippermettilek li taċċetta dan il-mudell u bħala output jirritorna fajl json li huwa magħmul skont il-mudell tiegħek.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Il-mudell jidher bħal dan.

Terraform jippermettilek taħdem kemm ma 'HCL kif ukoll ma' Json bl-istess mod, allura jekk għandek il-ħila li tiġġenera Json, allura tista 'tiżloqha f'Terraform. Il-fajl bl-estensjoni .tf.json se jitniżżel b'suċċess.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U mbagħad naħdmu magħha bħas-soltu: terraform init, terramorm applika. U noħolqu żewġ utenti.

Issa ma nibżgħux jekk xi ħadd jitlaq mit-tim. Aħna ser neditjaw biss il-fajl json. Vasya Pupkin telaq, Petya Pyatochkin baqa '. Petya Pyatochkin mhux se tirċievi ċavetta ġdida.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

L-integrazzjoni ta' Terraform ma' għodod oħra mhuwiex verament xogħol Terraform. Terraform inħoloq bħala pjattaforma għall-ħolqien tar-riżorsi u dak hu. U dak kollu li joħroġ aktar tard mhuwiex tħassib ta 'Terraform. U m'hemmx għalfejn tinsiġha hemmhekk. Hemm Ansible, li jagħmel dak kollu li għandek bżonn.

Iżda jinqalgħu sitwazzjonijiet meta rridu nespandu Terraform u nsejħu xi kmand wara li tkun tlestiet xi ħaġa.

L-ewwel mod. Noħolqu output fejn niktbu dan il-kmand.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

U mbagħad insejħu dan il-kmand mill-output terraform tal-qoxra u speċifika l-valur li rridu. Għalhekk, il-kmand jiġi esegwit bil-valuri sostitwiti kollha. Huwa komdu ħafna.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

It-tieni mod. Dan huwa l-użu ta 'null_resource jiddependi fuq bidliet fl-infrastruttura tagħna. Nistgħu nsejħu l-istess exe lokali hekk kif l-ID ta 'xi riżorsi tinbidel.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Naturalment, dan kollu huwa bla xkiel fuq il-karta, minħabba li Amazon, bħall-fornituri pubbliċi l-oħra kollha, għandha mazz ta 'każijiet tat-tarf tagħha stess.

L-aktar każ ta 'tarf komuni huwa li meta tiftaħ kont AWS, huwa importanti liema reġjuni tuża; din il-karatteristika hija attivata hemmhekk; forsi ftaħtu wara Diċembru 2013; forsi qed tuża default f'VPC eċċ. Hemm ħafna restrizzjonijiet. U Amazon xerredhom madwar id-dokumentazzjoni.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Hemm ftit affarijiet li nirrakkomanda li nevita.

Biex tibda, evita l-argumenti kollha mhux sigrieti ġewwa l-pjan Terraform jew Terraform CLI. Dan kollu jista 'jitqiegħed jew f'fajl tfvars jew f'varjabbli ambjentali.

Imma m'għandekx bżonn timmemorizza dan il-kmand maġiku kollu. Terraform pjan - var u off immorru. L-ewwel varjabbli hija var, it-tieni varjabbli hija var, it-tielet, ir-raba '. L-iktar prinċipju importanti tal-infrastruttura bħala kodiċi li nuża l-aktar spiss huwa li sempliċement billi nħares lejn il-kodiċi, għandu jkolli fehim ċar ta 'x'inhu skjerat hemmhekk, f'liema stat u b'liema valuri. U għalhekk m'għandix għalfejn naqra d-dokumentazzjoni jew nistaqsi lil Vasya liema parametri uża biex joħloq il-cluster tagħna. Għandi bżonn biss li tiftaħ fajl bl-estensjoni tfvars, li ħafna drabi taqbel mal-ambjent, u nħares lejn kollox hemm.

Ukoll, tużax argumenti fil-mira biex tnaqqas l-ambitu. Għal dan huwa ħafna aktar faċli li tuża moduli ta 'infrastruttura żgħar.

Ukoll, m'hemmx bżonn li jiġi limitat u miżjud il-paralleliżmu. Jekk għandi riżorsi 150 u nixtieq inżid il-paralleliżmu tal-Amazon mill-default 10 għal 100, allura x'aktarx xi ħaġa tmur ħażin. Jew issa jista 'jmur tajjeb, imma meta Amazon tgħid li qed tagħmel wisq sejħiet, tkun fl-inkwiet.

Terraform se jipprova jerġa 'jibda ħafna minn dawn il-problemi, iżda inti se tikseb kważi xejn. Il-paralleliżmu=1 hija ħaġa importanti li tuża jekk tfixkel xi bug ġewwa l-API AWS jew ġewwa l-fornitur Terraform. U mbagħad trid tispeċifika: parallelism=1 u stenna sakemm Terraform jispiċċa sejħa waħda, imbagħad it-tieni, imbagħad it-tielet. Se jniedihom wieħed wieħed.

In-nies spiss jistaqsuni, "Għaliex naħseb li l-ispazji tax-xogħol ta' Terraform huma ħżiena?" Nemmen li l-prinċipju tal-infrastruttura bħala kodiċi huwa li wieħed jara liema infrastruttura nħolqot u b'liema valuri.

L-ispazji tax-xogħol ma nħolqux mill-utenti. Dan ma jfissirx li l-utenti kitbu fi kwistjonijiet GitHub li ma nistgħux ngħixu mingħajr spazji tax-xogħol Terraform. Le mhux bħal dan. Terraform Enterprise hija soluzzjoni kummerċjali. Terraform minn HashiCorp iddeċieda li kellna bżonn spazji tax-xogħol, għalhekk ippreżentajna. Insibha ħafna aktar faċli li npoġġiha f'folder separat. Imbagħad se jkun hemm ftit aktar fajls, iżda se jkun aktar ċar.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Kif taħdem bil-kodiċi? Fil-fatt, ix-xogħol mal-listi huwa l-unika uġigħ. U ħu Terraform aktar faċli. Din mhix il-ħaġa li tagħmel kollox tajjeb għalik. M'hemmx bżonn li shove dak kollu li huwa miktub fid-dokumentazzjoni hemmhekk.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Is-suġġett tar-rapport inkiteb “għall-futur.” Jien ser nitkellem dwar dan fil-qosor ħafna. Għall-futur, dan ifisser li 0.12 se jiġi rilaxxat dalwaqt.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

0.12 huwa ton ta 'għalf ġdid. Jekk ġej minn programmazzjoni regolari, allura titlef kull xorta ta 'blokki dinamiċi, linji, operazzjonijiet ta' tqabbil korretti u kondizzjonali, fejn in-naħat tax-xellug u tal-lemin mhumiex ikkalkulati simultanjament, iżda skont is-sitwazzjoni. Timissha ħafna, għalhekk 0.12 issolviha għalik.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Imma! Jekk tikteb inqas u aktar sempliċi, billi tuża moduli lesti u soluzzjonijiet ta 'partijiet terzi, allura ma jkollokx għalfejn tistenna u tittama li 0.12 jiġi u jirranġa kollox għalik.

Deskrizzjoni tal-infrastruttura f'Terraform għall-futur. Anton Babenko (2018)

Grazzi tar-rapport! Tkellimt dwar l-infrastruttura bħala kodiċi u litteralment għidt kelma waħda dwar it-testijiet. Huma meħtieġa testijiet fil-moduli? Ta’ min hi din ir-responsabbiltà? Għandi bżonn nikteb jien jew hija r-responsabbiltà tal-moduli?

Is-sena d-dieħla tkun mimlija rapporti li ddeċidejna li nittestjaw kollox. X'għandek tittestja hija l-akbar mistoqsija. Hemm ħafna dipendenzi, ħafna restrizzjonijiet minn fornituri differenti. Meta jien u int qed nitkellmu u tgħid: “Għandi bżonn it-testijiet,” imbagħad nistaqsi: “X’se tittestja?” Tgħid li se tittestja fir-reġjun tiegħek. Imbagħad ngħid li dan ma jaħdimx fir-reġjun tiegħi. Jiġifieri lanqas se nkunu nistgħu naqblu dwar dan. Biex ma nsemmux li hemm ħafna problemi tekniċi. Jiġifieri kif tikteb dawn it-testijiet sabiex ikunu adegwati.

Qed nirriċerka b'mod attiv dan is-suġġett, jiġifieri kif niġġenera awtomatikament testijiet ibbażati fuq l-infrastruttura li ktibt. Jiġifieri, jekk ktibt dan il-kodiċi, allura għandi bżonn inħaddem, ibbażat fuq dan nista 'noħloq testijiet.

Terratest hija waħda mill-libreriji l-aktar imsemmija spiss li tippermettilek tikteb testijiet ta 'integrazzjoni għal Terraform. Din hija waħda mill-utilitajiet. Nippreferi t-tip DSL, pereżempju, rspec.

Anton, grazzi tar-rapport! Jisimni Valery. Ħa nagħmel ftit mistoqsija filosofika. Hemm, kondizzjonali, forniment, hemm skjerament. Il-provisioning joħloq l-infrastruttura tiegħi, fl-iskjerament nimlewh b'xi ħaġa utli, pereżempju, servers, applikazzjonijiet, eċċ. U huwa f'rasi li Terraform huwa aktar għall-forniment, u Ansible huwa aktar għall-iskjerament, għaliex Ansible huwa wkoll għall-infrastruttura fiżika. jippermettilek tinstalla nginx, Postgres. Iżda fl-istess ħin, Ansible jidher li jippermetti l-forniment, pereżempju, tar-riżorsi ta 'Amazon jew Google. Iżda Terraform jippermettilek ukoll li tuża xi softwer bl-użu tal-moduli tiegħu. Mill-perspettiva tiegħek, hemm xi tip ta 'fruntiera li tgħaddi bejn Terraform u Ansible, fejn u x'inhu aħjar li tuża? Jew, pereżempju, taħseb li Ansible diġà huwa żibel, għandek tipprova tuża Terraform għal kollox?

Mistoqsija tajba, Valery. Nemmen li Terraform ma nbidlitx f'termini ta 'skop mill-2014. Inħoloq għall-infrastruttura u miet għall-infrastruttura. Għadna kellna u se jkollna bżonn għall-ġestjoni tal-konfigurazzjoni Ansible. L-isfida hija li hemm data tal-utent ġewwa launch_configuration. U hemm iġbed Ansible, eċċ. Din hija d-distinzjoni standard li nħobb l-aktar.

Jekk qed nitkellmu f'infrastruttura sabiħa, allura hemm utilitajiet bħal Packer li jiġbru din l-immaġni. U mbagħad Terraform juża s-sors tad-dejta biex isib din l-immaġni u jaġġorna l- launch_configuration tiegħu. Jiġifieri, b'dan il-mod il-pipeline huwa li l-ewwel iġbed Tracker, imbagħad iġbed Terraform. U jekk iseħħ il-bini, allura sseħħ bidla ġdida.

Bongu! Grazzi tar-rapport! Jisimni Misha, kumpanija RBS. Tista' ċċempel lil Ansible permezz ta' provviżor meta toħloq riżors. Ansible għandu wkoll suġġett imsejjaħ inventarju dinamiku. U tista 'l-ewwel sejħa Terraform, u mbagħad sejħa Ansible, li se tieħu riżorsi mill-istat u tesegwixxiha. X'hemm aħjar?

In-nies jużaw it-tnejn b'suċċess ugwali. Jidhirli li l-inventarju dinamiku f'Ansible hija ħaġa konvenjenti, jekk ma nkunux qed nitkellmu dwar autoscaling group. Minħabba li fil-grupp autoscaling diġà għandna l-għodda tagħna stess, li tissejjaħ launch_configuration. Fil launch_configuration nirreġistraw dak kollu li jeħtieġ li jiġi varat meta noħolqu riżors ġdid. Għalhekk, ma 'Amazon, l-użu ta' inventarju dinamiku u l-qari tal-fajl Terraform ts, fl-opinjoni tiegħi, huwa overkill. U jekk tuża għodod oħra fejn m'hemm l-ebda kunċett ta '"grupp ta' autoscaling", pereżempju, tuża DigitalOcean jew xi fornitur ieħor fejn m'hemm l-ebda grupp ta 'autoscaling, allura hemm ikollok tiġbed l-API manwalment, issib indirizzi IP, toħloq fajl ta 'inventarju dinamiku, u Ansible diġà se jimirħu minnu. Jiġifieri, għall-Amazon hemm launch_configuration, u għal kull ħaġa oħra hemm inventarju dinamiku.

Sors: www.habr.com

Żid kumment