Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Watu wengi wanajua na kutumia Terraform katika kazi zao za kila siku, lakini mbinu bora zaidi kwa hilo bado hazijaundwa. Kila timu inapaswa kubuni mbinu na mbinu zake.

Miundombinu yako karibu inaanza rahisi: rasilimali chache + watengenezaji wachache. Baada ya muda, inakua katika kila aina ya maelekezo. Je! unapata njia za kuweka rasilimali katika moduli za Terraform, kupanga nambari kwenye folda, na ni nini kingine kinachoweza kwenda vibaya? (maneno maarufu ya mwisho)

Muda unapita na unahisi kama miundombinu yako ndiyo kipenzi chako kipya, lakini kwa nini? Una wasiwasi juu ya mabadiliko yasiyoeleweka katika miundombinu, unaogopa kugusa miundombinu na nambari - kwa sababu hiyo, unachelewesha utendakazi mpya au kupunguza ubora...

Baada ya miaka mitatu ya kusimamia mkusanyiko wa moduli za jumuiya ya Terraform kwa AWS kwenye Github na matengenezo ya muda mrefu ya Terraform katika uzalishaji, Anton Babenko yuko tayari kushiriki uzoefu wake: jinsi ya kuandika moduli za TF ili zisidhuru katika siku zijazo.

Kufikia mwisho wa mazungumzo, washiriki watakuwa wamefahamu zaidi kanuni za usimamizi wa rasilimali katika Terraform, mbinu bora zinazohusiana na moduli za Terraform, na baadhi ya kanuni endelevu za ujumuishaji zinazohusiana na usimamizi wa miundombinu.

disclaimer: Ninatambua kuwa ripoti hii ni ya Novemba 2018-miaka 2 tayari imepita. Toleo la Terraform 0.11 lililojadiliwa katika ripoti halitumiki tena. Katika kipindi cha miaka 2 iliyopita, matoleo 2 mapya yametolewa, ambayo yana ubunifu mwingi, maboresho na mabadiliko. Tafadhali makini na hili na uangalie nyaraka.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Marejeo:

Jina langu ni Anton Babenko. Labda baadhi yenu mlitumia nambari niliyoandika. Sasa nitazungumza juu ya hili kwa ujasiri zaidi kuliko hapo awali, kwa sababu nina ufikiaji wa takwimu.

Ninafanya kazi kwenye Terraform na nimekuwa mshiriki hai na mchangiaji kwa idadi kubwa ya miradi huria inayohusiana na Terraform na Amazon tangu 2015.

Tangu wakati huo nimeandika nambari ya kutosha kuiweka kwa njia ya kupendeza. Na nitajaribu kukuambia kuhusu hili sasa.

Nitazungumza juu ya ugumu na maelezo ya kufanya kazi na Terraform. Lakini hiyo sio mada ya HighLoad. Na sasa utaelewa kwa nini.

Baada ya muda, nilianza kuandika moduli za Terraform. Watumiaji waliandika maswali, niliyaandika tena. Kisha niliandika huduma mbali mbali za kuunda nambari kwa kutumia ndoano ya kujitolea kabla, nk.

Kulikuwa na miradi mingi ya kuvutia. Ninapenda utengenezaji wa msimbo kwa sababu napenda kompyuta ifanye kazi zaidi na zaidi kwa ajili yangu na programu, kwa hivyo ninafanya kazi kwenye jenereta ya msimbo wa Terraform kutoka kwa michoro inayoonekana. Labda baadhi yenu mmewaona. Hizi ni masanduku mazuri yenye mishale. Na nadhani ni vyema ikiwa unaweza kubofya kitufe cha "Hamisha" na upate yote kama msimbo.

Ninatoka Ukraine. Nimeishi Norway kwa miaka mingi.

Pia, taarifa za ripoti hii zilikusanywa kutoka kwa watu wanaojua jina langu na kunipata kwenye mitandao ya kijamii. Karibu kila wakati nina jina la utani sawa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

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

Kama nilivyotaja, mimi ndiye mtunzaji mkuu wa moduli za Terraform AWS, ambayo ni moja wapo ya hazina kubwa kwenye GitHub ambapo tunakaribisha moduli za kazi za kawaida: VPC, Autoscaling, RDS.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na ulichosikia sasa ndicho cha msingi zaidi. Ikiwa una shaka kuwa unaelewa Terraform ni nini, basi ni bora kutumia wakati wako mahali pengine. Kutakuwa na maneno mengi ya kiufundi hapa. Na sikusita kutangaza kiwango cha ripoti kuwa cha juu zaidi. Hii inamaanisha kuwa naweza kuzungumza kwa kutumia maneno yote yanayowezekana bila maelezo mengi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Terraform ilionekana mnamo 2014 kama shirika ambalo lilikuruhusu kuandika, kupanga na kudhibiti miundombinu kama nambari. Wazo kuu hapa ni "miundombinu kama nambari."

