Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ọpọlọpọ eniyan mọ ati lo Terraform ninu iṣẹ ojoojumọ wọn, ṣugbọn awọn iṣe ti o dara julọ fun rẹ ko tii ṣe agbekalẹ. Ẹgbẹ kọọkan ni lati ṣẹda awọn ọna ati awọn ọna tirẹ.

Awọn amayederun rẹ fẹrẹ bẹrẹ ni irọrun: awọn orisun diẹ + awọn olupilẹṣẹ diẹ. Lori akoko, o gbooro ni gbogbo iru awọn itọnisọna. Ṣe o wa awọn ọna lati ṣe akojọpọ awọn orisun sinu awọn modulu Terraform, ṣeto koodu sinu awọn folda, ati kini ohun miiran le ṣee ṣe aṣiṣe? (awọn ọrọ ikẹhin olokiki)

Akoko kọja ati pe o lero bi awọn amayederun rẹ jẹ ohun ọsin tuntun rẹ, ṣugbọn kilode? O ṣe aniyan nipa awọn iyipada ti ko ṣe alaye ninu awọn amayederun, o bẹru lati fi ọwọ kan awọn amayederun ati koodu - bi abajade, o ṣe idaduro iṣẹ ṣiṣe tuntun tabi dinku didara…

Lẹhin ọdun mẹta ti iṣakoso akojọpọ awọn modulu agbegbe Terraform fun AWS lori Github ati itọju igba pipẹ ti Terraform ni iṣelọpọ, Anton Babenko ti ṣetan lati pin iriri rẹ: bi o ṣe le kọ awọn modulu TF ki o ko ni ipalara ni ojo iwaju.

Ni ipari ọrọ naa, awọn olukopa yoo mọ diẹ sii pẹlu awọn ilana iṣakoso awọn orisun ni Terraform, awọn iṣe ti o dara julọ ti o ni nkan ṣe pẹlu awọn modulu ni Terraform, ati diẹ ninu awọn ipilẹ isọdọkan ti nlọ lọwọ ti o ni nkan ṣe pẹlu iṣakoso amayederun.

be: Mo ṣe akiyesi pe ijabọ yii jẹ ọjọ Kọkànlá Oṣù 2018-ọdun 2 ti kọja tẹlẹ. Ẹya ti Terraform 0.11 ti a jiroro ninu ijabọ ko ni atilẹyin mọ. Ni awọn ọdun 2 sẹhin, awọn idasilẹ tuntun 2 ti tu silẹ, eyiti o ni ọpọlọpọ awọn imotuntun, awọn ilọsiwaju ati awọn iyipada. Jọwọ san ifojusi si eyi ki o ṣayẹwo awọn iwe-ipamọ naa.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Awọn ọna asopọ:

Orukọ mi ni Anton Babenko. Diẹ ninu yin jasi lo koodu ti mo ko. Emi yoo sọ nipa eyi pẹlu igboya diẹ sii ju igbagbogbo lọ, nitori Mo ni aaye si awọn iṣiro.

Mo ṣiṣẹ lori Terraform ati pe Mo ti jẹ alabaṣe ti nṣiṣe lọwọ ati oluranlọwọ si nọmba nla ti awọn iṣẹ akanṣe orisun ṣiṣi ti o ni ibatan si Terraform ati Amazon lati ọdun 2015.

Lati igbanna Mo ti kọ koodu to lati fi sii ni ọna ti o nifẹ. Emi yoo gbiyanju lati sọ fun ọ nipa eyi ni bayi.

Emi yoo sọrọ nipa awọn intricacies ati awọn pato ti ṣiṣẹ pẹlu Terraform. Ṣugbọn iyẹn kii ṣe koko-ọrọ ti HighLoad gaan. Ati nisisiyi iwọ yoo loye idi.

Ni akoko pupọ, Mo bẹrẹ kikọ awọn modulu Terraform. Awọn olumulo kọ awọn ibeere, Mo tun wọn kọ. Lẹhinna Mo kowe ọpọlọpọ awọn ohun elo lati ṣe ọna kika koodu naa nipa lilo kio ti iṣaaju-ifaramọ, ati bẹbẹ lọ.

Nibẹ wà ọpọlọpọ awon ise agbese. Mo fẹran iran koodu nitori Mo fẹran kọnputa lati ṣe iṣẹ siwaju ati siwaju sii fun mi ati olupilẹṣẹ, nitorinaa Mo n ṣiṣẹ lọwọlọwọ lori olupilẹṣẹ koodu Terraform lati awọn aworan wiwo. Boya diẹ ninu awọn ti o ti ri wọn. Iwọnyi jẹ awọn apoti ẹlẹwa pẹlu awọn ọfa. Ati pe Mo ro pe o jẹ nla ti o ba le tẹ bọtini "Export" ati gba gbogbo rẹ gẹgẹbi koodu.

Mo wa lati Ukraine. Mo ti gbé ni Norway fun opolopo odun.

Pẹlupẹlu, alaye fun ijabọ yii ni a gba lati ọdọ awọn eniyan ti o mọ orukọ mi ti wọn rii mi lori awọn nẹtiwọọki awujọ. Mo fẹrẹẹ nigbagbogbo ni orukọ apeso kanna.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

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

Gẹgẹbi Mo ti sọ, Emi ni olutọju akọkọ ti awọn modulu Terraform AWS, eyiti o jẹ ọkan ninu awọn ibi ipamọ ti o tobi julọ lori GitHub nibiti a ti gbalejo awọn modulu fun awọn iṣẹ ṣiṣe ti o wọpọ julọ: VPC, Autoscaling, RDS.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe ohun ti o gbọ ni bayi jẹ ipilẹ julọ. Ti o ba ṣiyemeji pe o loye kini Terraform jẹ, lẹhinna o dara lati lo akoko rẹ ni ibomiiran. Awọn ofin imọ-ẹrọ pupọ yoo wa nibi. Ati pe Emi ko ṣiyemeji lati kede ipele ti ijabọ naa pe o ga julọ. Eyi tumọ si pe MO le sọrọ nipa lilo gbogbo awọn ofin ti o ṣeeṣe laisi alaye pupọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Terraform han ni ọdun 2014 gẹgẹbi ohun elo ti o fun ọ laaye lati kọ, gbero ati ṣakoso awọn amayederun bi koodu. Erongba bọtini nibi ni “awọn amayederun bi koodu.”

Gbogbo awọn iwe aṣẹ, bi Mo ti sọ, ti kọ sinu terraform.io. Mo nireti pe ọpọlọpọ eniyan mọ nipa aaye yii ati pe wọn ti ka iwe naa. Ti o ba jẹ bẹ, lẹhinna o wa ni aye to tọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Eyi ni ohun ti faili iṣeto Terraform deede kan dabi, nibiti a ti kọkọ ṣalaye diẹ ninu awọn oniyipada.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ni idi eyi a setumo "aws_region".

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Lẹhinna a ṣe apejuwe kini awọn orisun ti a fẹ ṣẹda.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

