Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae llawer o bobl yn gwybod ac yn defnyddio Terraform yn eu gwaith beunyddiol, ond nid yw'r arferion gorau ar ei gyfer wedi'u ffurfio eto. Rhaid i bob tîm ddyfeisio ei ddulliau a'i ddulliau ei hun.

Mae eich seilwaith bron yn sicr yn dechrau'n syml: ychydig o adnoddau + ychydig o ddatblygwyr. Dros amser, mae'n tyfu i bob math o gyfeiriadau. Ydych chi'n dod o hyd i ffyrdd o grwpio adnoddau i fodiwlau Terraform, trefnu cod yn ffolderi, a beth arall all fynd o'i le? (geiriau olaf enwog)

Mae amser yn mynd heibio ac rydych chi'n teimlo mai eich seilwaith yw eich anifail anwes newydd, ond pam? Rydych chi'n poeni am newidiadau anesboniadwy yn y seilwaith, rydych chi'n ofni cyffwrdd â'r seilwaith a'r cod - o ganlyniad, rydych chi'n gohirio swyddogaethau newydd neu'n lleihau ansawdd ...

Ar ôl tair blynedd o reoli casgliad o fodiwlau cymunedol Terraform ar gyfer AWS ar Github a chynnal a chadw Terraform yn y tymor hir wrth gynhyrchu, mae Anton Babenko yn barod i rannu ei brofiad: sut i ysgrifennu modiwlau TF fel nad yw'n brifo yn y dyfodol.

Erbyn diwedd y sgwrs, bydd cyfranogwyr yn fwy cyfarwydd ag egwyddorion rheoli adnoddau yn Terraform, arferion gorau sy'n gysylltiedig â modiwlau yn Terraform, a rhai egwyddorion integreiddio parhaus sy'n gysylltiedig â rheoli seilwaith.

Ymwadiad: Sylwaf fod yr adroddiad hwn yn ddyddiedig Tachwedd 2018—mae dwy flynedd eisoes wedi mynd heibio. Nid yw'r fersiwn o Terraform 2 a drafodwyd yn yr adroddiad yn cael ei gefnogi bellach. Dros y 0.11 flynedd ddiwethaf, mae 2 ddatganiad newydd wedi'u rhyddhau, sy'n cynnwys llawer o arloesiadau, gwelliannau a newidiadau. Rhowch sylw i hyn a gwiriwch y ddogfennaeth.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Cyfeiriadau:

Fy enw i yw Anton Babenko. Mae'n debyg bod rhai ohonoch wedi defnyddio'r cod a ysgrifennais. Byddaf yn awr yn siarad am hyn yn fwy hyderus nag erioed, oherwydd mae gennyf fynediad at ystadegau.

Rwy'n gweithio ar Terraform ac wedi bod yn gyfranogwr gweithgar ac yn cyfrannu at nifer fawr o brosiectau ffynhonnell agored yn ymwneud â Terraform ac Amazon ers 2015.

Ers hynny rydw i wedi ysgrifennu digon o god i'w roi mewn ffordd ddiddorol. A byddaf yn ceisio dweud wrthych am hyn yn awr.

Byddaf yn siarad am gymhlethdodau a manylion gweithio gyda Terraform. Ond nid dyna bwnc HighLoad mewn gwirionedd. Ac yn awr byddwch yn deall pam.

Dros amser, dechreuais ysgrifennu modiwlau Terraform. Ysgrifennodd defnyddwyr gwestiynau, fe wnes i eu hailysgrifennu. Yna ysgrifennais amrywiol gyfleustodau i fformatio'r cod gan ddefnyddio bachyn rhag-ymrwymo, ac ati.

Roedd llawer o brosiectau diddorol. Rwy'n hoffi cynhyrchu cod oherwydd rwy'n hoffi'r cyfrifiadur i wneud mwy a mwy o waith i mi a'r rhaglennydd, felly ar hyn o bryd rwy'n gweithio ar generadur cod Terraform o ddiagramau gweledol. Efallai bod rhai ohonoch wedi eu gweld. Mae'r rhain yn focsys hardd gyda saethau. Ac rwy'n credu ei bod yn wych os gallwch chi glicio ar y botwm “Allforio” a chael y cyfan fel cod.

Rwy'n dod o Wcráin. Rwyf wedi byw yn Norwy ers blynyddoedd lawer.

Hefyd, casglwyd gwybodaeth ar gyfer yr adroddiad hwn gan bobl sy'n gwybod fy enw ac yn dod o hyd i mi ar rwydweithiau cymdeithasol. Mae gen i'r un llysenw bron bob amser.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

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

Fel y soniais, fi yw prif gynhaliwr modiwlau Terraform AWS, sef un o'r ystorfeydd mwyaf ar GitHub lle rydym yn cynnal modiwlau ar gyfer y tasgau mwyaf cyffredin: VPC, Autoscaling, RDS.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A'r hyn a glywsoch nawr yw'r mwyaf sylfaenol. Os ydych chi'n amau ​​​​eich bod chi'n deall beth yw Terraform, yna mae'n well treulio'ch amser yn rhywle arall. Bydd llawer o dermau technegol yma. Ac ni phetrusais ddatgan mai lefel yr adroddiad oedd yr uchaf. Mae hyn yn golygu y gallaf siarad gan ddefnyddio'r holl dermau posibl heb lawer o esboniad.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ymddangosodd Terraform yn 2014 fel cyfleustodau a oedd yn caniatáu ichi ysgrifennu, cynllunio a rheoli seilwaith fel cod. Y cysyniad allweddol yma yw “isadeiledd fel cod.”