Nyaraka zote, kama nilivyosema, zimeandikwa ndani terraform.io. Natumai watu wengi wanajua kuhusu tovuti hii na wamesoma hati. Ikiwa ndivyo, basi uko mahali pazuri.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hivi ndivyo faili ya kawaida ya usanidi wa Terraform inavyoonekana, ambapo tunafafanua kwanza vigeu kadhaa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Katika kesi hii tunafafanua "aws_region".

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kisha tunaelezea ni rasilimali gani tunataka kuunda.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Tunaendesha baadhi ya amri, hasa "terraform init" ili kupakia vitegemezi na watoa huduma.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na tunaendesha amri ya "terraform apply" ili kuangalia kama usanidi uliobainishwa unalingana na rasilimali tulizounda. Kwa kuwa hatujaunda chochote hapo awali, Terraform hutuhimiza kuunda rasilimali hizi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Tunathibitisha hili. Kwa hivyo tunatengeneza ndoo inayoitwa seasnail.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Pia kuna huduma kadhaa zinazofanana. Wengi wenu mnaotumia Amazon mnajua AWS CloudFormation au Google Cloud Deployment Manager au Azure Resource Manager. Kila moja yao ina utekelezaji wake wa aina fulani wa kudhibiti rasilimali ndani ya kila moja ya watoa huduma hawa wa wingu wa umma. Terraform ni muhimu sana kwa sababu hukuruhusu kudhibiti zaidi ya watoa huduma 100. (Maelezo zaidi hapa)

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Malengo ambayo Terraform imefuata tangu mwanzo:

  • Terraform hutoa mtazamo mmoja wa rasilimali.
  • Hukuruhusu kutumia majukwaa yote ya kisasa.
  • Na Terraform iliundwa tangu mwanzo kama matumizi ambayo hukuruhusu kubadilisha miundombinu kwa usalama na kwa kutabirika.

Mnamo 2014, neno "inayotabirika" lilisikika kuwa la kawaida sana katika muktadha huu.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Terraform ni matumizi ya ulimwengu wote. Ikiwa unayo API, basi unaweza kudhibiti kila kitu kabisa:

  • Unaweza kutumia zaidi ya watoa huduma 120 kudhibiti kila kitu unachotaka.
  • Kwa mfano, unaweza kutumia Terraform kuelezea ufikiaji wa hazina za GitHub.
  • Unaweza kuunda na kufunga hitilafu huko Jira.
  • Unaweza kudhibiti vipimo vya Relic Mpya.
  • Unaweza hata kuunda faili kwenye kisanduku kama unataka kweli.

Haya yote yanafikiwa kwa kutumia watoa huduma wa Terraform, ambao wana API iliyo wazi ambayo inaweza kuelezewa katika Go.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hebu tuseme tulianza kutumia Terraform, tukasoma hati fulani kwenye tovuti, tukatazama video, na tukaanza kuandika main.tf, kama nilivyoonyesha kwenye slaidi zilizopita.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na kila kitu ni nzuri, unayo faili inayounda VPC.

Ikiwa unataka kuunda VPC, basi unabainisha takriban mistari hii 12. Eleza ni eneo gani ungependa kuunda, ni cidr_block gani ya anwani za IP zitakazotumika. Ni hayo tu.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa kawaida, mradi huo utakua hatua kwa hatua.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na utakuwa ukiongeza rundo la vitu vipya hapo: rasilimali, vyanzo vya data, utaunganisha na watoa huduma wapya, ghafla utataka kutumia Terraform kudhibiti watumiaji katika akaunti yako ya GitHub, n.k. Unaweza kutaka kutumia tofauti. Watoa huduma wa DNS, vuka kila kitu. Terraform hurahisisha hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hebu tuangalie mfano ufuatao.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Unaongeza hatua kwa hatua internet_gateway kwa sababu unataka nyenzo kutoka kwa VPC yako ziwe na ufikiaji wa mtandao. Hili ni wazo zuri.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Matokeo yake ni hii main.tf:

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hii ni sehemu ya juu ya main.tf.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hii ni sehemu ya chini ya main.tf.

Kisha unaongeza subnet. Kufikia wakati unapotaka kuongeza lango la NAT, njia, jedwali za kuelekeza na rundo la nyati nyingine ndogo, hutakuwa na mistari 38, lakini takriban mistari 200-300.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hiyo ni, faili yako ya main.tf inakua polepole. Na mara nyingi watu huweka kila kitu kwenye faili moja. 10-20 KB inaonekana katika main.tf. Fikiria kuwa KB 10-20 ni maandishi. Na kila kitu kimeunganishwa na kila kitu. Hatua kwa hatua hii inakuwa ngumu kufanya kazi nayo. 10-20 KB ni kesi nzuri ya mtumiaji, wakati mwingine zaidi. Na watu hawafikiri kila wakati kuwa hii ni mbaya.

Kama ilivyo kwa programu ya kawaida, i.e. sio miundombinu kama nambari, tumezoea kutumia rundo la madarasa tofauti, vifurushi, moduli, vikundi. Terraform hukuruhusu kufanya kitu sawa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

  • Kanuni inakua.
  • Utegemezi kati ya rasilimali pia unakua.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na tuna hitaji kubwa, kubwa. Tunaelewa kuwa hatuwezi kuishi hivi tena. Nambari yetu inazidi kuwa kubwa. 10-20 KB, bila shaka, sio kubwa sana, lakini tunazungumza tu juu ya stack ya mtandao, yaani, umeongeza tu rasilimali za mtandao. Hatuzungumzii Kisawazisha cha Upakiaji wa Programu, nguzo ya ES ya kusambaza, Kubernetes, n.k., ambapo Kb 100 inaweza kuunganishwa kwa urahisi. Ukiandika haya yote, hivi karibuni utajifunza kwamba Terraform hutoa moduli za Terraform.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Moduli za Terraform ni usanidi unaojitosheleza wa Terraform ambao unadhibitiwa kama kikundi. Hiyo ndiyo yote unayohitaji kujua kuhusu moduli za Terraform. Hawana akili hata kidogo, hawakuruhusu kufanya miunganisho ngumu kulingana na kitu. Hii yote iko kwenye mabega ya watengenezaji. Hiyo ni, hii ni aina fulani tu ya usanidi wa Terraform ambao tayari umeandika. Na unaweza kuiita kama kikundi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa hivyo tunajaribu kuelewa jinsi tutakavyoboresha 10-20-30 KB yetu ya msimbo. Tunatambua hatua kwa hatua kwamba tunahitaji kutumia moduli fulani.