A nṣiṣẹ diẹ ninu awọn aṣẹ, ni pato “terraform init” lati le gbe awọn igbẹkẹle ati awọn olupese ṣiṣẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe a ṣiṣẹ aṣẹ “terraform waye” lati ṣayẹwo boya iṣeto ti a sọ pato baamu awọn orisun ti a ṣẹda. Niwọn igba ti a ko ti ṣẹda ohunkohun tẹlẹ, Terraform ta wa lati ṣẹda awọn orisun wọnyi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

A jẹrisi eyi. Bayi a ṣẹda garawa ti a npe ni seasnail.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ọpọlọpọ awọn ohun elo ti o jọra tun wa. Ọpọlọpọ awọn ti o lo Amazon mọ AWS CloudFormation tabi Google Cloud Deployment Manager tabi Azure Resource Manager. Ọkọọkan wọn ni imuse tirẹ ti iru kan fun ṣiṣakoso awọn orisun laarin ọkọọkan awọn olupese awọsanma gbangba wọnyi. Terraform wulo paapaa nitori pe o fun ọ laaye lati ṣakoso awọn olupese 100. (Awọn alaye diẹ sii nibi)

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Awọn ibi-afẹde ti Terraform ti lepa lati ibẹrẹ:

  • Terraform n pese wiwo kan ti awọn orisun.
  • Gba ọ laaye lati ṣe atilẹyin fun gbogbo awọn iru ẹrọ igbalode.
  • Ati pe a ṣe apẹrẹ Terraform lati ibẹrẹ bi ohun elo ti o fun ọ laaye lati yi awọn amayederun pada lailewu ati asọtẹlẹ.

Ni ọdun 2014, ọrọ naa “sọtẹlẹ” dabi ohun dani ni aaye yii.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Terraform jẹ ohun elo gbogbo agbaye. Ti o ba ni API, lẹhinna o le ṣakoso ohun gbogbo patapata:

  • O le lo diẹ sii ju awọn olupese 120 lati ṣakoso ohun gbogbo ti o fẹ.
  • Fun apẹẹrẹ, o le lo Terraform lati ṣapejuwe iraye si awọn ibi ipamọ GitHub.
  • O le paapaa ṣẹda ati sunmọ awọn idun ni Jira.
  • O le ṣakoso awọn metiriki Relic Tuntun.
  • O le paapaa ṣẹda awọn faili ni apoti gbigbe silẹ ti o ba fẹ gaan.

Eyi jẹ gbogbo aṣeyọri nipa lilo awọn olupese Terraform, eyiti o ni API ṣiṣi ti o le ṣe apejuwe ni Go.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Jẹ ki a sọ pe a bẹrẹ lilo Terraform, ka diẹ ninu awọn iwe lori aaye naa, wo fidio diẹ, a si bẹrẹ kikọ main.tf, gẹgẹ bi mo ti fihan lori awọn ifaworanhan iṣaaju.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe ohun gbogbo jẹ nla, o ni faili ti o ṣẹda VPC kan.

Ti o ba fẹ ṣẹda VPC kan, lẹhinna o pato isunmọ awọn laini 12 wọnyi. Ṣe apejuwe agbegbe wo ni o fẹ ṣẹda, cidr_block ti awọn adirẹsi IP lati lo. Gbogbo ẹ niyẹn.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nipa ti, ise agbese na yoo dagba diẹdiẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe iwọ yoo ṣafikun opo nkan tuntun nibẹ: awọn orisun, awọn orisun data, iwọ yoo ṣepọ pẹlu awọn olupese tuntun, lojiji iwọ yoo fẹ lati lo Terraform lati ṣakoso awọn olumulo ninu akọọlẹ GitHub rẹ, bbl O le fẹ lati lo oriṣiriṣi oriṣiriṣi. Awọn olupese DNS, kọja ohun gbogbo. Terraform jẹ ki eyi rọrun.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Jẹ ki a wo apẹẹrẹ atẹle.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

O maa ṣafikun intanẹẹti_gateway nitori o fẹ awọn orisun lati ọdọ VPC rẹ lati ni iraye si intanẹẹti. Eleyi jẹ kan ti o dara agutan.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Abajade ni main.tf:

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Eyi ni apa oke ti main.tf.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Eyi ni apa isalẹ ti main.tf.

Lẹhinna o ṣafikun subnet. Ni akoko ti o fẹ lati ṣafikun awọn ẹnu-ọna NAT, awọn ipa-ọna, awọn tabili ipa-ọna ati opo ti awọn subnets miiran, iwọ kii yoo ni awọn laini 38, ṣugbọn isunmọ awọn laini 200-300.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Iyẹn ni, faili main.tf rẹ n dagba diẹdiẹ. Ati ni igbagbogbo awọn eniyan fi ohun gbogbo sinu faili kan. 10-20 Kb han ni main.tf. Fojuinu pe 10-20 Kb jẹ akoonu ọrọ. Ati ohun gbogbo ti sopọ si ohun gbogbo. Eyi maa n nira diẹdiẹ lati ṣiṣẹ pẹlu. 10-20 Kb jẹ ọran olumulo to dara, nigbakan diẹ sii. Ati pe awọn eniyan ko nigbagbogbo ro pe eyi jẹ buburu.

Bi ninu siseto deede, ie kii ṣe awọn amayederun bi koodu, a lo lati lo opo ti awọn kilasi oriṣiriṣi, awọn idii, awọn modulu, awọn akojọpọ. Terraform gba ọ laaye lati ṣe pupọ ohun kanna.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

  • Awọn koodu ti wa ni dagba.
  • Awọn igbẹkẹle laarin awọn orisun tun n dagba.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe a ni nla, iwulo nla. A ye wa pe a ko le gbe bi eleyi mọ. Koodu wa ti di pupọ. 10-20 Kb jẹ, nitorinaa, ko tobi pupọ, ṣugbọn a n sọrọ nipa akopọ nẹtiwọọki nikan, ie o ti ṣafikun awọn orisun nẹtiwọọki nikan. A ko sọrọ nipa Iwontunws.funfun Fifuye Ohun elo, iṣupọ ES imuṣiṣẹ, Kubernetes, ati bẹbẹ lọ, nibiti 100 Kb le ni irọrun hun sinu. Ti o ba kọ gbogbo eyi silẹ, iwọ yoo kọ ẹkọ laipẹ pe Terraform n pese awọn modulu Terraform.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Awọn modulu Terraform jẹ iṣeto Terraform ti ara ẹni ti o ṣakoso bi ẹgbẹ kan. Iyẹn ni gbogbo ohun ti o nilo lati mọ nipa awọn modulu Terraform. Wọn kii ṣe ọlọgbọn rara, wọn ko gba ọ laaye lati ṣe awọn asopọ eka eyikeyi ti o da lori nkan kan. Eyi gbogbo ṣubu lori awọn ejika ti awọn olupilẹṣẹ. Iyẹn ni, eyi jẹ diẹ ninu iru iṣeto Terraform ti o ti kọ tẹlẹ. Ati pe o le nirọrun pe bi ẹgbẹ kan.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nitorinaa a n gbiyanju lati loye bawo ni a ṣe le ṣe iṣapeye koodu 10-20-30 Kb wa. A ti wa ni mimọ diẹdiẹ pe a nilo lati lo diẹ ninu awọn modulu.