Mae'r holl ddogfennaeth, fel y dywedais, wedi'i hysgrifennu i mewn terraform.io. Rwy'n gobeithio bod y rhan fwyaf o bobl yn gwybod am y wefan hon ac wedi darllen y ddogfennaeth. Os felly, yna rydych chi yn y lle iawn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Dyma sut olwg sydd ar ffeil cyfluniad Terraform rheolaidd, lle rydym yn diffinio rhai newidynnau yn gyntaf.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yn yr achos hwn rydym yn diffinio "aws_region".

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yna rydyn ni'n disgrifio pa adnoddau rydyn ni am eu creu.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Rydym yn rhedeg rhai gorchmynion, yn enwedig “terraform init” er mwyn llwytho dibyniaethau a darparwyr.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac rydym yn rhedeg y gorchymyn “terraform apply” er mwyn gwirio a yw'r cyfluniad penodedig yn cyfateb i'r adnoddau a grëwyd gennym. Gan nad ydym wedi creu unrhyw beth o'r blaen, mae Terraform yn ein hannog i greu'r adnoddau hyn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Rydym yn cadarnhau hyn. Felly rydyn ni'n creu bwced o'r enw seasail.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae yna hefyd nifer o gyfleustodau tebyg. Mae llawer ohonoch sy'n defnyddio Amazon yn gwybod AWS CloudFormation neu Google Cloud Deployment Manager neu Azure Resource Manager. Mae gan bob un ohonynt ei weithrediad ei hun o ryw fath ar gyfer rheoli adnoddau o fewn pob un o'r darparwyr cwmwl cyhoeddus hyn. Mae Terraform yn arbennig o ddefnyddiol oherwydd ei fod yn caniatáu ichi reoli dros 100 o ddarparwyr. (Mwy o fanylion yma)

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Y nodau y mae Terraform wedi'u dilyn o'r cychwyn cyntaf:

  • Mae Terraform yn darparu golwg sengl o adnoddau.
  • Yn caniatáu ichi gefnogi pob platfform modern.
  • A dyluniwyd Terraform o'r cychwyn cyntaf fel cyfleustodau sy'n eich galluogi i newid seilwaith yn ddiogel ac yn rhagweladwy.

Yn 2014, roedd y gair “rhagweladwy” yn swnio'n anarferol iawn yn y cyd-destun hwn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae Terraform yn gyfleustodau cyffredinol. Os oes gennych chi API, yna gallwch chi reoli popeth yn llwyr:

  • Gallwch ddefnyddio mwy na 120 o ddarparwyr i reoli popeth rydych chi ei eisiau.
  • Er enghraifft, gallwch ddefnyddio Terraform i ddisgrifio mynediad i ystorfeydd GitHub.
  • Gallwch hyd yn oed greu a chau bygiau yn Jira.
  • Gallwch reoli metrigau New Relic.
  • Gallwch hyd yn oed greu ffeiliau mewn dropbox os ydych chi wir eisiau.

Cyflawnir hyn i gyd gan ddefnyddio darparwyr Terraform, sydd ag API agored y gellir ei ddisgrifio yn Go.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Gadewch i ni ddweud inni ddechrau defnyddio Terraform, darllen rhai dogfennau ar y wefan, gwylio rhywfaint o fideo, a dechrau ysgrifennu main.tf, fel y dangosais ar y sleidiau blaenorol.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac mae popeth yn wych, mae gennych ffeil sy'n creu VPC.

Os ydych chi am greu VPC, yna rydych chi'n nodi tua'r 12 llinell hyn. Disgrifiwch ym mha ranbarth rydych chi am ei greu, pa cidr_block o gyfeiriadau IP i'w defnyddio. Dyna i gyd.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yn naturiol, bydd y prosiect yn tyfu'n raddol.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A byddwch yn ychwanegu criw o bethau newydd yno: adnoddau, ffynonellau data, byddwch yn integreiddio â darparwyr newydd, yn sydyn byddwch am ddefnyddio Terraform i reoli defnyddwyr yn eich cyfrif GitHub, ac ati Efallai y byddwch am ddefnyddio gwahanol Darparwyr DNS , croeswch bopeth. Mae terraform yn gwneud hyn yn hawdd.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Gadewch i ni edrych ar yr enghraifft ganlynol.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Rydych yn ychwanegu internet_gateway yn raddol oherwydd eich bod am i adnoddau gan eich VPC gael mynediad i'r rhyngrwyd. Mae hwn yn syniad da.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Y canlyniad yw hwn main.tf:

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Dyma ran uchaf main.tf.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Dyma ran waelod main.tf.

Yna byddwch yn ychwanegu subnet. Erbyn i chi eisiau ychwanegu pyrth NAT, llwybrau, byrddau llwybro a chriw o is-rwydweithiau eraill, ni fydd gennych 38 llinell, ond tua 200-300 o linellau.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Hynny yw, mae eich ffeil main.tf yn tyfu'n raddol. Ac yn aml iawn mae pobl yn rhoi popeth mewn un ffeil. 10-20 Kb yn ymddangos yn main.tf. Dychmygwch fod 10-20 Kb yn cynnwys testun. Ac mae popeth yn gysylltiedig â phopeth. Mae hyn yn raddol yn dod yn anodd gweithio ag ef. Mae 10-20 Kb yn achos defnyddiwr da, weithiau'n fwy. Ac nid yw pobl bob amser yn meddwl bod hyn yn ddrwg.

Fel mewn rhaglennu rheolaidd, h.y. nid seilwaith fel cod, rydym wedi arfer defnyddio criw o wahanol ddosbarthiadau, pecynnau, modiwlau, grwpiau. Mae terraform yn caniatáu ichi wneud llawer yr un peth.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

  • Mae'r cod yn tyfu.
  • Mae dibyniaethau rhwng adnoddau hefyd yn tyfu.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac mae gennym ni angen mawr, mawr. Deallwn na allwn fyw fel hyn mwyach. Mae ein cod yn dod yn aruthrol. Nid yw 10-20 Kb, wrth gwrs, yn helaeth iawn, ond dim ond am y pentwr rhwydwaith yr ydym yn siarad, h.y. dim ond adnoddau rhwydwaith yr ydych wedi'u hychwanegu. Nid ydym yn sôn am Falansiwr Llwyth Cymwysiadau, clwstwr ES lleoli, Kubernetes, ac ati, lle gellir gwehyddu 100 Kb yn hawdd. Os ysgrifennwch hyn i gyd, byddwch yn dysgu'n fuan iawn bod Terraform yn darparu modiwlau Terraform.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae modiwlau terraform yn gyfluniad Terraform hunangynhwysol sy'n cael ei reoli fel grŵp. Dyna'r cyfan sydd angen i chi ei wybod am fodiwlau Terraform. Nid ydynt yn smart o gwbl, nid ydynt yn caniatáu ichi wneud unrhyw gysylltiadau cymhleth yn dibynnu ar rywbeth. Mae hyn i gyd yn disgyn ar ysgwyddau'r datblygwyr. Hynny yw, dim ond rhyw fath o gyfluniad Terraform yw hwn yr ydych eisoes wedi'i ysgrifennu. A gallwch ei alw'n grŵp yn syml.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Felly rydym yn ceisio deall sut y byddwn yn gwneud y gorau o'n 10-20-30 Kb o god. Rydym yn sylweddoli’n raddol fod angen inni ddefnyddio rhai modiwlau.