Aina ya kwanza ya moduli unazokutana nazo ni moduli za rasilimali. Hawaelewi miundombinu yako inahusu nini, biashara yako inahusu nini, wapi na hali ikoje. Hizi ndizo moduli haswa ambazo mimi, pamoja na jumuiya ya programu huria, tunasimamia, na ambazo tunaweka kama vizuizi vya awali vya ujenzi wa miundombinu yako.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Mfano wa moduli ya rasilimali.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Tunapoita moduli ya rasilimali, tunataja kutoka kwa njia ambayo tunapaswa kupakia yaliyomo.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Tunaonyesha ni toleo gani tunataka kupakua.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Tunapitisha rundo la hoja hapo. Ni hayo tu. Hayo tu ndiyo tunayohitaji kujua tunapotumia moduli hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Watu wengi wanafikiri kwamba ikiwa wanatumia toleo la hivi karibuni, kila kitu kitakuwa imara. Lakini hapana. Miundombinu lazima ibadilishwe; lazima tujibu wazi ni toleo gani hili au sehemu hiyo ilitumwa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hapa kuna msimbo ulio ndani ya moduli hii. Moduli ya kikundi cha usalama. Hapa kitabu kinakwenda kwenye mstari wa 640. Kuunda rasilimali ya usalama-croup katika Amazon katika kila usanidi unaowezekana ni kazi isiyo ya kawaida sana. Haitoshi tu kuunda kikundi cha usalama na kukiambia ni sheria gani za kupitisha kwake. Ingekuwa rahisi sana. Kuna vikwazo milioni tofauti ndani ya Amazon. Kwa mfano, ikiwa unatumia Mwisho wa VPC, orodha ya kiambishi awali, API mbalimbali na inajaribu kuchanganya haya yote na kila kitu kingine, basi Terraform haikuruhusu kufanya hivi. Na API ya Amazon hairuhusu hii pia. Kwa hivyo, tunahitaji kuficha mantiki hii ya kutisha kwenye moduli na tupe nambari ya mtumiaji inayoonekana kama hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Mtumiaji haitaji kujua jinsi inafanywa ndani.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Aina ya pili ya moduli, ambayo ina moduli za rasilimali, tayari kutatua matatizo ambayo yanafaa zaidi kwa biashara yako. Mara nyingi hapa ni mahali ambapo ni kiendelezi cha Terraform na huweka maadili magumu ya vitambulisho, kwa viwango vya kampuni. Unaweza pia kuongeza utendaji hapo ambao Terraform haikuruhusu kutumia kwa sasa. Hii ni sasa hivi. Sasa toleo la 0.11, ambalo linakaribia kuwa jambo la zamani. Lakini bado, wasindikaji wa awali, jsonnet, cookiecutter na rundo la vitu vingine ni utaratibu msaidizi ambao lazima utumike kwa kazi kamili.

Ifuatayo nitaonyesha mifano kadhaa ya hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Moduli ya miundombinu inaitwa kwa njia sawa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Chanzo kutoka mahali pa kupakua maudhui kinaonyeshwa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Rundo la maadili hupitishwa na kupitishwa kwenye moduli hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kisha, ndani ya moduli hii, rundo la moduli za rasilimali huitwa kuunda VPC au Usawazishaji wa Upakiaji wa Programu, au kuunda kikundi cha usalama au nguzo ya Huduma ya Kontena Elastiki.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kuna aina mbili za moduli. Hili ni muhimu kueleweka kwa sababu taarifa nyingi ambazo nimeweka katika vikundi katika ripoti hii hazijaandikwa kwenye nyaraka.

Na hati katika Terraform hivi sasa ni tatizo kabisa kwa sababu inasema tu kuna vipengele hivi, unaweza kuvitumia. Lakini hasemi jinsi ya kutumia vipengele hivi, kwa nini ni bora kuzitumia. Kwa hiyo, idadi kubwa sana ya watu huandika kitu ambacho hawawezi kuishi nacho.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Wacha tuangalie jinsi ya kuandika moduli hizi baadaye. Kisha tutaona jinsi ya kuwaita na jinsi ya kufanya kazi na msimbo.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Usajili wa Terraform - https://registry.terraform.io/

Kidokezo #0 ni kutoandika moduli za rasilimali. Mengi ya moduli hizi tayari zimeandikwa kwa ajili yako. Kama nilivyosema, ni chanzo wazi, hazina mantiki yoyote ya biashara yako, hazina maadili ya misimbo ngumu ya anwani za IP, nywila, n.k. Moduli ni rahisi sana. Na kuna uwezekano mkubwa kuwa tayari imeandikwa. Kuna moduli nyingi za rasilimali kutoka Amazon. Takriban 650. Na wengi wao wana ubora mzuri.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Katika mfano huu, mtu alikuja kwako na kusema, "Nataka kuwa na uwezo wa kusimamia hifadhidata. Unda moduli ili niweze kuunda hifadhidata." Mtu huyo hajui maelezo ya utekelezaji wa Amazon au Terraform. Anasema tu: "Nataka kusimamia MSSQL." Hiyo ni, tunamaanisha kwamba itaita moduli yetu, kupitisha aina ya injini hapo, na kuonyesha eneo la saa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na mtu haipaswi kujua kuwa tutaunda rasilimali mbili tofauti ndani ya moduli hii: moja kwa MSSQL, ya pili kwa kila kitu kingine, kwa sababu tu katika Terraform 0.11 huwezi kutaja maadili ya eneo la saa kama hiari.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na wakati wa kutoka kwa moduli hii, mtu ataweza kupokea tu anwani. Hatajua kutoka kwa hifadhidata gani, kutoka kwa rasilimali gani tunaunda haya yote ndani. Hii ni kipengele muhimu sana cha kuficha. Na hii inatumika sio tu kwa moduli ambazo ziko wazi kwa umma, lakini pia kwa moduli ambazo utaandika ndani ya miradi na timu zako.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hii ni hoja ya pili, ambayo ni muhimu sana ikiwa umekuwa ukitumia Terraform kwa muda. Una hazina ambayo unaweka moduli zako zote za Terraform kwa kampuni yako. Na ni kawaida kabisa kwamba baada ya muda mradi huu utakua na ukubwa wa megabytes moja au mbili. Hii ni sawa.

