ProHoster > Blag > Riarachán > Cur síos ar an mbonneagar in Terraform don todhchaí. Anton Babenko (2018)
Cur síos ar an mbonneagar in Terraform don todhchaí. Anton Babenko (2018)
Tá a fhios ag go leor daoine agus úsáideann siad Terraform ina gcuid oibre laethúil, ach níl na cleachtais is fearr dó déanta fós. Caithfidh gach foireann a gcur chuige agus a modhanna féin a chumadh.
Is cinnte go dtosaíonn do bhonneagar simplí: roinnt acmhainní + roinnt forbróirí. Le himeacht ama, fásann sé i ngach cineál treoracha. An bhfaighidh tú bealaí chun acmhainní a ghrúpáil isteach i modúil Terraform, cód a eagrú ina bhfillteáin, agus cad eile a d’fhéadfadh dul amú? (focail dheireanacha cáiliúla)
Gabhann an t-am thart agus mothaíonn tú gur peata nua é do bhonneagar, ach cén fáth? Tá imní ort faoi athruithe domhínithe ar an mbonneagar, tá eagla ort teagmháil a dhéanamh leis an mbonneagar agus leis an gcód - mar thoradh air sin, cuireann tú moill ar fheidhmiúlacht nua nó laghdaítear cáilíocht ...
Tar éis trí bliana de bhainistiú bailiúchán de mhodúil pobail Terraform le haghaidh AWS ar Github agus cothabháil fadtéarmach Terraform i dtáirgeadh, tá Anton Babenko réidh chun a thaithí a roinnt: conas modúil TF a scríobh ionas nach gortaítear é sa todhchaí.
Faoi dheireadh na cainte, beidh na rannpháirtithe níos eolach ar phrionsabail bhainistíochta acmhainní in Terraform, ar na cleachtais is fearr a bhaineann le modúil i Terraform, agus ar roinnt prionsabal comhtháthaithe leanúnach a bhaineann le bainistíocht bonneagair.
Séanadh:Tugaim faoi deara go bhfuil dáta Samhain 2018 ar an tuarascáil seo—tá dhá bhliain caite cheana féin. Ní thacaítear a thuilleadh leis an leagan de Terraform 2 a pléadh sa tuarascáil. Le 0.11 bhliain anuas, scaoileadh 2 eisiúint nua, ina bhfuil go leor nuálaíochtaí, feabhsuithe agus athruithe. Tabhair aird air seo agus seiceáil na doiciméid.
@antonbabenko - Twitter, agus a bunch de Slacks éagsúla
Is é mo ainm Anton Babenko. Is dócha gur bhain cuid agaibh úsáid as an gcód a scríobh mé. Labhróidh mé faoi seo anois le níos mó muiníne ná riamh, toisc go bhfuil rochtain agam ar staitisticí.
Oibrím ar Terraform agus bhí mé i mo rannpháirtí gníomhach agus rannpháirtí i líon mór tionscadal foinse oscailte a bhaineann le Terraform agus Amazon ó 2015 i leith.
Ó shin i leith tá go leor cód scríofa agam chun é a chur ar bhealach suimiúil. Agus déanfaidh mé iarracht a insint duit faoi seo anois.
Labhróidh mé faoi na castaí agus na sainghnéithe a bhaineann le bheith ag obair le Terraform. Ach ní hé sin ábhar HighLoad i ndáiríre. Agus anois beidh tú a thuiscint cén fáth.
Le himeacht ama, thosaigh mé ag scríobh modúil Terraform. Scríobh úsáideoirí ceisteanna, athscríobh mé iad. Ansin scríobh mé fóntais éagsúla chun an cód a fhormáid ag baint úsáide as hook réamh-tiomantais, etc.
Bhí go leor tionscadal suimiúil. Is maith liom giniúint cód mar is maith liom go ndéanann an ríomhaire níos mó oibre domsa agus don ríomhchláraitheoir, agus mar sin táim ag obair faoi láthair ar ghineadóir cód Terraform ó léaráidí amhairc. B’fhéidir go bhfaca cuid agaibh iad. Is boscaí álainn iad seo le saigheada. Agus is dóigh liom go bhfuil sé iontach más féidir leat an cnaipe “Easpórtáil” a chliceáil agus é a fháil mar chód.
Is as an Úcráin mé. Tá mé i mo chónaí san Iorua le blianta fada.
Chomh maith leis sin, bailíodh faisnéis don tuarascáil seo ó dhaoine a bhfuil m’ainm ar eolas acu agus a fhaigheann mé ar líonraí sóisialta. Bíonn an leasainm céanna agam beagnach i gcónaí.
Mar a luadh mé, tá mé mar phríomhchothabháil modúil Terraform AWS, atá ar cheann de na stórtha is mó ar GitHub áit a ndéanaimid óstáil ar mhodúil do na tascanna is coitianta: VPC, Autoscaling, RDS.
Agus is é an rud a chuala tú anois an ceann is bunúsaí. Má tá amhras ort go dtuigeann tú cad é Terraform, ansin is fearr do chuid ama a chaitheamh áit éigin eile. Beidh go leor téarmaí teicniúla anseo. Agus ní raibh aon leisce orm a dhearbhú go raibh leibhéal na tuarascála ar an leibhéal is airde. Ciallaíonn sé seo gur féidir liom labhairt ag baint úsáide as na téarmaí go léir is féidir gan mórán míniú.
Bhí an chuma ar Terraform in 2014 mar fhóntas a cheadaigh duit bonneagar a scríobh, a phleanáil agus a bhainistiú mar chód. Is é an príomhchoincheap anseo ná “bonneagar mar chód.”
Tá gach doiciméad, mar a dúirt mé, scríofa i terraform.io. Tá súil agam go bhfuil a fhios ag formhór na ndaoine faoin suíomh seo agus go bhfuil an doiciméadú léite acu. Más amhlaidh, tá tú san áit cheart.
Is é seo an chuma ar chomhad cumraíochta Terraform rialta, áit a ndéanaimid sainmhíniú ar roinnt athróg ar dtús.
Sa chás seo sainmhínímid "aws_region".
Ansin déanaimid cur síos ar na hacmhainní a theastaíonn uainn a chruthú.
Reáchtálaimid roinnt orduithe, go háirithe “terraform init” chun spleáchais agus soláthraithe a luchtú.
Agus ritheann muid an t-ordú “terraform apply” chun a sheiceáil an bhfuil an chumraíocht sonraithe ag teacht leis na hacmhainní a chruthaigh muid. Ós rud é nach bhfuil aon rud cruthaithe againn roimhe seo, spreagann Terraform sinn na hacmhainní seo a chruthú.
Deimhnímid é seo. Mar sin cruthaímid buicéad ar a dtugtar seilide.
Tá roinnt fóntais den chineál céanna ann freisin. Tá a fhios ag go leor agaibh a úsáideann Amazon AWS CloudFormation nó Bainisteoir Imscaradh Google Cloud nó Bainisteoir Acmhainní Azure. Tá a chur i bhfeidhm féin de shaghas éigin ag gach ceann acu chun acmhainní a bhainistiú laistigh de gach ceann de na soláthraithe scamall poiblí seo. Tá Terraform úsáideach go háirithe toisc go gceadaíonn sé duit níos mó ná 100 soláthraí a bhainistiú. (Tuilleadh sonraí anseo)
Na spriocanna atá bainte amach ag Terraform ón tús:
Soláthraíonn Terraform radharc aonair ar acmhainní.
Ligeann sé duit tacaíocht a thabhairt do gach ardán nua-aimseartha.
Agus dearadh Terraform ón tús mar áirgiúlacht a ligeann duit bonneagar a athrú go sábháilte agus intuartha.
In 2014, bhí an focal “intuartha” an-neamhghnách sa chomhthéacs seo.
Is fóntais uilíoch é Terraform. Má tá API agat, is féidir leat gach rud a rialú go hiomlán:
Is féidir leat níos mó ná 120 soláthraí a úsáid chun gach rud atá uait a bhainistiú.
Mar shampla, is féidir leat Terraform a úsáid chun cur síos a dhéanamh ar rochtain ar stórtha GitHub.
Is féidir leat fiú bugs a chruthú agus a dhúnadh i Jira.
Is féidir leat méadracht New Relic a bhainistiú.
Is féidir leat fiú comhaid a chruthú i dropbox más mian leat i ndáiríre.
Baintear é seo go léir amach ag baint úsáide as soláthraithe Terraform, a bhfuil API oscailte acu ar féidir cur síos a dhéanamh orthu in Go.
Ligean le rá thosaigh muid ag baint úsáide as Terraform, léigh roinnt doiciméadú ar an suíomh, d'fhéach sé ar roinnt físeáin, agus thosaigh sé ag scríobh main.tf, mar a léirigh mé ar na sleamhnáin roimhe seo.
Agus tá gach rud iontach, tá comhad agat a chruthaíonn VPC.
Más mian leat VPC a chruthú, sonraíonn tú thart ar an 12 líne seo. Déan cur síos ar an réigiún is mian leat a chruthú, cé na cidr_block de sheoltaí IP le húsáid. Sin é an méid.
Ar ndóigh, beidh an tionscadal ag fás de réir a chéile.
Agus beidh tú ag cur go leor rudaí nua leis ansin: acmhainní, foinsí sonraí, comhtháthóidh tú le soláthraithe nua, go tobann beidh tú ag iarraidh Terraform a úsáid chun úsáideoirí a bhainistiú i do chuntas GitHub, etc. B'fhéidir gur mhaith leat úsáid a bhaint as éagsúla Soláthraithe DNS , trasnaigh gach rud. Déanann Terraform é seo éasca.
Breathnaímid ar an sampla seo a leanas.
Cuireann tú internet_gateway leis de réir a chéile toisc go dteastaíonn uait acmhainní ó do VPC chun rochtain idirlín a bheith agat. Is smaoineamh maith é seo.
Is é an toradh seo main.tf:
Is é seo an chuid is airde de main.tf.
Is é seo an chuid íochtair de main.tf.
Ansin cuireann tú subnet leis. Faoin am is mian leat geataí NAT, bealaí, táblaí ródaithe agus bunch folíonta eile a chur leis, ní bheidh 38 líne agat, ach thart ar 200-300 líne.
Is é sin, tá do chomhad main.tf ag fás de réir a chéile. Agus is minic a chuireann daoine gach rud in aon chomhad. 10-20 Kb le feiceáil i main.tf. Samhlaigh gur ábhar téacs é 10-20 Kb. Agus tá gach rud ceangailte le gach rud. De réir a chéile tá sé seo ag éirí deacair oibriú leis. Is cás úsáideora maith é 10-20 Kb, uaireanta níos mó. Agus ní i gcónaí a cheapann daoine go bhfuil sé seo go dona.
Mar a dhéantar i gcláir rialta, ie ní bonneagar mar chód, táimid cleachta le húsáid a bhaint as sraith ranganna, pacáistí, modúil, grúpálacha éagsúla. Ceadaíonn Terraform duit an rud céanna a dhéanamh i bhfad.
Tá an cód ag fás.
Tá spleáchais idir acmhainní ag fás freisin.
Agus tá géarghá, mór againn. Tuigimid nach féidir linn maireachtáil mar seo a thuilleadh. Tá ár gcód ag éirí ollmhór. Ar ndóigh, níl 10-20 Kb an-mhór, ach nílimid ag caint ach faoi chruach an líonra, i.e. níl ach acmhainní líonra curtha leis agat. Nílimid ag caint faoi Chomhardú Luchtaithe Iarratais, braisle imscaradh ES, Kubernetes, etc., áit ar féidir 100 Kb a fhí isteach go héasca. Má scríobhann tú seo go léir síos, gheobhaidh tú amach go han-luath go soláthraíonn Terraform modúil Terraform.
Is cumraíocht féinchuimsitheach Terraform iad modúil Terraform a bhainistítear mar ghrúpa. Sin uile ní mór duit fios a bheith agat faoi mhodúil Terraform. Níl siad cliste ar chor ar bith, ní cheadaíonn siad duit aon naisc casta a dhéanamh ag brath ar rud éigin. Titeann sé seo go léir ar ghualainn na bhforbróirí. Is é sin, níl anseo ach cumraíocht Terraform de chineál éigin a scríobh tú cheana féin. Agus is féidir leat glaoch go simplí air mar ghrúpa.
Mar sin táimid ag iarraidh a thuiscint conas a dhéanfaimid ár gcód 10-20-30 Kb a bharrfheabhsú. Táimid ag tabhairt faoi deara de réir a chéile go gcaithfimid roinnt modúl a úsáid.
Is modúil acmhainne an chéad chineál modúl a dtagann tú trasna orthu. Ní thuigeann siad cad atá i gceist le do bhonneagar, cad faoi do ghnó, cá háit agus cad iad na coinníollacha. Is iad seo go díreach na modúil a riarann mise, agus an pobal foinse oscailte, agus a chuireamar chun tosaigh mar bhunchlocha tógála do bhonneagair.
Sampla de mhodúl acmhainne.
Nuair a ghlaoimid modúl acmhainne, sonraímid cén chonair ar cheart dúinn a bhfuil ann a luchtú.
Cuirimid in iúl cén leagan ba mhaith linn a íoslódáil.
Gabhaimid bunch argóintí ansin. Sin é an méid. Sin uile ní mór dúinn a bheith ar an eolas nuair a úsáidimid an modúl seo.
Síleann go leor daoine má úsáideann siad an leagan is déanaí, beidh gach rud cobhsaí. Ach níl. Ní mór an bonneagar a leagan amach, ní mór dúinn freagra soiléir a thabhairt ar cén leagan a úsáideadh é seo nó an comhpháirt sin dó.
Seo é an cód atá taobh istigh den mhodúl seo. Modúl grúpa slándála. Anseo téann an scrolla go dtí an 640ú líne. Is tasc an-neamhfhánach é acmhainn grúp slándála a chruthú in Amazon i ngach cumraíocht fhéideartha. Ní leor ach grúpa slándála a chruthú agus a insint dó cad iad na rialacha atá le tabhairt dó. Bheadh sé an-simplí. Tá milliún srianta éagsúla taobh istigh de Amazon. Mar shampla, má úsáideann tú Críochphointe VPC, liosta réimír, APIanna éagsúla agus déanann sé iarracht é seo go léir a chomhcheangal le gach rud eile, ansin ní cheadaíonn Terraform duit é seo a dhéanamh. Agus ní cheadaíonn API Amazon é seo ach an oiread. Dá bhrí sin, ní mór dúinn an loighic uafásach seo go léir a cheilt i modúl agus an cód úsáideora a bhreathnaíonn díreach mar seo a thabhairt.
Ní gá go mbeadh a fhios ag an úsáideoir conas a dhéantar é taobh istigh.
Réitíonn an dara cineál modúl, atá comhdhéanta de mhodúil acmhainne, fadhbanna atá níos infheidhme cheana féin do do ghnó. Go minic is áit é seo atá mar shíneadh do Terraform agus leagann sé roinnt luachanna dochta le haghaidh clibeanna, le haghaidh caighdeáin chuideachta. Is féidir leat feidhmiúlacht a chur leis ann freisin nach gceadaíonn Terraform duit é a úsáid faoi láthair. Tá sé seo ceart anois. Anois leagan 0.11, atá ar tí a bheith ina rud den am atá caite. Ach fós féin, is iad réamhphróiseálaithe, jsonnet, cookiecutter agus dornán rudaí eile an mheicníocht chúnta a chaithfear a úsáid le haghaidh obair iomlán.
Ansin taispeánfaidh mé roinnt samplaí de seo.
Tugtar an modúl bonneagair ar an mbealach céanna go díreach.
Léirítear an fhoinse ónar féidir an t-ábhar a íoslódáil.
Aistrítear braon luachanna isteach sa mhodúl seo agus cuirtear isteach iad.
Ansin, taobh istigh den mhodúl seo, glaoitear sraith modúl acmhainne chun VPC nó Cothromóir Ualach Feidhmchláir a chruthú, nó chun grúpa slándála a chruthú nó do bhraisle Seirbhíse Coimeádán Leaisteacha.
Tá dhá chineál modúl ann. Tá sé seo tábhachtach a thuiscint mar níl an chuid is mó den fhaisnéis atá grúpáilte agam sa tuarascáil seo scríofa sna doiciméid.
Agus tá an doiciméadú i Terraform ceart anois go leor fadhbanna mar a deir sé ach go bhfuil na gnéithe seo, is féidir leat iad a úsáid. Ach ní deir sí conas na gnéithe seo a úsáid, cén fáth go bhfuil sé níos fearr iad a úsáid. Mar sin, scríobhann líon an-mhór daoine rud éigin nach féidir leo maireachtáil leis.
Breathnaímid ar conas na modúil seo a scríobh an chéad uair eile. Ansin feicfimid conas glaoch orthu agus conas oibriú leis an gcód.
Leid #0 ná gan modúil acmhainne a scríobh. Tá an chuid is mó de na modúil seo scríofa duit cheana féin. Mar a dúirt mé, tá siad foinse oscailte, nach bhfuil siad go bhfuil aon cheann de do loighic gnó, nach bhfuil siad luachanna hardcoded le haghaidh seoltaí IP, pasfhocail, etc Tá an modúl an-solúbtha. Agus is dócha go bhfuil sé scríofa cheana féin. Tá go leor modúl le haghaidh acmhainní ó Amazon. Maidir le 650. Agus tá an chuid is mó acu ar chaighdeán maith.
Sa sampla seo, tháinig duine éigin chugat agus dúirt sé, “Ba mhaith liom a bheith in ann bunachar sonraí a bhainistiú. Cruthaigh modúl ionas gur féidir liom bunachar sonraí a chruthú." Níl a fhios ag an duine sonraí cur chun feidhme Amazon nó Terraform. Deir sé go simplí: "Ba mhaith liom MSSQL a bhainistiú." Is é sin, i gceist againn go mbeidh sé glaoch ar ár modúl, pas a fháil sa chineál innill ann, agus in iúl an crios ama.
Agus níor cheart go mbeadh a fhios ag duine go gcruthóimid dhá acmhainn éagsúla taobh istigh den mhodúl seo: ceann amháin le haghaidh MSSQL, an dara ceann le haghaidh gach rud eile, ach amháin toisc nach féidir leat luachanna crios ama a shonrú in Terraform 0.11 mar roghnach.
Agus ag an mbealach amach as an modúl seo, beidh duine in ann a fháil go simplí seoladh. Ní bheidh a fhios aige cén bunachar sonraí, as an acmhainn atá á chruthú againn go hinmheánach. Is gné an-tábhachtach de cheilt é seo. Agus baineann sé seo ní hamháin leis na modúil sin atá poiblí i bhfoinse oscailte, ach freisin leis na modúil sin a scríobhfaidh tú taobh istigh de do thionscadail agus d'fhoirne.
Is é seo an dara argóint, atá tábhachtach go leor má tá tú ag baint úsáide as Terraform ar feadh tamaill. Tá stór agat inar chuir tú do mhodúil Terraform ar fad do do chuideachta. Agus is gnách go leor go dtiocfaidh méadú ar mheigibheart amháin nó dhó ar an tionscadal seo le himeacht ama. Tá sé seo go breá.
Ach is í an fhadhb atá ann ná mar a ghlaonn Terraform na modúil seo. Mar shampla, má ghlaonn tú modúl chun gach úsáideoir aonair a chruthú, déanfaidh Terraform an stór iomlán a luchtú ar dtús agus ansin déanfaidh sé nascleanúint chuig an bhfillteán ina bhfuil an modúl sonrach sin suite. Ar an mbealach seo íoslódálann tú meigibheart amháin gach uair. Má bhainistíonn tú 100 nó 200 úsáideoir, ansin déanfaidh tú 100 nó 200 meigibheart a íoslódáil, agus ansin téigh chuig an bhfillteán sin. Mar sin, go nádúrtha ní mian leat a lán rudaí a íoslódáil gach uair a bhuaileann tú "Terraform init".
Tá dhá réiteach ar an bhfadhb seo. Is é an chéad cheann ná cosáin choibhneasta a úsáid. Ar an mbealach seo cuireann tú in iúl sa chód go bhfuil an fillteán áitiúil (./). Agus sula seolann tú rud ar bith, déanann tú clón Git den stór seo go háitiúil. Ar an mbealach seo a dhéanann tú é uair amháin.
Ar ndóigh, tá go leor míbhuntáistí ann. Mar shampla, ní féidir leat leagan a úsáid. Agus bíonn sé seo deacair uaireanta maireachtáil leis.
An dara réiteach. Má tá go leor fo-mhodúil agat agus go bhfuil cineál éigin de phíblíne bunaithe agat cheana féin, tá an tionscadal MBT ann, a ligeann duit go leor pacáistí éagsúla a bhailiú ó monorepository agus iad a uaslódáil chuig S3. Is bealach an-mhaith é seo. Mar sin, ní mheáfaidh an comhad iam-user-1.0.0.zip ach 1 Kb, toisc go bhfuil an cód chun an acmhainn seo a chruthú an-bheag. Agus oibreoidh sé i bhfad níos tapúla.
Labhraímis faoi na rudaí nach féidir a úsáid i modúil.
Cén fáth a bhfuil an t-olc seo i modúil? Is é an rud is measa ná glacadh leis an úsáideoir. Glac leis gur rogha fíordheimhnithe soláthraí é an t-úsáideoir is féidir le daoine éagsúla a úsáid. Mar shampla, déanfaimid go léir an ról a chomhshamhlú. Ciallaíonn sé seo go nglacfaidh Terraform an ról seo. Agus ansin leis an ról seo déanfaidh sé gníomhartha eile.
Agus is é an t-olc ná más maith le Vasya ceangal le Amazon ar bhealach amháin, mar shampla, ag baint úsáide as an athróg réamhshocraithe timpeallachta, agus is maith le Petya a eochair roinnte a úsáid, atá aige in áit rúnda, ansin ní féidir leat an dá cheann a shonrú. Terraform. Agus ionas nach bhfaighidh siad taithí ar fhulaingt, ní gá an bloc seo a chur in iúl sa mhodúl. Ní mór é seo a léiriú ag leibhéal níos airde. Is é sin, tá modúl acmhainne againn, modúl bonneagair agus comhdhéanamh ar a bharr. Agus ba chóir é seo a chur in iúl áit éigin níos airde.
Is é an dara olc an soláthraí. Anseo níl an t-olc chomh fánach, mar má scríobhann tú cód agus go n-oibríonn sé duit, is féidir leat smaoineamh má oibríonn sé, cén fáth a n-athróidh sé.
Is é an t-olc ná nach mbíonn smacht agat i gcónaí nuair a sheolfar an soláthraí seo, ar dtús. Agus ar an dara dul síos, ní rialaíonn tú cad a chiallaíonn Aws ec2, i.e. an bhfuil muid ag caint faoi Linux nó Windows anois. Mar sin ní féidir leat rud éigin a scríobh a oibreoidh mar an gcéanna ar chórais oibriúcháin éagsúla nó do chásanna úsáideoirí éagsúla.
Is é an sampla is coitianta, a shonraítear sa doiciméadú oifigiúil freisin, ná má scríobhann tú aws_instance agus má shonraíonn tú roinnt argóintí, níl aon rud cearr leis sin má shonraíonn tú an soláthraí “local-exec” ann agus má ritheann tú do fhreagra- leabhar súgartha.
Go deimhin, tá, níl aon rud cearr leis sin. Ach go litriúil go luath tuigfidh tú nach bhfuil an rud local-exec seo ann, mar shampla, i launch_configuration.
Agus nuair a úsáideann tú launch_configuration, agus tú ag iarraidh grúpa uathscálaithe a chruthú ó shampla amháin, ansin i launch_configuration níl aon choincheap "soláthraí". Tá an coincheap "sonraí úsáideora".
Dá bhrí sin, is réiteach níos uilíoch é sonraí úsáideoirí a úsáid. Agus seolfar é ar an ásc féin, nuair a bheidh an ásc ar siúl, nó sna sonraí úsáideora céanna, nuair a úsáideann an grúpa uathscálaithe an launch_configuration seo.
Más mian leat fós an soláthraí a rith, toisc gur comhpháirt gluing é, nuair a chruthaítear acmhainn amháin, ag an nóiméad sin ní mór duit do sholáthraí, d'ordú a rith. Tá go leor cásanna den sórt sin ann.
Agus is é an acmhainn is ceart chuige seo ná null_resource. Is acmhainn chaocha é null_resource nach gcruthaítear riamh. Ní chuireann sé teagmháil le rud ar bith, gan API, gan scálaithe uathoibríoch. Ach ceadaíonn sé duit a rialú nuair a rith an t-ordú. Sa chás seo, reáchtáiltear an t-ordú le linn cruthú.
Tá roinnt comharthaí ann. Ní rachaidh mé isteach go mion ar na comharthaí go léir. Tá alt faoi seo. Ach má d’oibrigh tú le Terraform nó má d’úsáid tú modúil daoine eile, is minic a thug tú faoi deara go bhfuil go leor modúl, cosúil leis an gcuid is mó den chód foinse oscailte, á scríobh ag daoine dá gcuid riachtanas féin. Scríobh fear é agus réitigh sé a fhadhb. bhfostú mé é i GitHub, lig sé beo. Beidh sé beo, ach mura bhfuil aon doiciméadú agus samplaí ann, ansin ní bheidh aon duine a úsáid. Agus mura bhfuil feidhmiúlacht ann a ligeann duit beagán níos mó ná a thasc sonrach a réiteach, ansin ní úsáidfidh aon duine é ach an oiread. Tá an oiread sin bealaí ann chun úsáideoirí a chailleadh.
Más mian leat rud éigin a scríobh ionas go n-úsáidfidh daoine é, ansin molaim na comharthaí seo a leanúint.
Seo iad:
Doiciméadú agus samplaí.
Feidhmiúlacht iomlán.
Mainneachtainí réasúnta.
Cód glan.
Tástálacha.
Is staid dhifriúil iad na trialacha mar is deacair go leor iad a scríobh. Creidim níos mó i gcáipéisíocht agus samplaí.
Mar sin, d'fhéachamar ar conas modúil a scríobh. Tá dhá argóint ann. Is é an chéad cheann, agus is é sin an rud is tábhachtaí, ná scríobh más féidir leat, toisc go bhfuil na tascanna seo déanta cheana féin ag cuid mhór daoine roimh tú. Agus ar an dara dul síos, má shocraíonn tú fós, déan iarracht gan soláthraithe a úsáid i modúil agus soláthraithe.
Is é seo an chuid liath den doiciméadú. Seans go bhfuil tú ag smaoineamh anois: “Tá rud éigin doiléir. Níl sé cinnte." Ach feicfimid i sé mhí.
Anois, déanaimis labhairt faoi conas na modúil seo a ghlaoch.
Tuigimid go bhfásann ár gcód le himeacht ama. Níl comhad amháin againn a thuilleadh, tá 20 comhad againn cheana féin. Tá siad go léir in aon fhillteán amháin. Nó b'fhéidir cúig fhillteán. B'fhéidir go bhfuil muid ag tosú ar iad a bhriseadh síos ar bhealach éigin de réir réigiúin, de réir roinnt comhpháirteanna. Ansin tuigimid go bhfuil roinnt rudaí bunúsacha sioncronaithe agus ceolfhoirne againn anois. Is é sin, ní mór dúinn a thuiscint cad ba cheart dúinn a dhéanamh má d'athraigh muid acmhainní líonra, cad ba cheart dúinn a dhéanamh leis an gcuid eile dár n-acmhainní, conas a chur faoi deara na spleáchais, etc.
Tá dhá dhálaí foircneacha ann. Tá an chéad cheann ar fad i gceann amháin. Tá máistirchomhad amháin againn. De thuras na huaire, ba é seo an cleachtas oifigiúil is fearr ar shuíomh Gréasáin Terraform.
Ach anois tá sé scríofa mar dhímheas agus bainte. Le himeacht ama, thuig pobal Terraform go raibh sé seo i bhfad ón gcleachtas is fearr, toisc gur thosaigh daoine ag úsáid an tionscadail ar bhealaí éagsúla. Agus tá fadhbanna ann. Mar shampla, nuair a liostaímid gach spleáchas in aon áit amháin. Bíonn cásanna ann nuair a chliceálann muid “Plean terraform” agus go dtí go nuashonraíonn Terraform stáit na n-acmhainní go léir, is féidir go leor ama a chaitheamh.
Tá go leor ama, mar shampla, 5 nóiméad. I gcás roinnt tá sé seo go leor ama. Tá cásanna feicthe agam inar thóg sé 15 nóiméad. Chaith API AWS 15 nóiméad ag iarraidh a dhéanamh amach cad a bhí ag tarlú le staid gach acmhainne. Is limistéar an-mhór é seo.
Agus, go nádúrtha, beidh fadhb ghaolmhar le feiceáil nuair is mian leat rud éigin a athrú in aon áit amháin, ansin fanann tú 15 nóiméad, agus tugann sé canbhás roinnt athruithe duit. Scairt tú, scríobh "Tá", agus chuaigh rud éigin mícheart. Is sampla an-dáiríre é seo. Ní dhéanann Terraform iarracht tú a chosaint ó fhadhbanna. Is é sin, scríobh cad ba mhaith leat. Beidh fadhbanna ann - do chuid fadhbanna. Cé nach bhfuil Terraform 0.11 ag iarraidh cabhrú leat ar bhealach ar bith. Tá áiteanna suimiúla áirithe in 0.12 a ligeann duit a rá: “Vasya, tá sé seo ag teastáil uait i ndáiríre, an féidir leat teacht ar do chéadfaí?”
Is é an dara bealach ná an réimse seo a laghdú, is é sin, is féidir glaonna ó áit amháin a nascadh níos lú ó áit eile.
Is í an t-aon fhadhb atá ann ná go gcaithfidh tú níos mó cód a scríobh, i.e. ní mór duit cur síos a dhéanamh ar athróga i líon mór comhad agus é seo a nuashonrú. Ní maith le roinnt daoine é. Tá sé seo gnáth dom. Agus síleann daoine áirithe: “Cén fáth é seo a scríobh in áiteanna éagsúla, cuirfidh mé é go léir in aon áit amháin.” Tá sé seo indéanta, ach is é seo an dara foircneach.
Cé aige a bhfuil cónaí air seo go léir in aon áit amháin? Duine amháin, beirt, triúr, is é sin, tá duine ag baint úsáide as.
Agus cé a ghlaonn comhpháirt ar leith amháin, bloc amháin nó modúl bonneagair amháin? Cúig go seacht daoine. Tá sé seo fionnuar.
Is é an freagra is coitianta áit éigin sa lár. Má tá an tionscadal mór, ansin beidh tú go minic i gcás nach bhfuil aon réiteach oiriúnach agus nach n-oibríonn gach rud amach ann, mar sin deireadh tú suas le meascán. Níl aon rud cearr leis seo, chomh fada agus a thuigeann tú go bhfuil buntáistí ag an dá cheann.
Má d'athraigh rud éigin sa stack VPC agus go raibh tú ag iarraidh na hathruithe seo a chur i bhfeidhm ar EC2, ie go raibh tú ag iarraidh an grúpa uathscálaithe a thabhairt cothrom le dáta toisc go raibh fo-líon nua agat, glaoim orthú spleáchais ar an gcineál seo. Tá roinnt réitigh ann: cé a úsáideann cad é?
Thig liom a mholadh cad iad na réitigh atá ann. Is féidir leat Terraform a úsáid chun an draíocht a dhéanamh, nó is féidir leat comhaid a dhéanamh chun Terraform a úsáid. Agus féach an bhfuil rud éigin tar éis athrú ansin, is féidir leat é a sheoladh anseo.
Conas is maith leat an cinneadh seo? An gcreideann éinne gur réiteach fionnuar é seo? Feicim aoibh gháire, is cosúil go bhfuil amhras tagtha isteach.
Ar ndóigh, ná bain triail as seo sa bhaile. Níor dearadh Terraform riamh le bheith á rith ó Terraform.
Ag tuairisc amháin dúirt siad liom: “Ní hea, ní oibreoidh sé seo.” Is é an pointe ná nár cheart go n-oibreodh sé. Cé go bhfuil cuma chomh hiontach air nuair is féidir leat Terraform a sheoladh ó Terraform, agus ansin Terraform, níor cheart duit é sin a dhéanamh. Ba cheart go dtosódh Terraform go han-éasca i gcónaí.
Más gá duit glaoch ornáidí nuair a bhíonn rud éigin athraithe in aon áit amháin, ansin tá Terragrunt.
Is áirgiúlacht é Terragrunt, breiseán le Terraform, a ligeann duit glaonna chuig modúil bhonneagair a chomhordú agus a chur i bhfeidhm.
Breathnaíonn gnáthchomhad cumraíochta Terraform mar seo.
Sonraíonn tú cén modúl ar leith is mian leat a ghlaoch.
Cé na spleáchais atá ag an modúl?
Agus cad iad na hargóintí a nglacann an modúl seo leis. Sin go léir atá ar eolas faoi Terragrunt.
Tá an doiciméadú ann, agus tá 1 réalta ar GitHub. Ach i bhformhór na gcásanna is é seo an méid is gá duit a fhios. Agus tá sé seo an-éasca a chur i bhfeidhm i gcuideachtaí atá díreach ag tosú ag obair le Terraform.
Mar sin tá ceolfhoireann Terragrunt. Tá roghanna eile ann.
Anois, déanaimis labhairt faoi conas oibriú leis an gcód.
Más gá duit gnéithe nua a chur le do chód, tá sé seo éasca i bhformhór na gcásanna. Tá acmhainn nua á scríobh agat, tá gach rud simplí.
Má tá acmhainn éigin agat a chruthaigh tú roimh ré, mar shampla, d'fhoghlaim tú faoi Terraform tar éis duit cuntas AWS a oscailt agus gur mhaith leat na hacmhainní atá agat cheana féin a úsáid, bheadh sé oiriúnach do mhodúl a leathnú ar an mbealach seo, ionas gur féidir tacaíonn sé le húsáid acmhainní atá ann cheana féin.
Agus thacaigh sé le cruthú acmhainní nua ag baint úsáide as an acmhainn bloc.
Ar aschur tugaimid an t-aitheantas aschuir ar ais i gcónaí ag brath ar an méid a úsáideadh.
Tá an dara fadhb an-suntasach i Terraform 0.11 ag obair le liostaí.
Is é an deacracht ná má tá liosta úsáideoirí den sórt sin againn.
Agus nuair a chruthaímid na húsáideoirí seo ag baint úsáide as bloc acmhainn, ansin téann gach rud go breá. Téann muid tríd an liosta iomlán, ag cruthú comhad do gach ceann acu. Tá gach rud breá. Agus ansin, mar shampla, ba chóir úsáideoir3, atá i lár, a bhaint as seo, ansin déanfar na hacmhainní go léir a cruthaíodh tar éis dó a athchruthú mar go n-athróidh an t-innéacs.
Ag obair le liostaí i dtimpeallacht státmhar. Cad is timpeallacht státmhar ann? Seo an cás ina gcruthaítear luach nua nuair a chruthaítear an acmhainn seo. Mar shampla, Eochair Rochtana AWS nó Eochair Rúnda AWS, i.e. nuair a chruthaímid úsáideoir, faightear Eochair Rochtana nó Rúnda nua. Agus gach uair a scriosfaimid úsáideoir, beidh eochair nua ag an úsáideoir seo. Ach ní feng shui é seo, mar ní bheidh an t-úsáideoir ag iarraidh a bheith ina chairde le linn má chruthaímid úsáideoir nua dó gach uair a fhágann duine éigin an fhoireann.
Is é seo an réiteach. Tá an cód seo scríofa i Jsonnet. Is teanga teimpléid ó Google é Jsonnet.
Ligeann an t-ordú seo duit glacadh leis an teimpléad seo agus mar aschur filleann sé comhad json a dhéantar de réir do theimpléad.
Breathnaíonn an teimpléad mar seo.
Ceadaíonn Terraform duit oibriú le HCL agus Json araon ar an mbealach céanna, mar sin má tá an cumas agat Json a ghiniúint, is féidir leat é a shleamhnú isteach i Terraform. Déanfar an comhad leis an síneadh .tf.json a íoslódáil go rathúil.
Agus ansin oibrímid leis mar is gnách: tá feidhm ag terraform init, terramorm. Agus cruthaímid dhá úsáideoir.
Anois níl eagla orainn má fhágann duine éigin an fhoireann. Ní dhéanfaimid ach an comhad json a chur in eagar. Vasya Pupkin fhág, d'fhan Petya Pyatochkin. Ní bhfaighidh Petya Pyatochkin eochair nua.
Ní obair Terraform i ndáiríre é Terraform a chomhtháthú le huirlisí eile. Cruthaíodh Terraform mar ardán chun acmhainní a chruthú agus sin é. Agus ní ábhar imní do Terraform gach rud a thagann chun cinn níos déanaí. Agus ní gá é a fhí isteach ann. Tá Ansible ann, a dhéanann gach rud atá uait.
Ach tagann cásanna chun cinn nuair is mian linn Terraform a leathnú agus roinnt ordú a ghlaoch tar éis rud éigin a bheith críochnaithe.
An chéad bhealach. Cruthaímid aschur ina scríobhaimid an t-ordú seo.
Agus ansin tugaimid an t-ordú seo ón aschur terraform bhlaosc agus sonraigh an luach atá uainn. Mar sin, déantar an t-ordú a fhorghníomhú leis na luachanna ionaid go léir. Tá sé an-chompordach.
An dara bealach. Is é seo an úsáid a bhaintear as null_resource ag brath ar athruithe inár mbonneagar. Is féidir linn glaoch ar an exe local-céanna chomh luath agus a athraíonn ID roinnt acmhainní.
Ar ndóigh, tá sé seo go léir réidh ar pháipéar, toisc go bhfuil a chuid cásanna imeall féin ag Amazon, cosúil le gach soláthraí poiblí eile.
Is é an cás imeall is coitianta ná nuair a osclaíonn tú cuntas AWS, bíonn sé tábhachtach cé na réigiúin a úsáideann tú; an bhfuil an ghné seo cumasaithe ann; b'fhéidir gur oscail tú é tar éis mhí na Nollag 2013; b'fhéidir go bhfuil tú ag úsáid réamhshocraithe i VPC srl. Tá go leor srianta ann. Agus scaipthe Amazon iad ar fud an doiciméadú.
Tá cúpla rud a mholaim a sheachaint.
Chun tús a chur, seachain gach argóint neamhrúnda taobh istigh den phlean Terraform nó CLI Terraform. Is féidir é seo ar fad a chur isteach i gcomhad tfvars nó in athróg timpeallachta.
Ach ní gá duit an t-ordú iomlán draíochta seo a chur de ghlanmheabhair. Plean terraform – var agus amach a théann muid. Is é an chéad athróg ná var, is é an dara athróg var, an tríú, an ceathrú. Is é an prionsabal is tábhachtaí maidir le hinfrastruchtúr mar chód a úsáidim is minice ná go díreach trí bhreathnú ar an gcód, ba cheart go mbeadh tuiscint shoiléir agam ar cad a úsáidtear ann, cén stát agus cad iad na luachanna. Agus mar sin ní gá dom an doiciméadú a léamh ná fiafraí de Vasya cad iad na paraiméadair a d’úsáid sé chun ár mbraisle a chruthú. Ní mór dom ach comhad a oscailt leis an síneadh tfvars, a mheaitseálann go minic leis an gcomhshaol, agus breathnú ar gach rud atá ann.
Chomh maith leis sin, ná húsáid argóintí sprice chun an raon feidhme a laghdú. Chun seo tá sé i bhfad níos éasca modúil bonneagair bheaga a úsáid.
Chomh maith leis sin, níl aon ghá le comhthreomhaireacht a theorannú agus a mhéadú. Má tá acmhainní 150 agam agus ba mhaith liom comhthreomhaireacht Amazon a mhéadú ón réamhshocrú 10 go 100, ansin is dóichí go rachaidh rud éigin mícheart. Nó d'fhéadfadh sé dul go maith anois, ach nuair a deir Amazon go bhfuil tú ag déanamh an iomarca glaonna, beidh tú i dtrioblóid.
Déanfaidh Terraform iarracht an chuid is mó de na fadhbanna seo a atosú, ach ní dhéanfaidh tú beagnach aon rud a bhaint amach. Rud tábhachtach is ea Parallelism=1 a úsáid má thagann tú trasna ar fhabht éigin laistigh den API AWS nó laistigh den soláthraí Terraform. Agus ansin ní mór duit a shonrú: comhthreomhaireacht = 1 agus fanacht go dtí go gcríochnaíonn Terraform glaoch amháin, ansin an dara ceann, ansin an tríú. Seolfaidh sé iad ceann ar cheann.
Is minic a fhiafraíonn daoine díom, “Cén fáth a gceapaim go bhfuil spásanna oibre Terraform olc?” Creidim gurb é prionsabal an bhonneagair mar chód ná féachaint cén bonneagar atá cruthaithe agus cad iad na luachanna leis.
Níor chruthaigh úsáideoirí spásanna oibre. Ní chiallaíonn sé seo gur scríobh úsáideoirí i saincheisteanna GitHub nach féidir linn maireachtáil gan spásanna oibre Terraform. Níl ní mar seo. Is réiteach tráchtála é Terraform Enterprise. Shocraigh Terraform ó HashiCorp go raibh spásanna oibre de dhíth orainn, mar sin rinneamar é a chomhdú. Braithim go bhfuil sé i bhfad níos éasca é a chur i bhfillteán ar leith. Ansin beidh comhaid beagán níos mó, ach beidh sé níos soiléire.
Conas a bheith ag obair leis an gcód? Go deimhin, is é an t-aon phian atá ag obair le liostaí. Agus a ghlacadh Terraform níos éasca. Ní hé seo an rud a dhéanfaidh gach rud iontach duit. Ní gá gach rud atá scríofa sa doiciméadú a bhrú ann.
Scríobhadh ábhar na tuarascála “don todhchaí”. Labhróidh mé faoi seo go han-ghairid. Don todhchaí, ciallaíonn sé seo go scaoilfear 0.12 go luath.
Is é 0.12 tonna de rudaí nua. Má thagann tú ó ríomhchlárú rialta, ansin chailleann tú gach cineál bloic dinimiciúil, lúb, oibríochtaí comparáide ceart agus coinníollach, i gcás nach ríomhtar an taobh clé agus ar dheis ag an am céanna, ach ag brath ar an staid. Chailleann tú go leor é, mar sin déanfaidh 0.12 é a réiteach duit.
Ach! Má scríobhann tú níos lú agus níos simplí, ag baint úsáide as modúil réamhdhéanta agus réitigh tríú páirtí, ansin ní bheidh ort fanacht agus tá súil agam go dtiocfaidh 0.12 agus gach rud a shocrú duit.
Go raibh maith agat as an tuairisc! Labhair tú faoi bhonneagar mar chód agus go litriúil dúirt tú focal amháin faoi thástálacha. An bhfuil gá le trialacha i modúil? Cé leis atá an fhreagracht seo? An gá dom é a scríobh mé féin nó an bhfuil na modúil freagrach as?
Beidh an bhliain seo chugainn a líonadh le tuarascálacha go bhfuil cinneadh déanta againn gach rud a thástáil. Cad atá le tástáil an cheist is mó. Tá go leor spleáchais ann, go leor srianta ó sholáthraithe éagsúla. Nuair a bhíonn tú féin agus mise ag caint agus tú ag rá: “Tá tástálacha de dhíth orm,” fiafraím ansin: “Cad a dhéanfaidh tú a thástáil?” Deir tú go ndéanfaidh tú tástáil i do réigiún. Ansin deirim nach n-oibríonn sé seo i mo réigiún. Is é sin, ní bheidh muid in ann aontú faoi seo fiú. Gan trácht ar go bhfuil a lán de na fadhbanna teicniúla. Is é sin, conas na tástálacha seo a scríobh ionas go mbeidh siad leordhóthanach.
Tá taighde gníomhach á dhéanamh agam ar an ábhar seo, i.e. conas tástálacha a ghiniúint go huathoibríoch bunaithe ar an mbonneagar a scríobh tú. Is é sin, má scríobh tú an cód seo, ansin is gá dom a rith, bunaithe ar seo is féidir liom tástálacha a chruthú.
Terratest ar cheann de na leabharlanna is minicí a luaitear a ligeann duit tástálacha comhtháthú a scríobh le haghaidh Terraform. Tá sé seo ar cheann de na fóntais. Is fearr liom an cineál DSL, mar shampla, rspec.
Anton, go raibh maith agat as an tuairisc! Valery is ainm dom. Lig dom ceist bheag fealsúnach a chur. Go coinníollach, tá soláthar ann, tá imscaradh ann. Cruthaíonn soláthar mo bhonneagar, le linn imscaradh líonaimid é le rud éigin úsáideach, mar shampla, freastalaithe, feidhmchláir, etc. Agus tá sé i mo cheann go bhfuil Terraform níos mó le haghaidh soláthar, agus tá Ansible níos mó le haghaidh imscaradh, toisc go bhfuil Ansible freisin le haghaidh fisiceach An bonneagar ligeann duit nginx, Postgres a shuiteáil. Ach ag an am céanna, is cosúil go gceadaíonn Ansible soláthar, mar shampla, acmhainní Amazon nó Google. Ach ceadaíonn Terraform leat roinnt bogearraí a imscaradh ag baint úsáide as a modúil. Ó do dhearcadh féin, an bhfuil teorainn de shaghas éigin a ritheann idir Terraform agus Ansible, cén áit agus cad is fearr le húsáid? Nó, mar shampla, an gceapann tú go bhfuil Ansible cheana féin truflais, ba chóir duit iarracht a úsáid Terraform do gach rud?
Ceist mhaith, Valery. Creidim nach bhfuil aon athrú ar Terraform ó thaobh cuspóra ó 2014 i leith. Cruthaíodh é le haghaidh bonneagair agus fuair sé bás don bhonneagar. Bhí agus beidh gá againn fós le bainistíocht cumraíochta Ansible. Is é an dúshlán atá ann ná go bhfuil sonraí úsáideora taobh istigh de launch_configuration. Agus ansin tarraingíonn tú Ansible, etc. Seo an t-idirdhealú caighdeánach is fearr liom.
Má tá muid ag caint faoi infrastruchtúr álainn, ansin tá fóntais cosúil le Packer a bhailíonn an íomhá seo. Agus ansin úsáideann Terraform an fhoinse sonraí chun an íomhá seo a aimsiú agus a launch_configuration a nuashonrú. Is é sin, ar an mbealach seo tá an phíblíne go bhfuil muid ag tarraingt Tracker ar dtús, ansin tarraingt Terraform. Agus má tharlaíonn tógáil, tarlaíonn athrú nua.
Dia dhuit! Go raibh maith agat as an tuairisc! Misha is ainm dom, cuideachta RBS. Is féidir leat glaoch ar Ansible trí sholáthraí agus acmhainn á cruthú. Tá ábhar ag Ansible freisin ar a dtugtar fardal dinimiciúil. Agus is féidir leat Terraform a ghlaoch ar dtús, agus ansin glaoch ar Ansible, a ghlacfaidh acmhainní ón stát agus é a fhorghníomhú. Cad atá níos fearr?
Úsáideann daoine an dá cheann ar chomh-rath. Feictear dom gur rud áisiúil é fardal dinimiciúil in Ansible, mura bhfuilimid ag caint faoi ghrúpa uathscálaithe. Toisc go bhfuil ár bhfoireann uirlisí féin againn cheana féin sa ghrúpa uathscálaithe, ar a dtugtar launch_configuration. I launch_configuration déanaimid taifead ar gach rud is gá a sheoladh nuair a chruthaímid acmhainn nua. Mar sin, le Amazon, ag baint úsáide as fardal dinimiciúil agus ag léamh an comhad Terraform ts, i mo thuairim, tá overkill. Agus má úsáideann tú uirlisí eile nach bhfuil aon choincheap “grúpa uathscálaithe” ann, mar shampla, úsáideann tú DigitalOcean nó soláthraí éigin eile nach bhfuil grúpa uathscálaithe ann, ansin beidh ort an API a tharraingt de láimh, seoltaí IP a aimsiú, a chruthú. comhad fardail dinimiciúil , agus beidh Ansible ag dul tríd cheana féin. Is é sin, le haghaidh Amazon tá launch_configuration, agus do gach rud eile tá fardal dinimiciúil.