Y math cyntaf o fodiwlau y dewch ar eu traws yw modiwlau adnoddau. Nid ydynt yn deall beth yw pwrpas eich seilwaith, beth yw pwrpas eich busnes, ble a beth yw'r amodau. Dyma’r union fodiwlau yr wyf fi, ynghyd â’r gymuned ffynhonnell agored, yn eu gweinyddu, ac a gyflwynwyd gennym fel y blociau adeiladu cychwynnol iawn ar gyfer eich seilwaith.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Enghraifft o fodiwl adnoddau.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Pan fyddwn yn galw modiwl adnoddau, rydym yn nodi o ba lwybr y dylem lwytho ei gynnwys.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Rydyn ni'n nodi pa fersiwn rydyn ni am ei lawrlwytho.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Rydyn ni'n pasio criw o ddadleuon yno. Dyna i gyd. Dyna'r cyfan sydd angen i ni ei wybod pan fyddwn yn defnyddio'r modiwl hwn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae llawer o bobl yn meddwl, os ydyn nhw'n defnyddio'r fersiwn ddiweddaraf, y bydd popeth yn sefydlog. Ond na. Rhaid i’r seilwaith gael ei fersiwnio; rhaid inni ateb yn glir i ba fersiwn y defnyddiwyd hwn neu’r gydran honno.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Dyma'r cod sydd y tu mewn i'r modiwl hwn. Modiwl grŵp diogelwch. Yma mae'r sgrôl yn mynd i'r 640fed llinell. Mae creu adnodd crŵp diogelwch yn Amazon ym mhob ffurfweddiad posibl yn dasg nad yw'n ddibwys iawn. Nid yw'n ddigon creu grŵp diogelwch a dweud wrtho pa reolau i'w trosglwyddo iddo. Byddai'n syml iawn. Mae miliwn o gyfyngiadau gwahanol y tu mewn i Amazon. Er enghraifft, os ydych chi'n defnyddio Terfynbwynt VPC, rhestr rhagddodiad, APIs amrywiol ac yn ceisio cyfuno hyn i gyd â phopeth arall, yna nid yw Terraform yn caniatáu ichi wneud hyn. Ac nid yw API Amazon yn caniatáu hyn ychwaith. Felly, mae angen i ni guddio'r holl resymeg ofnadwy hon mewn modiwl a rhoi'r cod defnyddiwr sy'n edrych yn union fel hyn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Nid oes angen i'r defnyddiwr wybod sut mae'n cael ei wneud y tu mewn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae'r ail fath o fodiwlau, sy'n cynnwys modiwlau adnoddau, eisoes yn datrys problemau sy'n fwy perthnasol i'ch busnes. Yn aml mae hwn yn lle sy'n estyniad ar gyfer Terraform ac yn gosod rhai gwerthoedd anhyblyg ar gyfer tagiau, ar gyfer safonau cwmni. Gallwch hefyd ychwanegu ymarferoldeb yno nad yw Terraform yn caniatáu ichi ei ddefnyddio ar hyn o bryd. Mae hyn ar hyn o bryd. Nawr fersiwn 0.11, sydd ar fin dod yn rhywbeth o'r gorffennol. Ond o hyd, rhagbroseswyr, jsonnet, cookiecutter a llawer o bethau eraill yw'r mecanwaith ategol y mae'n rhaid ei ddefnyddio ar gyfer gwaith llawn.

Nesaf byddaf yn dangos rhai enghreifftiau o hyn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Gelwir y modiwl seilwaith yn union yr un ffordd.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Nodir y ffynhonnell o ble i lawrlwytho'r cynnwys.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae criw o werthoedd yn cael eu trosglwyddo a'u trosglwyddo i'r modiwl hwn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Nesaf, y tu mewn i'r modiwl hwn, gelwir criw o fodiwlau adnoddau i greu VPC neu Falansiwr Llwyth Cymwysiadau, neu i greu grŵp diogelwch neu ar gyfer clwstwr Gwasanaeth Cynhwysydd Elastig.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae dau fath o fodiwl. Mae hyn yn bwysig i'w ddeall oherwydd nid yw'r rhan fwyaf o'r wybodaeth yr wyf wedi'i grwpio yn yr adroddiad hwn wedi'i hysgrifennu yn y dogfennau.

Ac mae'r ddogfennaeth yn Terraform ar hyn o bryd yn eithaf problemus oherwydd ei fod yn dweud bod y nodweddion hyn, gallwch eu defnyddio. Ond nid yw hi'n dweud sut i ddefnyddio'r nodweddion hyn, pam ei bod yn well eu defnyddio. Felly, mae nifer fawr iawn o bobl yn ysgrifennu rhywbeth na allant fyw ag ef.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Gadewch i ni edrych ar sut i ysgrifennu'r modiwlau hyn nesaf. Yna byddwn yn gweld sut i'w ffonio a sut i weithio gyda'r cod.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

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

Awgrym #0 yw peidio ag ysgrifennu modiwlau adnoddau. Mae'r rhan fwyaf o'r modiwlau hyn eisoes wedi'u hysgrifennu ar eich cyfer. Fel y dywedais, maent yn ffynhonnell agored, nid ydynt yn cynnwys unrhyw un o'ch rhesymeg busnes, nid oes ganddynt werthoedd cod caled ar gyfer cyfeiriadau IP, cyfrineiriau, ac ati Mae'r modiwl yn hyblyg iawn. Ac mae'n debyg ei fod eisoes wedi'i ysgrifennu. Mae yna lawer o fodiwlau ar gyfer adnoddau o Amazon. Oddeutu 650. Ac y mae y rhan fwyaf o honynt o ansawdd da.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yn yr enghraifft hon, daeth rhywun atoch a dweud, “Rwyf am allu rheoli cronfa ddata. Creu modiwl er mwyn i mi allu creu cronfa ddata." Nid yw'r person yn gwybod manylion gweithredu naill ai Amazon neu Terraform. Mae'n dweud yn syml: "Rwyf am reoli MSSQL." Hynny yw, rydym yn golygu y bydd yn galw ein modiwl, yn pasio'r math o injan yno, ac yn nodi'r parth amser.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac ni ddylai person wybod y byddwn yn creu dau adnodd gwahanol y tu mewn i'r modiwl hwn: un ar gyfer MSSQL, yr ail ar gyfer popeth arall, dim ond oherwydd yn Terraform 0.11 ni allwch nodi gwerthoedd parth amser fel dewisol.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac ar yr allanfa o'r modiwl hwn, bydd person yn gallu derbyn cyfeiriad yn unig. Ni fydd yn gwybod o ba gronfa ddata, o ba adnodd yr ydym yn creu hyn i gyd yn fewnol. Mae hon yn elfen bwysig iawn o guddio. Ac mae hyn yn berthnasol nid yn unig i'r modiwlau hynny sy'n gyhoeddus mewn ffynhonnell agored, ond hefyd i'r modiwlau hynny y byddwch yn eu hysgrifennu o fewn eich prosiectau a'ch timau.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Dyma'r ail ddadl, sy'n eithaf pwysig os ydych chi wedi bod yn defnyddio Terraform ers tro. Mae gennych chi storfa lle rydych chi'n gosod eich holl fodiwlau Terraform ar gyfer eich cwmni. Ac mae'n eithaf normal dros amser y bydd y prosiect hwn yn tyfu i faint o un neu ddau megabeit. Mae hyn yn iawn.