Lakini shida ni jinsi Terraform inaita moduli hizi. Kwa mfano, ukiita moduli ili kuunda kila mtumiaji binafsi, Terraform itapakia kwanza hazina nzima na kisha kuelekea kwenye folda ambapo moduli hiyo mahususi iko. Kwa njia hii utapakua megabaiti moja kila wakati. Ikiwa unasimamia watumiaji 100 au 200, basi utapakua megabytes 100 au 200, na kisha uende kwenye folda hiyo. Kwa hivyo kwa kawaida hutaki kupakua rundo la vitu kila wakati unapogonga "Terraform init".

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Kuna masuluhisho mawili ya tatizo hili. Ya kwanza ni kutumia njia za jamaa. Kwa njia hii unaonyesha katika msimbo kwamba folda ni ya ndani (./). Na kabla ya kuzindua chochote, unafanya nakala ya Git ya hazina hii ndani ya nchi. Kwa njia hii unafanya mara moja.

Kuna, bila shaka, mengi ya downsides. Kwa mfano, huwezi kutumia toleo. Na hii wakati mwingine ni ngumu kuishi nayo.

Suluhisho la pili. Ikiwa una submodule nyingi na tayari una aina fulani ya bomba iliyoanzishwa, basi kuna mradi wa MBT, unaokuwezesha kukusanya vifurushi vingi tofauti kutoka kwa hifadhi moja na kuzipakia kwa S3. Hii ni njia nzuri sana. Kwa hivyo, faili ya iam-user-1.0.0.zip itakuwa na uzito wa Kb 1 tu, kwa sababu msimbo wa kuunda rasilimali hii ni ndogo sana. Na itafanya kazi kwa kasi zaidi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Wacha tuzungumze juu ya kile ambacho hakiwezi kutumika katika moduli.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa nini uovu huu katika moduli? Jambo baya zaidi ni kudhani mtumiaji. Chukulia mtumiaji ni chaguo la uthibitishaji wa mtoa huduma ambalo linaweza kutumiwa na watu tofauti. Kwa mfano, sote tutaiga jukumu. Hii ina maana kwamba Terraform itachukua jukumu hili. Na kisha kwa jukumu hili itafanya vitendo vingine.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na ubaya ni kwamba ikiwa Vasya anapenda kuunganishwa na Amazon kwa njia moja, kwa mfano, kwa kutumia tofauti ya mazingira ya kawaida, na Petya anapenda kutumia ufunguo wake ulioshirikiwa, ambao ana mahali pa siri, basi huwezi kutaja wote wawili. Terraform. Na ili wasipate mateso, hakuna haja ya kuonyesha kizuizi hiki kwenye moduli. Hii lazima ionyeshe kwa kiwango cha juu. Hiyo ni, tuna moduli ya rasilimali, moduli ya miundombinu na muundo juu. Na hii inapaswa kuonyeshwa mahali fulani juu.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Uovu wa pili ni mtoaji. Hapa uovu sio mdogo sana, kwa sababu ikiwa unaandika kanuni na inakufanyia kazi, basi unaweza kufikiri kwamba ikiwa inafanya kazi, basi kwa nini ubadilishe.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Ubaya ni kwamba hudhibiti kila wakati wakati mtoaji huyu atazinduliwa, kwanza. Na pili, haudhibiti maana ya aws ec2, i.e. tunazungumza juu ya Linux au Windows sasa. Kwa hivyo huwezi kuandika kitu ambacho kitafanya kazi sawa kwenye mifumo tofauti ya uendeshaji au kwa kesi tofauti za watumiaji.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Mfano wa kawaida zaidi, ambao pia umeonyeshwa katika hati rasmi, ni kwamba ikiwa utaandika aws_instance na kutaja kundi la hoja, basi hakuna ubaya kwa hilo ikiwa utabainisha mtoaji "local-exec" hapo na kutekeleza ansible yako- kitabu cha kucheza.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa kweli, ndiyo, hakuna kitu kibaya na hilo. Lakini hivi karibuni utagundua kuwa jambo hili la mtendaji wa ndani halipo, kwa mfano, katika launch_configuration.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na unapotumia launch_configuration, na unataka kuunda kikundi cha autoscaling kutoka kwa mfano mmoja, basi katika launch_configuration hakuna dhana ya "mtoa huduma". Kuna dhana ya "data ya mtumiaji".

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa hivyo, suluhisho la ulimwengu wote ni kutumia data ya mtumiaji. Na itazinduliwa ama kwa mfano wenyewe, wakati mfano umewashwa, au katika data sawa ya mtumiaji, wakati kikundi cha kupima kiotomatiki kinatumia launch_configuration.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Ikiwa bado unataka kuendesha mtoaji, kwa sababu ni sehemu ya gluing, wakati rasilimali moja imeundwa, wakati huo unahitaji kuendesha mtoaji wako, amri yako. Kuna mengi ya hali kama hizo.