Iru awọn modulu akọkọ ti o ba pade jẹ awọn modulu orisun. Wọn ko loye kini awọn amayederun rẹ jẹ nipa, kini iṣowo rẹ jẹ nipa, ibo ati kini awọn ipo jẹ. Iwọnyi ni deede awọn modulu ti Emi, papọ pẹlu agbegbe orisun ṣiṣi, ṣakoso, ati eyiti a fi siwaju bi awọn bulọọki ile akọkọ fun awọn amayederun rẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Apeere ti module oluşewadi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nigba ti a ba pe a awọn oluşewadi module, a pato lati eyi ti ona a yẹ ki o fifuye awọn oniwe-akoonu.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

A tọkasi iru ẹya ti a fẹ ṣe igbasilẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

A ṣe opo awọn ariyanjiyan nibẹ. Gbogbo ẹ niyẹn. Iyẹn ni gbogbo ohun ti a nilo lati mọ nigba ti a lo module yii.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ọpọlọpọ eniyan ro pe ti wọn ba lo ẹya tuntun, ohun gbogbo yoo jẹ iduroṣinṣin. Ṣugbọn rara. Awọn amayederun gbọdọ jẹ ti ikede; a gbọdọ dahun ni kedere iru ẹya eyi tabi paati yẹn ti a gbe lọ si.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Eyi ni koodu ti o wa ninu module yii. Aabo-ẹgbẹ module. Nibi yi lọ si ila 640. Ṣiṣẹda orisun aabo-croup ni Amazon ni gbogbo iṣeto ti o ṣeeṣe jẹ iṣẹ-ṣiṣe ti kii ṣe pataki. Ko to lati ṣẹda ẹgbẹ aabo kan ki o sọ fun u kini awọn ofin lati kọja si. Yoo rọrun pupọ. Awọn ihamọ oriṣiriṣi miliọnu kan wa laarin Amazon. Fun apẹẹrẹ, ti o ba lo VPC opin, akojọ ìpele, orisirisi APIs ati gbiyanju lati darapo gbogbo eyi pẹlu ohun gbogbo, lẹhinna Terraform ko gba ọ laaye lati ṣe eyi. Ati Amazon API ko gba eyi boya. Nitorinaa, a nilo lati tọju gbogbo ọgbọn ẹru yii ni module kan ki o fun koodu olumulo ti o dabi eyi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Olumulo ko nilo lati mọ bi o ti ṣe inu.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Iru awọn modulu keji, eyiti o ni awọn modulu orisun, ti yanju awọn iṣoro ti o wulo diẹ sii si iṣowo rẹ. Nigbagbogbo eyi jẹ aaye ti o jẹ itẹsiwaju fun Terraform ati ṣeto diẹ ninu awọn iye lile fun awọn afi, fun awọn iṣedede ile-iṣẹ. O tun le ṣafikun iṣẹ ṣiṣe nibẹ ti Terraform ko gba ọ laaye lọwọlọwọ lati lo. Eleyi jẹ ọtun bayi. Bayi ẹya 0.11, eyiti o fẹrẹ di ohun ti o ti kọja. Sugbon sibẹ, preprocessors, jsonnet, cookiecutter ati opo kan ti ohun miiran ni o wa ni oluranlowo siseto ti o gbọdọ wa ni lo fun ni kikun iṣẹ.

Nigbamii Emi yoo ṣe afihan diẹ ninu awọn apẹẹrẹ ti eyi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Awọn module amayederun ni a npe ni gangan ni ọna kanna.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Orisun lati ibiti o ti ṣe igbasilẹ akoonu naa jẹ itọkasi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Opo awọn iye ti wa ni gbigbe sinu ati kọja sinu module yii.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nigbamii, inu module yii, opo awọn modulu orisun ni a pe lati ṣẹda VPC tabi Iwontunws.funfun Fifuye Ohun elo, tabi lati ṣẹda ẹgbẹ-aabo tabi fun iṣupọ Iṣẹ Apoti Rirọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nibẹ ni o wa meji orisi ti modulu. Eyi ṣe pataki lati ni oye nitori pupọ julọ alaye ti Mo ti ṣe akojọpọ ninu ijabọ yii ni a ko kọ sinu iwe.

Ati pe iwe ni Terraform ni bayi jẹ iṣoro pupọ nitori pe o kan sọ pe awọn ẹya wọnyi wa, o le lo wọn. Ṣugbọn ko sọ bi o ṣe le lo awọn ẹya wọnyi, idi ti o dara lati lo wọn. Nitorinaa, nọmba ti o tobi pupọ ti eniyan kọ nkan ti wọn ko le gbe pẹlu.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Jẹ ki a wo bi a ṣe le kọ awọn modulu wọnyi ni atẹle. Lẹhinna a yoo rii bi a ṣe le pe wọn ati bii o ṣe le ṣiṣẹ pẹlu koodu naa.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Iforukọsilẹ Terraform - https://registry.terraform.io/

Imọran #0 ni lati ma kọ awọn modulu orisun. Pupọ julọ awọn modulu wọnyi ti kọ tẹlẹ fun ọ. Gẹgẹbi Mo ti sọ, wọn jẹ orisun ṣiṣi, wọn ko ni eyikeyi ọgbọn iṣowo rẹ, wọn ko ni awọn iye koodu lile fun awọn adirẹsi IP, awọn ọrọ igbaniwọle, ati bẹbẹ lọ. module naa rọ pupọ. Ati pe o ti ṣee ṣe tẹlẹ ti kọ. Ọpọlọpọ awọn modulu wa fun awọn orisun lati Amazon. About 650. Ati ọpọlọpọ awọn ti wọn wa ni ti o dara didara.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ni apẹẹrẹ yii, ẹnikan wa si ọ o sọ pe, “Mo fẹ lati ni anfani lati ṣakoso data data kan. Ṣẹda module kan ki MO le ṣẹda aaye data kan." Eniyan ko mọ awọn alaye imuse ti boya Amazon tabi Terraform. O kan sọ pe: "Mo fẹ ṣakoso MSSQL." Iyẹn ni, a tumọ si pe yoo pe module wa, kọja iru ẹrọ naa nibẹ, ati tọka agbegbe aago naa.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe eniyan ko yẹ ki o mọ pe a yoo ṣẹda awọn orisun oriṣiriṣi meji ninu module yii: ọkan fun MSSQL, keji fun ohun gbogbo miiran, nitori ni Terraform 0.11 o ko le pato awọn iye agbegbe aago bi aṣayan.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati ni ijade lati module yii, eniyan yoo ni anfani lati gba adirẹsi nirọrun. Oun kii yoo mọ lati iru data data, lati inu orisun wo ni a ṣẹda gbogbo eyi ni inu. Eyi jẹ ẹya pataki ti fifipamọ. Ati pe eyi kii ṣe si awọn modulu wọnyẹn ti o jẹ gbangba ni orisun ṣiṣi, ṣugbọn tun si awọn modulu wọnyẹn ti iwọ yoo kọ sinu awọn iṣẹ akanṣe ati awọn ẹgbẹ rẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Eyi ni ariyanjiyan keji, eyiti o ṣe pataki pupọ ti o ba ti lo Terraform fun igba diẹ. O ni ibi ipamọ ninu eyiti o fi gbogbo awọn modulu Terraform rẹ fun ile-iṣẹ rẹ. Ati pe o jẹ deede pe ni akoko pupọ iṣẹ akanṣe yii yoo dagba si iwọn ti ọkan tabi meji megabyte. Eyi dara.