Ond y broblem yw sut mae Terraform yn galw'r modiwlau hyn. Er enghraifft, os byddwch chi'n galw modiwl i greu pob defnyddiwr unigol, bydd Terraform yn llwytho'r ystorfa gyfan yn gyntaf ac yna'n llywio i'r ffolder lle mae'r modiwl penodol hwnnw wedi'i leoli. Fel hyn byddwch yn lawrlwytho un megabeit bob tro. Os ydych chi'n rheoli 100 neu 200 o ddefnyddwyr, yna byddwch chi'n lawrlwytho 100 neu 200 megabeit, ac yna'n mynd i'r ffolder honno. Felly yn naturiol nid ydych am lawrlwytho criw o bethau bob tro y byddwch yn taro "Terraform init".

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Mae dau ateb i'r broblem hon. Y cyntaf yw defnyddio llwybrau cymharol. Fel hyn rydych chi'n nodi yn y cod bod y ffolder yn lleol (./). A chyn i chi lansio unrhyw beth, rydych chi'n gwneud clôn Git o'r ystorfa hon yn lleol. Fel hyn rydych chi'n ei wneud unwaith.

Mae yna lawer o anfanteision, wrth gwrs. Er enghraifft, ni allwch ddefnyddio fersiynau. Ac mae hyn weithiau'n anodd byw ag ef.

Ail ateb. Os oes gennych lawer o is-fodiwlau a bod gennych ryw fath o biblinell sefydledig eisoes, yna mae'r prosiect MBT, sy'n eich galluogi i gasglu llawer o wahanol becynnau o unstorfa a'u huwchlwytho i S3. Mae hon yn ffordd dda iawn. Felly, bydd y ffeil iam-user-1.0.0.zip yn pwyso dim ond 1 Kb, oherwydd bod y cod i greu'r adnodd hwn yn fach iawn. A bydd yn gweithio'n llawer cyflymach.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Gadewch i ni siarad am yr hyn na ellir ei ddefnyddio mewn modiwlau.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Pam mae hyn yn ddrwg mewn modiwlau? Y peth gwaethaf yw tybio defnyddiwr. Tybiwch fod defnyddiwr yn opsiwn dilysu darparwr y gellir ei ddefnyddio gan wahanol bobl. Er enghraifft, byddwn i gyd yn cymathu'r rôl. Mae hyn yn golygu y bydd Terraform yn cymryd y rôl hon. Ac yna gyda'r rôl hon bydd yn cyflawni gweithredoedd eraill.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A'r drwg yw, os yw Vasya yn hoffi cysylltu ag Amazon mewn un ffordd, er enghraifft, gan ddefnyddio'r newidyn amgylchedd rhagosodedig, a bod Petya yn hoffi defnyddio ei allwedd a rennir, sydd ganddo mewn lle cyfrinachol, yna ni allwch nodi'r ddau yn terraform. Ac fel nad ydynt yn profi dioddefaint, nid oes angen nodi'r bloc hwn yn y modiwl. Rhaid nodi hyn ar lefel uwch. Hynny yw, mae gennym fodiwl adnoddau, modiwl seilwaith a chyfansoddiad ar ei ben. A dylid nodi hyn yn rhywle uwch.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yr ail ddrwg yw y darparydd. Yma nid yw'r drwg mor ddibwys, oherwydd os ydych chi'n ysgrifennu cod ac mae'n gweithio i chi, yna efallai y byddwch chi'n meddwl, os yw'n gweithio, yna pam ei newid.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Y drwg yw nad ydych chi bob amser yn rheoli pryd y bydd y darparwr hwn yn cael ei lansio, yn gyntaf. Ac yn ail, nid ydych chi'n rheoli'r hyn y mae aws ec2 yn ei olygu, h.y. ydyn ni'n siarad am Linux neu Windows nawr. Felly ni allwch ysgrifennu rhywbeth a fydd yn gweithio yr un peth ar wahanol systemau gweithredu neu ar gyfer achosion defnyddwyr gwahanol.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yr enghraifft fwyaf cyffredin, sydd hefyd wedi'i nodi yn y ddogfennaeth swyddogol, yw, os byddwch chi'n ysgrifennu aws_instance ac yn nodi criw o ddadleuon, yna nid oes dim o'i le ar hynny os byddwch chi'n nodi'r darparwr “local-exec” yno ac yn rhedeg eich ansible- llyfr chwarae.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A dweud y gwir, oes, nid oes dim o'i le ar hynny. Ond yn llythrennol yn fuan byddwch yn sylweddoli nad yw'r peth gweithrediaeth leol hwn yn bodoli, er enghraifft, yn launch_configuration.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A phan fyddwch chi'n defnyddio launch_configuration, a'ch bod chi am greu grŵp graddio awtomatig o un achos, yna yn launch_configuration nid oes unrhyw gysyniad o “darparwr”. Ceir cysyniad “data defnyddiwr”.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Felly, ateb mwy cyffredinol yw defnyddio data defnyddwyr. A bydd yn cael ei lansio naill ai ar yr enghraifft ei hun, pan fydd yr enghraifft yn cael ei droi ymlaen, neu yn yr un data defnyddiwr, pan fydd y grŵp awtoraddio yn defnyddio'r launch_configuration hwn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Os ydych chi eisiau rhedeg y darparwr o hyd, oherwydd ei fod yn gydran gludo, pan fydd un adnodd yn cael ei greu, ar y foment honno mae angen i chi redeg eich darparwr, eich gorchymyn. Mae yna lawer o sefyllfaoedd o'r fath.