Na rasilimali sahihi zaidi kwa hii inaitwa null_resource. Null_resource ni rasilimali dummy ambayo haijaundwa kamwe. Haigusi chochote, hakuna API, hakuna kuongeza otomatiki. Lakini hukuruhusu kudhibiti wakati wa kuendesha amri. Katika kesi hii, amri inaendeshwa wakati wa uumbaji.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

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

Kuna ishara kadhaa. Sitaingia katika ishara zote kwa undani sana. Kuna makala kuhusu hili. Lakini ikiwa umefanya kazi na Terraform au umetumia moduli za watu wengine, basi mara nyingi umegundua kuwa moduli nyingi, kama nambari nyingi kwenye chanzo wazi, zimeandikwa na watu kwa mahitaji yao wenyewe. Mtu aliiandika na kutatua shida yake. Niliiweka kwenye GitHub, iache iishi. Itaishi, lakini ikiwa hakuna nyaraka na mifano huko, basi hakuna mtu atakayeitumia. Na ikiwa hakuna utendaji unaokuwezesha kutatua kidogo zaidi kuliko kazi yake maalum, basi hakuna mtu atakayeitumia. Kuna njia nyingi za kupoteza watumiaji.

Ikiwa unataka kuandika kitu ili watu watumie, basi napendekeza kufuata ishara hizi.

Hizi ni:

  • Nyaraka na mifano.
  • Utendaji kamili.
  • Chaguo-msingi zinazofaa.
  • Nambari safi.
  • Vipimo.

Vipimo ni hali tofauti kwa sababu ni vigumu sana kuandika. Ninaamini zaidi katika nyaraka na mifano.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa hivyo, tuliangalia jinsi ya kuandika moduli. Kuna hoja mbili. Ya kwanza, ambayo ni muhimu zaidi, sio kuandika ikiwa unaweza, kwa sababu kundi la watu tayari wamefanya kazi hizi kabla yako. Na pili, ikiwa bado unaamua, basi jaribu kutotumia watoa huduma katika moduli na watoa huduma.

Hii ni sehemu ya kijivu ya nyaraka. Huenda sasa unafikiri: β€œKuna jambo lisiloeleweka. Sijashawishika." Lakini tutaona baada ya miezi sita.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Sasa hebu tuzungumze juu ya jinsi ya kupiga moduli hizi.

Tunaelewa kuwa msimbo wetu hukua kadri muda unavyopita. Hatuna faili moja tena, tayari tuna faili 20. Zote ziko kwenye folda moja. Au labda katika folda tano. Labda tunaanza kwa namna fulani kuzivunja kwa kanda, kwa vipengele vingine. Kisha tunaelewa kuwa sasa tunayo kanuni za maingiliano na okestra. Hiyo ni, lazima tuelewe nini tunapaswa kufanya ikiwa tulibadilisha rasilimali za mtandao, nini tunapaswa kufanya na rasilimali zetu zingine, jinsi ya kusababisha utegemezi huu, nk.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kuna uliokithiri mbili. Uliokithiri wa kwanza ni wote katika moja. Tunayo faili moja kuu. Kwa wakati huu, hii ilikuwa mazoezi bora rasmi kwenye wavuti ya Terraform.

Lakini sasa imeandikwa kama iliyoachwa na kuondolewa. Baada ya muda, jumuiya ya Terraform iligundua kuwa hii ilikuwa mbali na mazoezi bora, kwa sababu watu walianza kutumia mradi kwa njia tofauti. Na kuna matatizo. Kwa mfano, tunapoorodhesha utegemezi wote katika sehemu moja. Kuna hali tunapobofya "Mpango wa Terraform" na mpaka Terraform itasasisha majimbo ya rasilimali zote, muda mwingi unaweza kupita.

Muda mwingi ni, kwa mfano, dakika 5. Kwa wengine huu ni wakati mwingi. Nimeona kesi ambapo ilichukua dakika 15. API ya AWS ilitumia dakika 15 kujaribu kujua ni nini kilikuwa kinatokea na hali ya kila rasilimali. Hili ni eneo kubwa sana.

Na, kwa kawaida, tatizo linalohusiana litaonekana wakati unataka kubadilisha kitu katika sehemu moja, basi unasubiri dakika 15, na inakupa turuba ya mabadiliko fulani. Ulitema mate, ukaandika "Ndiyo", na kitu kilikwenda vibaya. Huu ni mfano halisi kabisa. Terraform haijaribu kukukinga na matatizo. Hiyo ni, andika unachotaka. Kutakuwa na shida - shida zako. Wakati Terraform 0.11 haijaribu kukusaidia kwa njia yoyote. Kuna maeneo fulani ya kupendeza katika 0.12 ambayo hukuruhusu kusema: "Vasya, kweli unataka hii, unaweza kupata fahamu zako?"

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Njia ya pili ni kupunguza eneo hili, yaani, simu kutoka sehemu moja zinaweza kuunganishwa kidogo kutoka sehemu nyingine.

Shida pekee ni kwamba unahitaji kuandika nambari zaidi, i.e. unahitaji kuelezea anuwai katika idadi kubwa ya faili na usasishe hii. Watu wengine hawapendi. Hii ni kawaida kwangu. Na watu wengine hufikiria: "Kwa nini uandike hii katika sehemu tofauti, nitaweka yote mahali pamoja." Hii inawezekana, lakini hii ni ya pili uliokithiri.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Je, ni nani anayeishi haya yote mahali pamoja? Mtu mmoja, wawili, watatu, yaani, mtu anaitumia.