Ṣugbọn iṣoro naa ni bi Terraform ṣe n pe awọn modulu wọnyi. Fun apẹẹrẹ, ti o ba pe module kan lati ṣẹda olumulo kọọkan kọọkan, Terraform yoo kọkọ ṣajọpọ gbogbo ibi ipamọ naa lẹhinna lọ kiri si folda nibiti module kan pato wa. Ni ọna yii iwọ yoo ṣe igbasilẹ megabyte kan ni igba kọọkan. Ti o ba ṣakoso awọn olumulo 100 tabi 200, lẹhinna o yoo ṣe igbasilẹ 100 tabi 200 megabyte, lẹhinna lọ si folda yẹn. Nitorinaa nipa ti ara o ko fẹ ṣe igbasilẹ opo nkan ni gbogbo igba ti o lu “Terraform init”.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Awọn ojutu meji wa si iṣoro yii. Ohun akọkọ ni lati lo awọn ọna ibatan. Ni ọna yii o tọka ninu koodu pe folda naa jẹ agbegbe (./). Ati pe ṣaaju ki o to ṣe ifilọlẹ ohunkohun, o ṣe oniye Git kan ti ibi ipamọ yii ni agbegbe. Ni ọna yii o ṣe lẹẹkan.

Nibẹ ni o wa, dajudaju, ọpọlọpọ awọn downsides. Fun apẹẹrẹ, o ko le lo ti ikede. Ati pe eyi jẹ igba miiran o ṣoro lati gbe pẹlu.

Ojutu keji. Ti o ba ni ọpọlọpọ awọn submodules ati pe o ti ni iru opo gigun ti iṣeto, lẹhinna iṣẹ akanṣe MBT wa, eyiti o fun ọ laaye lati gba ọpọlọpọ awọn idii oriṣiriṣi lati monorepository kan ati gbe wọn si S3. Eyi jẹ ọna ti o dara pupọ. Nitorinaa, faili iam-user-1.0.0.zip yoo ṣe iwọn 1 Kb nikan, nitori koodu lati ṣẹda orisun yii kere pupọ. Ati pe yoo ṣiṣẹ ni iyara pupọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Jẹ ká soro nipa ohun ti ko le ṣee lo ninu awọn module.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Idi ni ibi yi ni awọn module? Ohun ti o buru julọ ni lati ro olumulo. Ro pe olumulo jẹ aṣayan ijẹrisi olupese ti o le ṣee lo nipasẹ awọn eniyan oriṣiriṣi. Fun apẹẹrẹ, gbogbo wa ni yoo ṣajọpọ ipa naa. Eyi tumọ si pe Terraform yoo gba ipa yii. Ati lẹhinna pẹlu ipa yii yoo ṣe awọn iṣe miiran.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati buburu ni pe ti Vasya ba fẹran lati sopọ si Amazon ni ọna kan, fun apẹẹrẹ, lilo iyipada ayika aiyipada, ati pe Petya fẹran lati lo bọtini ti o pin, eyiti o ni ni ibi ikọkọ, lẹhinna o ko le pato mejeeji ni Terraform. Ati pe ki wọn ko ni iriri ijiya, ko si iwulo lati tọka bulọọki yii ninu module. Eyi gbọdọ jẹ itọkasi ni ipele ti o ga julọ. Iyẹn ni, a ni module oluşewadi, module amayederun ati akopọ lori oke. Ati pe eyi yẹ ki o tọka si ibikan ti o ga julọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ibi keji ni olupese. Nibi buburu ko ṣe pataki, nitori ti o ba kọ koodu ati pe o ṣiṣẹ fun ọ, lẹhinna o le ro pe ti o ba ṣiṣẹ, lẹhinna kilode ti o yi pada.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ibi ni pe o ko nigbagbogbo ṣakoso nigbati olupese yii yoo ṣe ifilọlẹ, ni akọkọ. Ati ni ẹẹkeji, iwọ ko ṣakoso kini aws ec2 tumọ si, ie a n sọrọ nipa Linux tabi Windows ni bayi. Nitorinaa o ko le kọ nkan ti yoo ṣiṣẹ kanna lori awọn ọna ṣiṣe oriṣiriṣi tabi fun awọn ọran olumulo oriṣiriṣi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Apeere ti o wọpọ julọ, eyiti o tun tọka si ninu iwe aṣẹ osise, ni pe ti o ba kọ aws_intance, ṣafihan opo awọn ariyanjiyan, lẹhinna ko si ohun ti o jẹ aṣiṣe pẹlu iyẹn ti o ba ṣalaye olupese “agbegbe-exec” nibẹ ati ṣiṣe agbara rẹ- iwe ere.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ni otitọ, bẹẹni, ko si ohun ti o buru ninu iyẹn. Ṣugbọn gangan laipẹ iwọ yoo mọ pe nkan agbegbe-exec ko si, fun apẹẹrẹ, ni ifilọlẹ_configuration.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati nigbati o ba lo ifilọlẹ_configuration, ati pe o fẹ ṣẹda ẹgbẹ adaṣe lati apẹẹrẹ kan, lẹhinna ni ifilọlẹ_configuration ko si imọran ti “olupese”. Nibẹ ni ero ti "data olumulo".

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nitorinaa, ojutu agbaye diẹ sii ni lati lo data olumulo. Ati pe yoo ṣe ifilọlẹ boya lori apẹẹrẹ funrararẹ, nigbati apẹẹrẹ ba wa ni titan, tabi ni data olumulo kanna, nigbati ẹgbẹ autoscaling nlo ifilọlẹ_configuration yii.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ti o ba tun fẹ lati ṣiṣẹ olupese, nitori pe o jẹ paati gluing, nigbati a ṣẹda orisun kan, ni akoko yẹn o nilo lati ṣiṣẹ olupese rẹ, aṣẹ rẹ. Ọpọlọpọ iru awọn ipo bẹẹ wa.