A'r adnodd mwyaf cywir ar gyfer hyn yw null_resource. Mae null_resource yn adnodd ffug nad yw byth yn cael ei greu mewn gwirionedd. Nid yw'n cyffwrdd ag unrhyw beth, dim API, dim graddio'n awtomatig. Ond mae'n caniatáu ichi reoli pryd i redeg y gorchymyn. Yn yr achos hwn, mae'r gorchymyn yn cael ei redeg yn ystod y creu.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

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

Mae yna nifer o arwyddion. Nid af i mewn i'r holl arwyddion yn fanwl iawn. Mae erthygl am hyn. Ond os ydych chi wedi gweithio gyda Terraform neu wedi defnyddio modiwlau pobl eraill, yna rydych chi wedi sylwi'n aml bod llawer o fodiwlau, fel y rhan fwyaf o'r cod ffynhonnell agored, yn cael eu hysgrifennu gan bobl ar gyfer eu hanghenion eu hunain. Ysgrifennodd dyn a datrys ei broblem. Fe wnes i ei sownd yn GitHub, gadewch iddo fyw. Bydd yn fyw, ond os nad oes dogfennaeth ac enghreifftiau yno, yna ni fydd neb yn ei ddefnyddio. Ac os nad oes unrhyw ymarferoldeb sy'n eich galluogi i ddatrys ychydig yn fwy na'i dasg benodol, yna ni fydd unrhyw un yn ei ddefnyddio ychwaith. Mae cymaint o ffyrdd i golli defnyddwyr.

Os ydych chi am ysgrifennu rhywbeth fel y bydd pobl yn ei ddefnyddio, yna rwy'n argymell dilyn yr arwyddion hyn.

Dyma yw:

  • Dogfennaeth ac enghreifftiau.
  • Ymarferoldeb llawn.
  • Rhagosodiadau rhesymol.
  • Cod glân.
  • Profion.

Mae profion yn sefyllfa wahanol oherwydd eu bod yn eithaf anodd eu hysgrifennu. Rwy'n credu mwy mewn dogfennaeth ac enghreifftiau.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Felly, buom yn edrych ar sut i ysgrifennu modiwlau. Mae dwy ddadl. Y cyntaf, sef y pwysicaf, yw peidio ag ysgrifennu os gallwch chi, oherwydd mae criw o bobl eisoes wedi gwneud y tasgau hyn o'ch blaen. Ac yn ail, os ydych chi'n dal i benderfynu, yna ceisiwch beidio â defnyddio darparwyr mewn modiwlau a darparwyr.

Dyma ran lwyd y ddogfennaeth. Efallai eich bod chi nawr yn meddwl: “Mae rhywbeth yn aneglur. Ddim yn argyhoeddedig." Ond cawn weld ymhen chwe mis.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Nawr, gadewch i ni siarad am sut i alw'r modiwlau hyn.

Rydym yn deall bod ein cod yn tyfu dros amser. Nid oes gennym un ffeil bellach, mae gennym eisoes 20 ffeil. Maent i gyd mewn un ffolder. Neu efallai mewn pum ffolder. Efallai ein bod ni rywsut yn dechrau eu torri i lawr fesul rhanbarth, fesul rhai cydrannau. Yna rydyn ni'n deall bod gennym ni nawr rai elfennau o gydamseru ac offeryniaeth. Hynny yw, rhaid inni ddeall beth ddylem ni ei wneud pe baem yn newid adnoddau rhwydwaith, beth ddylem ni ei wneud gyda gweddill ein hadnoddau, sut i achosi'r dibyniaethau hyn, ac ati.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae dau eithaf. Mae'r eithaf cyntaf i gyd yn un. Mae gennym un ffeil meistr. Am y tro, dyma oedd yr arfer gorau swyddogol ar wefan Terraform.

Ond yn awr y mae yn cael ei ysgrifenu fel wedi ei anghymeradwyo a'i ddileu. Dros amser, sylweddolodd cymuned Terraform fod hyn ymhell o fod yn arfer gorau, oherwydd dechreuodd pobl ddefnyddio'r prosiect mewn gwahanol ffyrdd. Ac mae yna broblemau. Er enghraifft, pan fyddwn yn rhestru pob dibyniaeth mewn un lle. Mae yna sefyllfaoedd pan fyddwn yn clicio ar “Cynllun Terraform” a nes bod Terraform yn diweddaru cyflwr yr holl adnoddau, gall llawer o amser fynd heibio.

Mae llawer o amser, er enghraifft, yn 5 munud. I rai mae hyn yn llawer o amser. Rwyf wedi gweld achosion lle cymerodd 15 munud. Treuliodd API AWS 15 munud yn ceisio darganfod beth oedd yn digwydd gyda chyflwr pob adnodd. Mae hwn yn faes mawr iawn.

Ac, yn naturiol, bydd problem gysylltiedig yn ymddangos pan fyddwch chi eisiau newid rhywbeth mewn un lle, yna byddwch chi'n aros 15 munud, ac mae'n rhoi cynfas o rai newidiadau i chi. Fe wnaethoch chi boeri, ysgrifennu “Ie”, ac aeth rhywbeth o'i le. Mae hon yn enghraifft wirioneddol. Nid yw Terraform yn ceisio eich gwarchod rhag problemau. Hynny yw, ysgrifennwch beth rydych chi ei eisiau. Bydd problemau - eich problemau. Er nad yw Terraform 0.11 yn ceisio eich helpu mewn unrhyw ffordd. Mae yna rai lleoedd diddorol yn 0.12 sy'n caniatáu ichi ddweud: “Vasya, rydych chi wir eisiau hyn, a allwch chi ddod i'ch synhwyrau?”

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yr ail ffordd yw lleihau'r ardal hon, hynny yw, gall galwadau o un lle fod yn llai cysylltiedig o le arall.

Yr unig broblem yw bod angen i chi ysgrifennu mwy o god, h.y. mae angen i chi ddisgrifio newidynnau mewn nifer fawr o ffeiliau a diweddaru hyn. Nid yw rhai pobl yn ei hoffi. Mae hyn yn normal i mi. Ac mae rhai pobl yn meddwl: “Pam ysgrifennu hwn mewn gwahanol leoedd, byddaf yn rhoi’r cyfan mewn un lle.” Mae hyn yn bosibl, ond dyma'r ail begwn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Pwy sydd â hyn i gyd yn byw mewn un lle? Un, dau, tri o bobl, hynny yw, mae rhywun yn ei ddefnyddio.