Na ni nani anayeita sehemu fulani, block moja au moduli moja ya miundombinu? Watu watano hadi saba. Hii ni baridi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Jibu la kawaida ni mahali fulani katikati. Ikiwa mradi huo ni mkubwa, basi mara nyingi utakuwa na hali ambapo hakuna ufumbuzi unaofaa na si kila kitu kinachofanya kazi huko nje, hivyo kuishia na mchanganyiko. Hakuna kitu kibaya na hii, mradi tu unaelewa kuwa zote mbili zina faida.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Ikiwa kitu kimebadilika kwenye rafu ya VPC na ulitaka kutumia mabadiliko haya kwa EC2, yaani, ulitaka kusasisha kikundi cha kuongeza otomatiki kwa sababu ulikuwa na subnet mpya, basi ninaita aina hii ya ochestration ya utegemezi. Kuna baadhi ya ufumbuzi: nani anatumia nini?

Ninaweza kupendekeza suluhisho zipo. Unaweza kutumia Terraform kufanya uchawi, au unaweza kutumia makefiles kutumia Terraform. Na uone ikiwa kuna kitu kimebadilika hapo, unaweza kuizindua hapa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Unapendaje uamuzi huu? Kuna mtu anaamini kuwa hii ni suluhisho nzuri? Ninaona tabasamu, inaonekana mashaka yameingia.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Bila shaka, usijaribu hii nyumbani. Terraform haikuundwa kamwe kuendeshwa kutoka Terraform.

Katika ripoti moja waliniambia: β€œHapana, hii haitafanya kazi.” Jambo ni kwamba haipaswi kufanya kazi. Ingawa inaonekana ya kuvutia sana wakati unaweza kuzindua Terraform kutoka Terraform, na kisha Terraform, haifai kufanya hivyo. Terraform inapaswa kuanza kwa urahisi sana.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

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

Ikiwa unahitaji orchestration ya simu wakati kitu kimebadilika katika sehemu moja, basi kuna Terragrunt.

Terragrunt ni matumizi, nyongeza ya Terraform, ambayo hukuruhusu kuratibu na kupanga simu kwa moduli za miundombinu.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Faili ya kawaida ya usanidi wa Terraform inaonekana kama hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Unabainisha ni moduli gani maalum unayotaka kupiga simu.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Je, moduli ina utegemezi gani?

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na moduli hii inakubali hoja gani. Hiyo ndiyo yote unayopaswa kujua kuhusu Terragrunt.

Nyaraka zipo, na kuna nyota 1 kwenye GitHub. Lakini katika hali nyingi hii ndio unahitaji kujua. Na hii ni rahisi sana kutekeleza katika makampuni ambayo yanaanza kufanya kazi na Terraform.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa hivyo okestra ni Terragrunt. Kuna chaguzi zingine.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Sasa hebu tuzungumze kuhusu jinsi ya kufanya kazi na kanuni.

Ikiwa unahitaji kuongeza vipengele vipya kwenye msimbo wako, mara nyingi hii ni rahisi. Unaandika rasilimali mpya, kila kitu ni rahisi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Ikiwa una rasilimali fulani ambayo umeunda mapema, kwa mfano, ulijifunza kuhusu Terraform baada ya kufungua akaunti ya AWS na unataka kutumia rasilimali ambazo tayari unazo, basi itakuwa sahihi kupanua moduli yako kwa njia hii, ili inasaidia matumizi ya rasilimali zilizopo.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na iliunga mkono uundaji wa rasilimali mpya kwa kutumia rasilimali ya kuzuia.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwenye pato kila wakati tunarudisha kitambulisho cha pato kulingana na kile kilichotumiwa.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Shida ya pili muhimu sana katika Terraform 0.11 ni kufanya kazi na orodha.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Ugumu ni kwamba ikiwa tunayo orodha kama hiyo ya watumiaji.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na tunapounda watumiaji hawa kwa kutumia rasilimali ya kuzuia, basi kila kitu kinakwenda sawa. Tunapitia orodha nzima, na kuunda faili kwa kila mmoja. Kila kitu kiko sawa. Na kisha, kwa mfano, mtumiaji3, ambaye yuko katikati, anapaswa kuondolewa kutoka hapa, basi rasilimali zote ambazo ziliundwa baada yake zitafanywa upya kwa sababu index itabadilika.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kufanya kazi na orodha katika mazingira mazuri. Mazingira ya serikali ni nini? Hii ndio hali ambapo thamani mpya huundwa wakati rasilimali hii imeundwa. Kwa mfano, Ufunguo wa Ufikiaji wa AWS au Ufunguo wa Siri wa AWS, yaani, tunapounda mtumiaji, tunapokea Ufunguo mpya wa Kufikia au Siri. Na kila wakati tunapofuta mtumiaji, mtumiaji huyu atakuwa na ufunguo mpya. Lakini hii sio feng shui, kwa sababu mtumiaji hatataka kuwa marafiki nasi ikiwa tutaunda mtumiaji mpya kwa ajili yake kila wakati mtu anaondoka kwenye timu.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Hili ndilo suluhisho. Hii ni nambari iliyoandikwa katika Jsonnet. Jsonnet ni lugha ya kuiga kutoka Google.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Amri hii hukuruhusu kukubali kiolezo hiki na kama pato inarudisha faili ya json ambayo imetengenezwa kulingana na kiolezo chako.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Template inaonekana kama hii.

Terraform hukuruhusu kufanya kazi na HCL na Json kwa njia ile ile, kwa hivyo ikiwa una uwezo wa kutengeneza Json, basi unaweza kuiingiza kwenye Terraform. Faili iliyo na kiendelezi .tf.json itapakuliwa kwa mafanikio.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na kisha tunafanya kazi nayo kama kawaida: terraform init, terramorm kuomba. Na tunaunda watumiaji wawili.