Ati pe orisun ti o pe julọ fun eyi ni a pe ni null_resource. Null_resource ni a idinwon awọn oluşewadi ti o ti wa ni ko da kosi. Ko kan ohunkohun, ko si API, ko si autoscaling. Ṣugbọn o gba ọ laaye lati ṣakoso nigbati o nṣiṣẹ aṣẹ naa. Ni idi eyi, aṣẹ naa nṣiṣẹ lakoko ẹda.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Itọkasi http://bit.ly/common-traits-in-terraform-modules

Awọn ami pupọ wa. Emi kii yoo lọ sinu gbogbo awọn ami ni alaye nla. Nibẹ jẹ ẹya article nipa yi. Ṣugbọn ti o ba ti ṣiṣẹ pẹlu Terraform tabi lo awọn modulu awọn eniyan miiran, lẹhinna o ti ṣe akiyesi nigbagbogbo pe ọpọlọpọ awọn modulu, bii pupọ julọ koodu ni orisun ṣiṣi, ti kọ nipasẹ awọn eniyan fun awọn iwulo ti ara wọn. Ọkùnrin kan kọ ọ́, ó sì yanjú ìṣòro rẹ̀. Mo di ni GitHub, jẹ ki o wa laaye. Yoo wa laaye, ṣugbọn ti ko ba si iwe ati apẹẹrẹ nibẹ, lẹhinna ko si ẹnikan ti yoo lo. Ati pe ti ko ba si iṣẹ ṣiṣe ti o fun ọ laaye lati yanju diẹ diẹ sii ju iṣẹ-ṣiṣe rẹ pato lọ, lẹhinna ko si ẹnikan ti yoo lo boya. Awọn ọna pupọ lo wa lati padanu awọn olumulo.

Ti o ba fẹ kọ nkan ki awọn eniyan le lo, lẹhinna Mo ṣeduro tẹle awọn ami wọnyi.

Awọn wọnyi ni:

  • Iwe ati awọn apẹẹrẹ.
  • Iṣẹ ṣiṣe ni kikun.
  • Awọn aṣiṣe ti o ni imọran.
  • Mọ koodu.
  • Awọn idanwo.

Awọn idanwo jẹ ipo ti o yatọ nitori pe wọn nira pupọ lati kọ. Mo gbagbọ diẹ sii ninu awọn iwe ati awọn apẹẹrẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nitorina, a wo bi a ṣe le kọ awọn modulu. Awọn ariyanjiyan meji wa. Ni akọkọ, eyiti o ṣe pataki julọ, kii ṣe lati kọ bi o ba le, nitori pe opo eniyan ti ṣe awọn iṣẹ wọnyi tẹlẹ ṣaaju ki o to. Ati keji, ti o ba tun pinnu, lẹhinna gbiyanju lati ma lo awọn olupese ni awọn modulu ati awọn olupese.

Eyi ni apakan grẹy ti iwe-ipamọ naa. O le ronu bayi: “Nkankan ko ṣe akiyesi. Ko ni idaniloju." Ṣugbọn a yoo rii ni oṣu mẹfa.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Bayi jẹ ki a sọrọ nipa bi o ṣe le pe awọn modulu wọnyi.

A ye wa pe koodu wa dagba lori akoko. A ko ni faili kan mọ, a ti ni awọn faili 20 tẹlẹ. Gbogbo wọn wa ni folda kan. Tabi boya ni marun awọn folda. Boya a bẹrẹ lati fọ wọn lulẹ nipasẹ agbegbe, nipasẹ diẹ ninu awọn paati. Lẹhinna a loye pe ni bayi a ni diẹ ninu awọn ilana imuṣiṣẹpọ ati orchestration. Iyẹn ni, a gbọdọ loye ohun ti o yẹ ki a ṣe ti a ba yipada awọn orisun nẹtiwọọki, kini o yẹ ki a ṣe pẹlu iyoku awọn ohun elo wa, bii o ṣe le fa awọn igbẹkẹle wọnyi, ati bẹbẹ lọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nibẹ ni o wa meji extremes. Iwọn akọkọ jẹ gbogbo rẹ ni ọkan. A ni ọkan titunto si faili. Fun akoko yii, eyi ni adaṣe ti o dara julọ ti osise lori oju opo wẹẹbu Terraform.

Ṣugbọn nisisiyi o ti kọ bi deprecated ati ki o kuro. Ni akoko pupọ, agbegbe Terraform mọ pe eyi jina si iṣe ti o dara julọ, nitori awọn eniyan bẹrẹ lati lo iṣẹ naa ni awọn ọna oriṣiriṣi. Ati pe awọn iṣoro wa. Fun apẹẹrẹ, nigba ti a ba ṣe atokọ gbogbo awọn igbẹkẹle ni aaye kan. Awọn ipo wa nigba ti a tẹ “Eto Terraform” ati titi di igba ti Terraform ṣe imudojuiwọn awọn ipinlẹ ti gbogbo awọn orisun, akoko pupọ le kọja.

Akoko pupọ jẹ, fun apẹẹrẹ, awọn iṣẹju 5. Fun diẹ ninu eyi jẹ akoko pupọ. Mo ti rii awọn ọran nibiti o gba iṣẹju 15. API AWS lo awọn iṣẹju 15 ni igbiyanju lati ṣawari ohun ti n ṣẹlẹ pẹlu ipo ti orisun kọọkan. Eyi jẹ agbegbe ti o tobi pupọ.

Ati pe, nipa ti ara, iṣoro ti o jọmọ yoo han nigbati o ba fẹ yi nkan pada ni aaye kan, lẹhinna o duro fun iṣẹju 15, ati pe o fun ọ ni kanfasi ti diẹ ninu awọn ayipada. O tutọ, kowe “Bẹẹni”, ati pe nkan kan ti ko tọ. Eyi jẹ apẹẹrẹ gidi kan. Terraform ko gbiyanju lati daabobo ọ lati awọn iṣoro. Iyẹn ni, kọ ohun ti o fẹ. Awọn iṣoro yoo wa - awọn iṣoro rẹ. Lakoko ti Terraform 0.11 ko gbiyanju lati ran ọ lọwọ ni eyikeyi ọna. Awọn aaye ti o nifẹ si wa ni 0.12 ti o gba ọ laaye lati sọ: “Vasya, o fẹ eyi gaan, ṣe o le wa si oye rẹ?”

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ọna keji ni lati dinku agbegbe yii, iyẹn ni, awọn ipe lati ibi kan le dinku asopọ lati aaye miiran.

Iṣoro kan nikan ni pe o nilo lati kọ koodu diẹ sii, ie o nilo lati ṣe apejuwe awọn oniyipada ni nọmba nla ti awọn faili, ṣe imudojuiwọn eyi. Diẹ ninu awọn eniyan ko fẹran rẹ. Eyi jẹ deede fun mi. Ati pe diẹ ninu awọn eniyan ro pe: “Kini idi ti o fi kọ eyi ni awọn aye oriṣiriṣi, Emi yoo fi gbogbo rẹ si aaye kan.” Eyi ṣee ṣe, ṣugbọn eyi ni iwọn keji.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Tani o ni gbogbo eyi ti ngbe ni ibi kan? Eniyan kan, meji, mẹta, iyẹn ni, ẹnikan n lo.