A phwy sy'n galw un gydran benodol, un bloc neu un modiwl seilwaith? Pump i saith o bobl. Mae hyn yn cŵl.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yr ateb mwyaf cyffredin yw rhywle yn y canol. Os yw'r prosiect yn fawr, yna yn aml bydd gennych sefyllfa lle nad oes unrhyw ateb yn addas ac nad yw popeth yn gweithio allan yna, felly byddwch chi'n cael cymysgedd yn y pen draw. Nid oes dim o'i le ar hyn, cyn belled â'ch bod yn deall bod gan y ddau fanteision.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Pe bai rhywbeth yn newid yn y pentwr VPC a'ch bod am gymhwyso'r newidiadau hyn i EC2, h.y. roeddech am ddiweddaru'r grŵp graddio awtomatig oherwydd bod gennych is-rwydwaith newydd, yna galwaf y math hwn o offeryniaeth dibyniaeth. Mae rhai atebion: pwy sy'n defnyddio beth?

Gallaf awgrymu pa atebion sydd ar gael. Gallwch ddefnyddio Terraform i wneud y hud, neu gallwch ddefnyddio makefiles i ddefnyddio Terraform. A gweld a oes rhywbeth wedi newid yno, gallwch chi ei lansio yma.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Sut ydych chi'n hoffi'r penderfyniad hwn? A oes unrhyw un yn credu bod hwn yn ateb cŵl? Rwy'n gweld gwên, mae'n debyg bod amheuon wedi dod i mewn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Wrth gwrs, peidiwch â rhoi cynnig ar hyn gartref. Ni chynlluniwyd Terraform erioed i gael ei redeg o Terraform.

Mewn un adroddiad dywedon nhw wrthyf: “Na, ni fydd hyn yn gweithio.” Y pwynt yw na ddylai weithio. Er ei fod yn edrych mor drawiadol pan allwch chi lansio Terraform o Terraform, ac yna Terraform, ni ddylech wneud hynny. Dylai terraform ddechrau'n hawdd iawn bob amser.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

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

Os oes angen offeryniaeth galwadau arnoch pan fydd rhywbeth wedi newid mewn un lle, yna mae Terragrunt.

Mae Terragrunt yn gyfleustodau, ychwanegiad i Terraform, sy'n eich galluogi i gydlynu a threfnu galwadau i fodiwlau seilwaith.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae ffeil ffurfweddu Terraform nodweddiadol yn edrych fel hyn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Rydych chi'n nodi pa fodiwl penodol rydych chi am ei alw.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Pa ddibyniaethau sydd gan y modiwl?

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A pha ddadleuon y mae'r modiwl hwn yn eu derbyn. Dyna'r cyfan sydd i'w wybod am Terragrunt.

Mae'r ddogfennaeth yno, ac mae 1 o sêr ar GitHub. Ond yn y rhan fwyaf o achosion dyma beth sydd angen i chi ei wybod. Ac mae hyn yn hawdd iawn i'w weithredu mewn cwmnïau sydd newydd ddechrau gweithio gyda Terraform.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Felly cerddoriaeth yn Terragrunt. Mae opsiynau eraill.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Nawr, gadewch i ni siarad am sut i weithio gyda'r cod.

Os oes angen i chi ychwanegu nodweddion newydd at eich cod, yn y rhan fwyaf o achosion mae hyn yn hawdd. Rydych chi'n ysgrifennu adnodd newydd, mae popeth yn syml.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Os oes gennych chi ryw adnodd y gwnaethoch chi ei greu ymlaen llaw, er enghraifft, fe wnaethoch chi ddysgu am Terraform ar ôl i chi agor cyfrif AWS ac eisiau defnyddio'r adnoddau sydd gennych chi eisoes, yna byddai'n briodol ymestyn eich modiwl fel hyn, fel bod mae'n cefnogi'r defnydd o adnoddau presennol.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac wedi cefnogi creu adnoddau newydd gan ddefnyddio'r adnodd bloc.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ar allbwn rydym bob amser yn dychwelyd id allbwn yn dibynnu ar yr hyn a ddefnyddiwyd.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yr ail broblem sylweddol iawn yn Terraform 0.11 yw gweithio gyda rhestrau.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yr anhawster yw os oes gennym restr o'r fath o ddefnyddwyr.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

A phan fyddwn yn creu'r defnyddwyr hyn gan ddefnyddio adnodd bloc, yna mae popeth yn mynd yn iawn. Rydyn ni'n mynd trwy'r rhestr gyfan, gan greu ffeil ar gyfer pob un. Mae popeth yn iawn. Ac yna, er enghraifft, dylid tynnu defnyddiwr3, sydd yn y canol, oddi yma, yna bydd yr holl adnoddau a grëwyd ar ei ôl yn cael eu hail-greu oherwydd bydd y mynegai yn newid.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Gweithio gyda rhestrau mewn amgylchedd urddasol. Beth yw amgylchedd gwladol? Dyma'r sefyllfa lle mae gwerth newydd yn cael ei greu pan fydd yr adnodd hwn yn cael ei greu. Er enghraifft, Allwedd Mynediad AWS neu Allwedd Gyfrinachol AWS, h.y. pan fyddwn yn creu defnyddiwr, rydym yn derbyn Allwedd Fynediad neu Gyfrinach newydd. A phob tro y byddwn yn dileu defnyddiwr, bydd gan y defnyddiwr hwn allwedd newydd. Ond nid feng shui yw hyn, oherwydd ni fydd y defnyddiwr eisiau bod yn ffrindiau gyda ni os ydym yn creu defnyddiwr newydd iddo bob tro y bydd rhywun yn gadael y tîm.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Dyma'r ateb. Mae hwn yn god a ysgrifennwyd yn Jsonnet. Mae Jsonnet yn iaith dempled o Google.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae'r gorchymyn hwn yn caniatáu ichi dderbyn y templed hwn ac fel allbwn mae'n dychwelyd ffeil json a wneir yn ôl eich templed.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae'r templed yn edrych fel hyn.

Mae Terraform yn caniatáu ichi weithio gyda HCL a Json yn yr un modd, felly os oes gennych chi'r gallu i gynhyrchu Json, yna gallwch chi ei lithro i Terraform. Bydd y ffeil gyda'r estyniad .tf.json yn cael ei lawrlwytho'n llwyddiannus.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac yna rydym yn gweithio gydag ef fel arfer: terraform init, terramorm yn berthnasol. Ac rydym yn creu dau ddefnyddiwr.