Sasa hatuogopi mtu akiacha timu. Tutahariri faili ya json. Vasya Pupkin kushoto, Petya Pyatochkin alibaki. Petya Pyatochkin hatapokea ufunguo mpya.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kuunganisha Terraform na zana zingine sio kazi ya Terraform. Terraform iliundwa kama jukwaa la kuunda rasilimali na ndivyo hivyo. Na kila kitu kinachokuja baadaye sio wasiwasi wa Terraform. Na hakuna haja ya kuisuka huko. Kuna Ansible, ambayo hufanya kila kitu unachohitaji.

Lakini hali hutokea tunapotaka kupanua Terraform na kuita amri fulani baada ya kitu kukamilika.

Njia ya kwanza. Tunaunda pato ambapo tunaandika amri hii.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Na kisha tunaita amri hii kutoka kwa pato la terraform ya shell na kutaja thamani ambayo tunataka. Kwa hivyo, amri inatekelezwa na maadili yote yaliyobadilishwa. Ni vizuri sana.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Njia ya pili. Haya ni matumizi ya null_resource kulingana na mabadiliko katika miundombinu yetu. Tunaweza kumwita local-exe mara tu kitambulisho cha baadhi ya rasilimali kinapobadilika.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kwa kawaida, hii yote ni laini kwenye karatasi, kwa sababu Amazon, kama watoa huduma wengine wote wa umma, ina rundo la kesi zake za makali.

Kesi ya kawaida ya makali ni kwamba unapofungua akaunti ya AWS, ni muhimu ni maeneo gani unayotumia; kipengele hiki kimewezeshwa hapo; labda uliifungua baada ya Desemba 2013; labda unatumia chaguo-msingi katika VPC n.k. Kuna vikwazo vingi. Na Amazon iliwatawanya katika nyaraka zote.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Kuna mambo machache ninapendekeza kuepuka.

Ili kuanza, epuka mabishano yote yasiyo ya siri ndani ya mpango wa Terraform au Terraform CLI. Yote hii inaweza kuwekwa kwenye faili ya tfvars au kwa kutofautisha kwa mazingira.

Lakini huna haja ya kukariri amri hii yote ya uchawi. Mpango wa Terraform - var na tunaenda. Tofauti ya kwanza ni var, ya pili ni var, ya tatu, ya nne. Kanuni muhimu zaidi ya miundombinu kama nambari ambayo mimi hutumia mara nyingi ni kwamba kwa kuangalia tu nambari, ninapaswa kuwa na ufahamu wazi wa kile kinachotumwa hapo, katika hali gani na kwa maadili gani. Na kwa hivyo sihitaji kusoma nyaraka au kuuliza Vasya ni vigezo gani alitumia kuunda nguzo yetu. Ninahitaji tu kufungua faili na kiendelezi cha tfvars, ambacho mara nyingi hulingana na mazingira, na angalia kila kitu hapo.

Pia, usitumie hoja lengwa ili kupunguza wigo. Kwa hili ni rahisi zaidi kutumia moduli ndogo za miundombinu.

Pia, hakuna haja ya kupunguza na kuongeza usawa. Ikiwa nina rasilimali 150 na ninataka kuongeza usawa wa Amazon kutoka kwa chaguo-msingi 10 hadi 100, basi kuna uwezekano mkubwa kwamba kitu kitaenda vibaya. Au inaweza kwenda vizuri sasa, lakini Amazon inaposema kuwa unapiga simu nyingi, utakuwa na shida.

Terraform itajaribu kuanzisha tena shida nyingi hizi, lakini hautafikia chochote. Parallelism=1 ni jambo muhimu kutumia ikiwa utajikwaa juu ya mdudu ndani ya API ya AWS au ndani ya mtoaji wa Terraform. Na kisha unahitaji kutaja: parallelism=1 na kusubiri hadi Terraform amalize simu moja, kisha ya pili, kisha ya tatu. Atazizindua moja baada ya nyingine.

Watu mara nyingi huniuliza, "Kwa nini nadhani nafasi za kazi za Terraform ni mbaya?" Ninaamini kanuni ya miundombinu kama kanuni ni kuona ni miundombinu gani imeundwa na kwa maadili gani.

Nafasi za kazi hazikuundwa na watumiaji. Hii haimaanishi kuwa watumiaji waliandika katika masuala ya GitHub kwamba hatuwezi kuishi bila nafasi za kazi za Terraform. Hapana si kama hii. Terraform Enterprise ni suluhisho la kibiashara. Terraform kutoka HashiCorp iliamua kuwa tunahitaji nafasi za kazi, kwa hivyo tuliifungua. Ninaona ni rahisi zaidi kuiweka kwenye folda tofauti. Kisha kutakuwa na faili kidogo zaidi, lakini itakuwa wazi zaidi.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Jinsi ya kufanya kazi na kanuni? Kwa kweli, kufanya kazi na orodha ni maumivu pekee. Na kuchukua Terraform rahisi. Hili sio jambo ambalo litafanya kila kitu kizuri kwako. Hakuna haja ya kusukuma kila kitu kilichoandikwa kwenye nyaraka huko.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Mada ya ripoti hiyo iliandikwa "kwa siku zijazo." Nitazungumza juu ya hili kwa ufupi sana. Kwa siku zijazo, hii ina maana kwamba 0.12 itatolewa hivi karibuni.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

0.12 ni tani ya vitu vipya. Ikiwa unatoka kwenye programu ya kawaida, basi hukosa kila aina ya vitalu vya nguvu, vitanzi, shughuli za kulinganisha sahihi na za masharti, ambapo pande za kushoto na za kulia hazihesabiwa wakati huo huo, lakini kulingana na hali hiyo. Unaikosa sana, kwa hivyo 0.12 itakutatulia.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Lakini! Ikiwa unaandika kwa urahisi zaidi, kwa kutumia moduli zilizopangwa tayari na ufumbuzi wa tatu, basi hutahitaji kusubiri na kutumaini kwamba 0.12 itakuja na kurekebisha kila kitu kwako.