Ati awọn ti o ipe kan pato paati, ọkan Àkọsílẹ tabi ọkan amayederun module? Marun si meje eniyan. Eyi dara.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Idahun ti o wọpọ julọ jẹ ibikan ni aarin. Ti iṣẹ akanṣe naa ba tobi, lẹhinna o yoo nigbagbogbo ni ipo nibiti ko si ojutu ti o dara ati pe kii ṣe ohun gbogbo ṣiṣẹ nibẹ, nitorinaa o pari pẹlu adalu. Ko si ohun ti ko tọ si pẹlu eyi, niwọn igba ti o ba loye pe awọn mejeeji ni awọn anfani.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ti ohunkan ba yipada ninu akopọ VPC ati pe o fẹ lati lo awọn ayipada wọnyi si EC2, ie o fẹ lati ṣe imudojuiwọn ẹgbẹ autoscaling nitori o ni subnet tuntun kan, lẹhinna Mo pe iru orchestration igbẹkẹle yii. Nibẹ ni o wa diẹ ninu awọn ojutu: ti o nlo kini?

Mo le daba kini awọn ojutu ti o wa. O le lo Terraform lati ṣe idan, tabi o le lo makefiles lati lo Terraform. Ati rii boya nkan kan ti yipada nibẹ, o le ṣe ifilọlẹ nibi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Bawo ni o ṣe fẹran ipinnu yii? Ṣe ẹnikẹni gbagbọ pe eyi jẹ ojutu itura kan? Mo rii ẹrin kan, o han gbangba pe awọn iyemeji ti wọ inu.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Dajudaju, maṣe gbiyanju eyi ni ile. Terraform ko ṣe apẹrẹ rara lati ṣiṣẹ lati Terraform.

Ninu ijabọ kan wọn sọ fun mi pe: “Rara, eyi kii yoo ṣiṣẹ.” Koko-ọrọ ni pe ko yẹ ki o ṣiṣẹ. Botilẹjẹpe o dabi iwunilori pupọ nigbati o le ṣe ifilọlẹ Terraform lati Terraform, ati lẹhinna Terraform, iwọ ko yẹ ki o ṣe iyẹn. Terraform yẹ ki o bẹrẹ ni irọrun nigbagbogbo.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

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

Ti o ba nilo orchestration ipe nigbati nkan kan ti yipada ni aye kan, lẹhinna Terragrunt wa.

Terragrunt jẹ ohun elo kan, afikun si Terraform, ti o fun ọ laaye lati ṣe ipoidojuko ati ṣeto awọn ipe si awọn modulu amayederun.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Faili iṣeto Terraform aṣoju kan dabi eyi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

O pato eyi ti pato module ti o fẹ lati pe.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ohun ti dependencies ni module?

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati awọn ariyanjiyan wo ni module yii gba. Iyẹn ni gbogbo ohun ti o wa lati mọ nipa Terragrunt.

Iwe naa wa nibẹ, ati pe awọn irawọ 1 wa lori GitHub. Ṣugbọn ni ọpọlọpọ igba eyi ni ohun ti o nilo lati mọ. Ati pe eyi rọrun pupọ lati ṣe ni awọn ile-iṣẹ ti o bẹrẹ lati ṣiṣẹ pẹlu Terraform.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nitorina orchestration ni Terragrunt. Awọn aṣayan miiran wa.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Bayi jẹ ki ká soro nipa bi o lati ṣiṣẹ pẹlu awọn koodu.

Ti o ba nilo lati ṣafikun awọn ẹya tuntun si koodu rẹ, ni ọpọlọpọ igba eyi rọrun. O ti wa ni kikọ titun kan awọn oluşewadi, ohun gbogbo ni o rọrun.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ti o ba ni diẹ ninu awọn orisun ti o ṣẹda ni ilosiwaju, fun apẹẹrẹ, o kọ ẹkọ nipa Terraform lẹhin ti o ṣii akọọlẹ AWS kan ati pe o fẹ lati lo awọn orisun ti o ti ni tẹlẹ, lẹhinna yoo jẹ deede lati fa module rẹ ni ọna yii, nitorinaa. o ṣe atilẹyin fun lilo awọn ohun elo ti o wa tẹlẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati atilẹyin awọn ẹda ti titun oro nipa lilo awọn Àkọsílẹ awọn oluşewadi.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Lori iṣẹjade a nigbagbogbo da id ijade pada da lori ohun ti a lo.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Iṣoro pataki pataki keji ni Terraform 0.11 n ṣiṣẹ pẹlu awọn atokọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Iṣoro naa ni pe ti a ba ni iru atokọ ti awọn olumulo.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati pe nigba ti a ṣẹda awọn olumulo wọnyi nipa lilo awọn orisun Àkọsílẹ, lẹhinna ohun gbogbo lọ dara. A lọ nipasẹ gbogbo akojọ, ṣiṣẹda faili kan fun ọkọọkan. Ohun gbogbo dara. Ati lẹhinna, fun apẹẹrẹ, olumulo3, ti o wa ni aarin, yẹ ki o yọ kuro lati ibi, lẹhinna gbogbo awọn ohun elo ti a ṣẹda lẹhin rẹ yoo tun ṣe nitori pe atọka yoo yipada.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nṣiṣẹ pẹlu awọn akojọ ni a stateful ayika. Kini agbegbe ti o ni ipinlẹ? Eyi ni ipo nibiti a ti ṣẹda iye tuntun nigbati a ṣẹda orisun yii. Fun apẹẹrẹ, Bọtini Wiwọle AWS tabi Bọtini Aṣiri AWS, ie nigba ti a ṣẹda olumulo kan, a gba Wiwọle tuntun tabi Bọtini Aṣiri. Ati ni gbogbo igba ti a ba pa olumulo kan, olumulo yii yoo ni bọtini titun kan. Ṣugbọn eyi kii ṣe feng shui, nitori olumulo kii yoo fẹ lati jẹ ọrẹ pẹlu wa ti a ba ṣẹda olumulo tuntun fun u ni gbogbo igba ti ẹnikan ba fi ẹgbẹ silẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Eyi ni ojutu. Eyi jẹ koodu ti a kọ sinu Jsonnet. Jsonnet jẹ ede ti n ṣe awopọ lati Google.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Aṣẹ yii n gba ọ laaye lati gba awoṣe yii ati bi o ṣe jade o da faili json pada ti o ṣe ni ibamu si awoṣe rẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Awọn awoṣe wulẹ bi yi.

Terraform gba ọ laaye lati ṣiṣẹ pẹlu mejeeji HCL ati Json ni ọna kanna, nitorinaa ti o ba ni agbara lati ṣe ipilẹṣẹ Json, lẹhinna o le isokuso sinu Terraform. Faili pẹlu itẹsiwaju .tf.json yoo ṣe igbasilẹ ni aṣeyọri.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati lẹhinna a ṣiṣẹ pẹlu rẹ bi igbagbogbo: terraform init, terramorm lo. Ati pe a ṣẹda awọn olumulo meji.