Nawr nid ydym yn ofni os bydd rhywun yn gadael y tîm. Byddwn yn golygu'r ffeil json yn unig. Gadawodd Vasya Pupkin, arhosodd Petya Pyatochkin. Ni fydd Petya Pyatochkin yn derbyn allwedd newydd.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Nid gwaith Terraform yw integreiddio Terraform ag offer eraill mewn gwirionedd. Cafodd Terraform ei greu fel llwyfan ar gyfer creu adnoddau a dyna ni. Ac nid yw popeth sy'n codi'n ddiweddarach yn bryder i Terraform. Ac nid oes angen ei wehyddu i mewn yno. Mae yna Ansible, sy'n gwneud popeth sydd ei angen arnoch chi.

Ond mae sefyllfaoedd yn codi pan fyddwn am ymestyn Terraform a galw rhywfaint o orchymyn ar ôl i rywbeth ddod i ben.

Ffordd gyntaf. Rydyn ni'n creu allbwn lle rydyn ni'n ysgrifennu'r gorchymyn hwn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ac yna rydym yn galw'r gorchymyn hwn o'r allbwn terraform cragen ac yn nodi'r gwerth yr ydym ei eisiau. Felly, gweithredir y gorchymyn gyda'r holl werthoedd a amnewidiwyd. Mae'n gyfforddus iawn.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ail ffordd. Dyma'r defnydd o null_resource yn dibynnu ar newidiadau yn ein seilwaith. Gallwn alw'r un local-exe cyn gynted ag y bydd ID rhai adnoddau yn newid.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Yn naturiol, mae hyn i gyd yn llyfn ar bapur, oherwydd mae gan Amazon, fel pob darparwr cyhoeddus arall, griw o'i achosion ymyl ei hun.

Yr achos ymyl mwyaf cyffredin yw pan fyddwch chi'n agor cyfrif AWS, mae'n bwysig pa ranbarthau rydych chi'n eu defnyddio; a yw'r nodwedd hon wedi'i galluogi yno; efallai ichi ei agor ar ôl Rhagfyr 2013; efallai eich bod yn defnyddio diofyn yn VPC ac ati. Mae yna lawer o gyfyngiadau. A gwasgarodd Amazon nhw trwy gydol y ddogfennaeth.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae yna ychydig o bethau yr wyf yn argymell eu hosgoi.

I ddechrau, osgoi pob dadl nad yw'n gyfrinachol y tu mewn i'r cynllun Terraform neu Terraform CLI. Gellir rhoi hyn i gyd naill ai mewn ffeil tfvars neu mewn newidyn amgylchedd.

Ond nid oes angen i chi gofio'r gorchymyn hud cyfan hwn. Cynllun terraform – var a ffwrdd a ni. Y newidyn cyntaf yw var, yr ail newidyn yw var, y trydydd, y pedwerydd. Yr egwyddor bwysicaf o ran seilwaith fel cod yr wyf yn ei defnyddio amlaf yw mai dim ond drwy edrych ar y cod y dylai fod gennyf ddealltwriaeth glir o'r hyn a ddefnyddir yno, ym mha gyflwr a chyda pha werthoedd. Ac felly does dim rhaid i mi ddarllen y ddogfennaeth na gofyn i Vasya pa baramedrau a ddefnyddiodd i greu ein clwstwr. Mae angen i mi agor ffeil gyda'r estyniad tfvars, sy'n aml yn cyd-fynd â'r amgylchedd, ac edrych ar bopeth yno.

Hefyd, peidiwch â defnyddio dadleuon targed i leihau'r cwmpas. Ar gyfer hyn mae'n llawer haws defnyddio modiwlau seilwaith bach.

Hefyd, nid oes angen cyfyngu a chynyddu paraleliaeth. Os oes gen i 150 o adnoddau ac rydw i eisiau cynyddu paraleliaeth Amazon o'r 10 rhagosodedig i 100, yna mae'n debyg y bydd rhywbeth yn mynd o'i le. Neu efallai ei fod yn mynd yn dda nawr, ond pan fydd Amazon yn dweud eich bod chi'n gwneud gormod o alwadau, byddwch chi mewn trafferth.

Bydd Terraform yn ceisio ailgychwyn y rhan fwyaf o'r problemau hyn, ond ni fyddwch yn cyflawni bron dim. Mae Parallelism=1 yn beth pwysig i'w ddefnyddio os byddwch chi'n baglu ar ryw fyg y tu mewn i'r API AWS neu y tu mewn i'r darparwr Terraform. Ac yna mae angen i chi nodi: parallelism = 1 ac aros nes bydd Terraform yn gorffen un alwad, yna'r ail, yna'r trydydd. Bydd yn eu lansio fesul un.

Mae pobl yn aml yn gofyn i mi, “Pam ydw i'n meddwl bod mannau gwaith Terraform yn ddrwg?” Rwy'n credu mai egwyddor seilwaith fel cod yw gweld pa seilwaith sydd wedi'i greu a pha werthoedd.

Ni chrëwyd mannau gwaith gan ddefnyddwyr. Nid yw hyn yn golygu bod defnyddwyr wedi ysgrifennu mewn materion GitHub na allwn fyw heb fannau gwaith Terraform. Na ddim fel hyn. Mae Terraform Enterprise yn ateb masnachol. Penderfynodd Terraform o HashiCorp fod angen mannau gwaith arnom, felly fe wnaethon ni ei ffeilio. Rwy'n ei chael hi'n llawer haws ei roi mewn ffolder ar wahân. Yna bydd ychydig mwy o ffeiliau, ond bydd yn gliriach.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Sut i weithio gyda'r cod? Mewn gwirionedd, gweithio gyda rhestrau yw'r unig boen. A chymerwch Terraform yn haws. Nid dyma'r peth a fydd yn gwneud popeth yn wych i chi. Nid oes angen gwthio popeth sydd wedi'i ysgrifennu yn y ddogfennaeth yno.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ysgrifennwyd pwnc yr adroddiad “ar gyfer y dyfodol.” Siaradaf am hyn yn fyr iawn. Ar gyfer y dyfodol, mae hyn yn golygu y bydd 0.12 yn cael ei ryddhau yn fuan.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Mae 0.12 yn dunnell o stwff newydd. Os ydych chi'n dod o raglennu rheolaidd, yna rydych chi'n colli pob math o flociau deinamig, dolenni, gweithrediadau cymharu cywir ac amodol, lle nad yw'r ochr chwith a dde yn cael eu cyfrifo ar yr un pryd, ond yn dibynnu ar y sefyllfa. Rydych chi'n ei golli'n fawr, felly bydd 0.12 yn ei ddatrys i chi.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Ond! Os ydych chi'n ysgrifennu'n llai ac yn fwy syml, gan ddefnyddio modiwlau parod a datrysiadau trydydd parti, yna ni fydd yn rhaid i chi aros a gobeithio y bydd 0.12 yn dod i drwsio popeth i chi.