Maelezo ya miundombinu katika Terraform kwa siku zijazo. Anton Babenko (2018)

Asante kwa ripoti! Ulizungumza juu ya miundombinu kama nambari na ukasema neno moja kuhusu majaribio. Je, vipimo vinahitajika katika moduli? Hili ni jukumu la nani? Je! ninahitaji kuiandika mwenyewe au ni jukumu la moduli?

Mwaka ujao utajazwa na ripoti kwamba tumeamua kupima kila kitu. Nini cha kupima ni swali kubwa zaidi. Kuna utegemezi mwingi, vikwazo vingi kutoka kwa watoa huduma tofauti. Wakati wewe na mimi tunazungumza na unasema: "Ninahitaji vipimo," basi ninauliza: "Utajaribu nini?" Unasema kwamba utajaribu katika mkoa wako. Kisha nasema kwamba hii haifanyi kazi katika mkoa wangu. Hiyo ni, hatutaweza hata kukubaliana juu ya hili. Bila kusema kwamba kuna matatizo mengi ya kiufundi. Hiyo ni, jinsi ya kuandika vipimo hivi ili wawe wa kutosha.

Ninatafiti mada hii kikamilifu, i.e. jinsi ya kutengeneza majaribio kiotomatiki kulingana na miundombinu uliyoandika. Hiyo ni, ikiwa uliandika nambari hii, basi ninahitaji kuiendesha, kwa kuzingatia hii naweza kuunda vipimo.

Terrates ni mojawapo ya maktaba zinazotajwa mara kwa mara ambazo hukuruhusu kuandika majaribio ya ujumuishaji ya Terraform. Hii ni moja ya huduma. Ninapendelea aina ya DSL, kwa mfano, rspec.

Anton, asante kwa ripoti! Jina langu ni Valery. Ngoja nikuulize swali kidogo la kifalsafa. Kuna, kwa masharti, utoaji, kuna kupelekwa. Utoaji huunda miundombinu yangu, katika upelekaji tunaijaza na kitu muhimu, kwa mfano, seva, programu, n.k. Na ni kichwani mwangu kwamba Terraform ni ya utoaji zaidi, na Ansible ni zaidi ya kupelekwa, kwa sababu Ansible pia ni ya muundo wa muundo. hukuruhusu kusakinisha nginx, Postgres. Lakini wakati huo huo, Ansible inaonekana kuruhusu utoaji, kwa mfano, wa rasilimali za Amazon au Google. Lakini Terraform pia hukuruhusu kupeleka programu fulani kwa kutumia moduli zake. Kwa mtazamo wako, kuna aina fulani ya mpaka ambayo inapita kati ya Terraform na Ansible, wapi na ni nini bora kutumia? Au, kwa mfano, unafikiri kwamba Ansible tayari ni takataka, unapaswa kujaribu kutumia Terraform kwa kila kitu?

Swali zuri, Valery. Ninaamini kuwa Terraform haijabadilika kulingana na madhumuni tangu 2014. Iliundwa kwa ajili ya miundombinu na ilikufa kwa ajili ya miundombinu. Bado tulikuwa na tutakuwa na hitaji la usimamizi wa usanidi. Changamoto ni kwamba kuna data ya mtumiaji ndani launch_configuration. Na hapo unavuta Ansible, n.k. Huu ndio tofauti ya kawaida ninayoipenda zaidi.

Ikiwa tunazungumza juu ya miundombinu nzuri, basi kuna huduma kama Packer ambazo hukusanya picha hii. Na kisha Terraform hutumia chanzo cha data kupata picha hii na kusasisha launch_configuration yake. Hiyo ni, kwa njia hii bomba ni kwamba sisi kwanza kuvuta Tracker, kisha kuvuta Terraform. Na ikiwa kujenga hutokea, basi mabadiliko mapya hutokea.

Habari! Asante kwa ripoti! Jina langu ni Misha, kampuni ya RBS. Unaweza kupiga simu Ansible kupitia mtoaji wakati wa kuunda rasilimali. Ansible pia ina mada inayoitwa hesabu inayobadilika. Na unaweza kwanza kupiga simu Terraform, na kisha piga Ansible, ambayo itachukua rasilimali kutoka kwa serikali na kuitekeleza. Nini bora?

Watu hutumia zote mbili kwa mafanikio sawa. Inaonekana kwangu kuwa hesabu ya nguvu katika Ansible ni jambo rahisi, ikiwa hatuzungumzii juu ya kikundi cha kuongeza kasi. Kwa sababu katika kikundi cha kuongeza otomatiki tayari tuna zana yetu ya zana, ambayo inaitwa launch_configuration. Katika launch_configuration tunarekodi kila kitu kinachohitaji kuzinduliwa tunapounda rasilimali mpya. Kwa hiyo, pamoja na Amazon, kwa kutumia hesabu yenye nguvu na kusoma faili ya Terraform ts, kwa maoni yangu, ni overkill. Na ikiwa unatumia zana zingine ambapo hakuna wazo la "kikundi cha kuongeza otomatiki", kwa mfano, unatumia DigitalOcean au mtoaji mwingine ambapo hakuna kikundi cha otomatiki, basi hapo utalazimika kuvuta API kwa mikono, kupata anwani za IP, kuunda. a dynamic inventory file , na Ansible tayari itatangatanga ndani yake. Hiyo ni, kwa Amazon kuna launch_configuration, na kwa kila kitu kingine kuna hesabu ya nguvu.

Chanzo: mapenzi.com

Kuongeza maoni