Bayi a ko bẹru ti ẹnikan ba fi ẹgbẹ naa silẹ. A yoo kan ṣatunkọ faili json. Vasya Pupkin osi, Petya Pyatochkin ku. Petya Pyatochkin kii yoo gba bọtini tuntun kan.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ṣiṣepọ Terraform pẹlu awọn irinṣẹ miiran kii ṣe iṣẹ Terraform gaan. A ṣẹda Terraform bi pẹpẹ kan fun ṣiṣẹda awọn orisun ati pe iyẹn ni. Ati pe ohun gbogbo ti o wa nigbamii kii ṣe ibakcdun Terraform. Ati pe ko si iwulo lati hun ni ibẹ. Nibẹ ni Ansible, eyi ti o ṣe ohun gbogbo ti o nilo.

Ṣugbọn awọn ipo dide nigba ti a ba fẹ lati fa Terraform ki o si pe diẹ ninu awọn pipaṣẹ lẹhin ti nkankan ti pari.

Ọna akọkọ. A ṣẹda iṣẹjade kan nibiti a ti kọ aṣẹ yii.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ati lẹhinna a pe aṣẹ yii lati inu iṣelọpọ terraform ikarahun ati pato iye ti a fẹ. Nitorinaa, aṣẹ naa ni ṣiṣe pẹlu gbogbo awọn iye ti o rọpo. O ti wa ni irorun.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Ọna keji. Eyi ni lilo null_resource da lori awọn ayipada ninu awọn amayederun wa. A le pe agbegbe-exe kanna ni kete ti ID ti diẹ ninu awọn oluşewadi yipada.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Nipa ti, eyi jẹ gbogbo dan lori iwe, nitori Amazon, bii gbogbo awọn olupese gbangba miiran, ni opo ti awọn ọran eti tirẹ.

Ẹran eti ti o wọpọ julọ ni pe nigbati o ṣii akọọlẹ AWS kan, o ṣe pataki awọn agbegbe ti o lo; jẹ ẹya ara ẹrọ yi ṣiṣẹ nibẹ; boya o ṣii lẹhin Oṣu kejila ọdun 2013; boya o nlo aiyipada ni VPC ati bẹbẹ lọ Ọpọlọpọ awọn ihamọ wa. Ati Amazon tuka wọn jakejado awọn iwe.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Awọn nkan diẹ wa ti Mo ṣeduro yago fun.

Lati bẹrẹ, yago fun gbogbo awọn ariyanjiyan aṣiri inu ero Terraform tabi Terraform CLI. Gbogbo eyi le ṣee fi boya sinu faili tfvars tabi sinu oniyipada ayika.

Ṣugbọn o ko nilo lati ṣe akori gbogbo aṣẹ idan yii. Terraform ètò - var ati pa a lọ. Oniyipada akọkọ jẹ var, oniyipada keji jẹ var, ẹkẹta, kẹrin. Ilana ti o ṣe pataki julọ ti awọn amayederun bi koodu ti Mo lo nigbagbogbo ni pe nipa wiwo koodu naa, Mo yẹ ki o ni oye oye ti ohun ti a fi ranṣẹ sibẹ, ni ipo wo ati pẹlu awọn iye wo. Ati nitorinaa Emi ko ni lati ka iwe naa tabi beere Vasya kini awọn aye ti o lo lati ṣẹda iṣupọ wa. Mo kan nilo lati ṣii faili kan pẹlu itẹsiwaju tfvars, eyiti o baamu nigbagbogbo agbegbe, ati wo ohun gbogbo nibẹ.

Pẹlupẹlu, maṣe lo awọn ariyanjiyan afojusun lati dinku aaye naa. Fun eyi o rọrun pupọ lati lo awọn modulu amayederun kekere.

Bakannaa, ko si ye lati se idinwo ati ki o mu parallelism. Ti Mo ba ni awọn ohun elo 150 ati pe Mo fẹ lati mu afiwe Amazon pọ si lati aiyipada 10 si 100, lẹhinna o ṣee ṣe ohunkan yoo jẹ aṣiṣe. Tabi o le dara ni bayi, ṣugbọn nigbati Amazon ba sọ pe o n ṣe awọn ipe pupọ, iwọ yoo wa ninu wahala.

Terraform yoo gbiyanju lati tun bẹrẹ pupọ julọ awọn iṣoro wọnyi, ṣugbọn iwọ kii yoo ṣaṣeyọri fere ohunkohun. Parallelism=1 jẹ ohun pataki lati lo ti o ba kọsẹ lori kokoro kan ninu AWS API tabi inu olupese Terraform. Ati lẹhinna o nilo lati pato: parallelism=1 ki o duro titi Terraform yoo fi pari ipe kan, lẹhinna keji, lẹhinna kẹta. Oun yoo ṣe ifilọlẹ wọn ni ọkọọkan.

Eniyan nigbagbogbo beere lọwọ mi, “Kini idi ti Mo ro pe awọn aaye iṣẹ Terraform jẹ ibi?” Mo gbagbọ ilana ti awọn amayederun bi koodu ni lati rii kini awọn amayederun ti ṣẹda ati pẹlu awọn iye wo.

Awọn aaye iṣẹ ko ṣẹda nipasẹ awọn olumulo. Eyi ko tumọ si pe awọn olumulo kowe ni awọn ọran GitHub ti a ko le gbe laisi awọn aaye iṣẹ Terraform. Ko si iru eyi. Idawọlẹ Terraform jẹ ojutu iṣowo kan. Terraform lati HashiCorp pinnu pe a nilo awọn aaye iṣẹ, nitorinaa a fi silẹ. Mo rii pe o rọrun pupọ lati fi sii sinu folda lọtọ. Lẹhinna awọn faili yoo wa diẹ sii, ṣugbọn yoo jẹ alaye diẹ sii.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Bawo ni lati ṣiṣẹ pẹlu koodu naa? Ni otitọ, ṣiṣẹ pẹlu awọn akojọ jẹ irora nikan. Ati ki o mu Terraform rọrun. Eyi kii ṣe ohun ti yoo ṣe ohun gbogbo nla fun ọ. Ko si ye lati fi ohun gbogbo ti a kọ sinu iwe nibẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

A kọ koko ti ijabọ naa “fun ọjọ iwaju.” Emi yoo sọrọ nipa eyi ni soki. Fun ojo iwaju, eyi tumọ si pe 0.12 yoo tu silẹ laipẹ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

0.12 jẹ pupọ ti nkan tuntun. Ti o ba wa lati siseto deede, lẹhinna o padanu gbogbo iru awọn bulọọki ti o ni agbara, awọn losiwajulosehin, awọn iṣẹ ṣiṣe ti o tọ ati ipo, nibiti awọn apa osi ati ọtun ko ṣe iṣiro ni nigbakannaa, ṣugbọn da lori ipo naa. O padanu pupọ, nitorinaa 0.12 yoo yanju rẹ fun ọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