Disgrifiad o seilwaith yn Terraform ar gyfer y dyfodol. Anton Babenko (2018)

Diolch am yr adroddiad! Soniasoch am seilwaith fel cod a dywedasoch yn llythrennol un gair am brofion. A oes angen profion mewn modiwlau? Cyfrifoldeb pwy yw hwn? Oes angen i mi ei ysgrifennu fy hun neu ai cyfrifoldeb y modiwlau ydyw?

Bydd y flwyddyn nesaf yn cael ei llenwi ag adroddiadau ein bod wedi penderfynu profi popeth. Beth i'w brofi yw'r cwestiwn mwyaf. Mae yna lawer o ddibyniaethau, llawer o gyfyngiadau gan wahanol ddarparwyr. Pan fyddwch chi a minnau'n siarad ac rydych chi'n dweud: “Mae angen profion arnaf,” yna gofynnaf: “Beth fyddwch chi'n ei brofi?” Rydych yn dweud y byddwch yn profi yn eich rhanbarth. Yna dywedaf nad yw hyn yn gweithio yn fy rhanbarth i. Hynny yw, ni fyddwn hyd yn oed yn gallu cytuno ar hyn. Heb sôn am fod yna lawer o broblemau technegol. Hynny yw, sut i ysgrifennu'r profion hyn fel eu bod yn ddigonol.

Rwyf wrthi’n ymchwilio i’r pwnc hwn, h.y. sut i gynhyrchu profion yn awtomatig yn seiliedig ar y seilwaith a ysgrifennwyd gennych. Hynny yw, os gwnaethoch chi ysgrifennu'r cod hwn, yna mae angen i mi ei redeg, yn seiliedig ar hyn gallaf greu profion.

Terasest yw un o'r llyfrgelloedd a grybwyllir amlaf sy'n eich galluogi i ysgrifennu profion integreiddio ar gyfer Terraform. Dyma un o'r cyfleustodau. Mae'n well gen i'r math DSL, er enghraifft, rspec.

Anton, diolch am yr adroddiad! Fy enw i yw Valery. Gadewch imi ofyn ychydig o gwestiwn athronyddol. Mae yna ddarpariaeth, yn amodol, mae yna ddefnydd. Mae darpariaeth yn creu fy seilwaith, wrth ei ddefnyddio rydym yn ei lenwi â rhywbeth defnyddiol, er enghraifft, gweinyddwyr, cymwysiadau, ac ati. Ac mae yn fy mhen bod Terraform yn fwy ar gyfer darparu, ac Ansible yn fwy ar gyfer defnydd, oherwydd mae Ansible hefyd ar gyfer ffisegol Y seilwaith yn eich galluogi i osod nginx, Postgres. Ond ar yr un pryd, mae'n ymddangos bod Ansible yn caniatáu darparu, er enghraifft, adnoddau Amazon neu Google. Ond mae Terraform hefyd yn caniatáu ichi ddefnyddio rhai meddalwedd gan ddefnyddio ei fodiwlau. O’ch safbwynt chi, a oes rhyw fath o ffin sy’n rhedeg rhwng Terraform ac Ansible, ble a beth sy’n well i’w ddefnyddio? Neu, er enghraifft, a ydych chi'n meddwl bod Ansible eisoes yn sothach, dylech geisio defnyddio Terraform ar gyfer popeth?

Cwestiwn da, Valery. Credaf nad yw Terraform wedi newid o ran diben ers 2014. Cafodd ei greu ar gyfer seilwaith a bu farw ar gyfer seilwaith. Roedd gennym ni, a bydd angen, am reolaeth cyfluniad Ansible. Yr her yw bod data defnyddwyr y tu mewn i launch_configuration. Ac yno rydych chi'n tynnu Ansible, ac ati. Dyma'r gwahaniaeth safonol yr wyf yn ei hoffi orau.

Os ydym yn sôn am seilwaith hardd, yna mae yna gyfleustodau fel Packer sy'n casglu'r ddelwedd hon. Ac yna mae Terraform yn defnyddio'r ffynhonnell ddata i ddod o hyd i'r ddelwedd hon a diweddaru ei launch_configuration. Hynny yw, yn y modd hwn y gweill yw ein bod yn tynnu Tracker yn gyntaf, yna tynnu Terraform. Ac os bydd adeiladu'n digwydd, yna mae newid newydd yn digwydd.

Helo! Diolch am yr adroddiad! Fy enw i yw Misha, cwmni RBS. Gallwch ffonio Ansible trwy'r darparwr wrth greu adnodd. Mae gan Ansible hefyd bwnc o'r enw rhestr ddynamig. A gallwch chi ffonio Terraform yn gyntaf, ac yna ffoniwch Ansible, a fydd yn cymryd adnoddau o'r wladwriaeth a'i weithredu. Beth sy'n well?

Mae pobl yn defnyddio'r ddau gyda llwyddiant cyfartal. Mae'n ymddangos i mi fod rhestr ddeinamig yn Ansible yn beth cyfleus, os nad ydym yn sôn am grŵp graddio awtomatig. Oherwydd yn y grŵp graddio awtomatig mae gennym ein pecyn cymorth ein hunain yn barod, a elwir yn launch_configuration. Yn launch_configuration rydym yn cofnodi popeth sydd angen ei lansio pan fyddwn yn creu adnodd newydd. Felly, gydag Amazon, mae defnyddio rhestr ddeinamig a darllen ffeil Terraform ts, yn fy marn i, yn orlawn. Ac os ydych chi'n defnyddio offer eraill lle nad oes cysyniad o “grŵp awtomatig”, er enghraifft, rydych chi'n defnyddio DigitalOcean neu ryw ddarparwr arall lle nad oes grŵp graddio awtomatig, yna bydd yn rhaid i chi dynnu'r API â llaw, dod o hyd i gyfeiriadau IP, creu ffeil rhestr ddeinamig , a bydd Ansible eisoes yn crwydro drwyddi. Hynny yw, ar gyfer Amazon mae launch_configuration, ac ar gyfer popeth arall mae rhestr ddeinamig.

Ffynhonnell: hab.com

Ychwanegu sylw