Sugbon! Ti o ba kọ kere si ati diẹ sii ni irọrun, lilo awọn modulu ti a ti ṣetan ati awọn solusan ẹni-kẹta, lẹhinna iwọ kii yoo ni lati duro ati nireti pe 0.12 yoo wa ati ṣatunṣe ohun gbogbo fun ọ.

Apejuwe ti awọn amayederun ni Terraform fun ojo iwaju. Anton Babenko (2018)

O ṣeun fun iroyin na! O ti sọrọ nipa awọn amayederun bi koodu ati sọ ọrọ gangan nipa awọn idanwo. Ṣe awọn idanwo nilo ni awọn modulu? Ojuse wo ni eyi? Ṣe Mo nilo lati kọ ara mi tabi o jẹ ojuṣe ti awọn modulu?

Odun to nbo yoo kun fun awọn iroyin ti a ti pinnu lati ṣe idanwo ohun gbogbo. Kini lati ṣe idanwo ni ibeere ti o tobi julọ. Ọpọlọpọ awọn igbẹkẹle wa, ọpọlọpọ awọn ihamọ lati awọn olupese oriṣiriṣi. Nigbati iwọ ati emi n sọrọ ti o sọ pe: “Mo nilo awọn idanwo,” lẹhinna Mo beere: “Kini iwọ yoo danwo?” O sọ pe iwọ yoo ṣe idanwo ni agbegbe rẹ. Lẹhinna Mo sọ pe eyi ko ṣiṣẹ ni agbegbe mi. Iyẹn ni, a kii yoo paapaa ni anfani lati gba lori eyi. Lai mẹnuba pe ọpọlọpọ awọn iṣoro imọ-ẹrọ wa. Iyẹn ni, bawo ni a ṣe le kọ awọn idanwo wọnyi ki wọn le pe.

Mo n ṣe iwadii koko-ọrọ koko yii, ie bii o ṣe le ṣe agbejade awọn idanwo laifọwọyi ti o da lori awọn amayederun ti o kowe. Iyẹn ni, ti o ba kọ koodu yii, lẹhinna Mo nilo lati ṣiṣẹ, da lori eyi Mo le ṣẹda awọn idanwo.

Terratesst jẹ ọkan ninu awọn ile-ikawe ti a mẹnuba nigbagbogbo ti o fun ọ laaye lati kọ awọn idanwo isọpọ fun Terraform. Eyi jẹ ọkan ninu awọn ohun elo. Mo fẹ iru DSL, fun apẹẹrẹ, rspec.

Anton, o ṣeun fun ijabọ naa! Orukọ mi ni Valery. Jẹ ki n beere ibeere imọ-ọrọ kekere kan. Nibẹ ni, ni majemu, ipese, imuṣiṣẹ wa. Ipese ṣẹda awọn amayederun mi, ni imuṣiṣẹ a fọwọsi pẹlu nkan ti o wulo, fun apẹẹrẹ, awọn olupin, awọn ohun elo, bbl Ati pe o wa ni ori mi pe Terraform jẹ diẹ sii fun ipese, ati Ansible jẹ diẹ sii fun imuṣiṣẹ, nitori Ansible jẹ tun fun ti ara Awọn amayederun. faye gba o lati fi sori ẹrọ nginx, Postgres. Ṣugbọn ni akoko kanna, Ansible dabi lati gba ipese, fun apẹẹrẹ, ti Amazon tabi awọn ohun elo Google. Ṣugbọn Terraform tun ngbanilaaye lati fi sọfitiwia kan ranṣẹ nipa lilo awọn modulu rẹ. Lati oju wiwo rẹ, Njẹ iru aala kan wa ti o ṣiṣẹ laarin Terraform ati Ansible, ibo ati kini o dara lati lo? Tabi, fun apẹẹrẹ, ṣe o ro pe Ansible jẹ idoti tẹlẹ, o yẹ ki o gbiyanju lati lo Terraform fun ohun gbogbo?

Ibeere to dara, Valery. Mo gbagbọ pe Terraform ko yipada ni awọn ofin idi lati ọdun 2014. A ṣẹda rẹ fun awọn amayederun ati pe o ku fun awọn amayederun. A tun ni ati pe yoo ni iwulo fun iṣakoso iṣeto ni Aṣeṣe. Ipenija ni pe data olumulo wa ninu ifilọlẹ_configuration. Ati nibẹ ni o fa Ansible, bbl Eleyi jẹ awọn boṣewa adayanri ti mo ti o dara ju.

Ti a ba n sọrọ nipa ni awọn amayederun ẹlẹwa, lẹhinna awọn ohun elo bii Packer wa ti o gba aworan yii. Ati lẹhinna Terraform lo orisun data lati wa aworan yii ki o ṣe imudojuiwọn ifilọlẹ_configuration rẹ. Iyẹn ni, ni ọna yii opo gigun ti epo ni pe a kọkọ fa Tracker, lẹhinna fa Terraform. Ati pe ti ikole ba waye, lẹhinna iyipada tuntun waye.

Pẹlẹ o! O ṣeun fun iroyin na! Orukọ mi ni Misha, ile-iṣẹ RBS. O le pe Ansible nipasẹ olupese nigbati ṣiṣẹda kan awọn oluşewadi. Ansible tun ni koko kan ti a npe ni akojo-ọja ti o ni agbara. Ati pe o le kọkọ pe Terraform, lẹhinna pe Ansible, eyiti yoo gba awọn orisun lati ipinle ati ṣiṣẹ. Kini o dara julọ?

Awọn eniyan lo mejeeji pẹlu aṣeyọri dogba. O dabi si mi pe akojo-ọrọ agbara ni Ansible jẹ ohun ti o rọrun, ti a ko ba sọrọ nipa ẹgbẹ autoscaling. Nitoripe ninu ẹgbẹ autoscaling a ti ni ohun elo irinṣẹ tiwa, eyiti a pe ni ifilọlẹ_configuration. Ni ifilọlẹ_configuration a ṣe igbasilẹ ohun gbogbo ti o nilo lati ṣe ifilọlẹ nigba ti a ṣẹda awọn orisun tuntun kan. Nitorinaa, pẹlu Amazon, lilo akojo-ọja ti o ni agbara ati kika faili Terraform ts, ni ero mi, jẹ apọju. Ati pe ti o ba lo awọn irinṣẹ miiran nibiti ko si imọran ti “ẹgbẹ autoscaling”, fun apẹẹrẹ, o lo DigitalOcean tabi olupese miiran nibiti ko si ẹgbẹ adaṣe, lẹhinna o yoo ni lati fa API pẹlu ọwọ, wa awọn adirẹsi IP, ṣẹda a ìmúdàgba inventory faili , ati Ansible yoo tẹlẹ rìn kiri nipasẹ o. Iyẹn ni, fun Amazon ifilọlẹ_configuration wa, ati fun ohun gbogbo miiran ni akojo-ọja ti o ni agbara.

orisun: www.habr.com

Fi ọrọìwòye kun