Suia mai Terraform i CloudFormation - ma fa'anoanoa ai

O le fa'atusaina o atina'e e fai ma fa'ailoga i se fa'asologa o tusitusiga e toe fa'afo'isia ose faiga sili ona faigofie mo faiga e le mana'omia ai le fa'atosinaina o isumu. O lenei faiga e iai lona igoa- Atinaʻe pei o Faʻamatalaga, ma e oʻo mai i le taimi nei e lua meafaigaluega taʻutaʻua e faʻatino ai, aemaise ile AWS: Terraform и CloudFormation.

Suia mai Terraform i CloudFormation - ma fa'anoanoa ai
Fa'atusatusa le poto masani i Terraform ma CloudFormation

Ae lei oo mai i maʻilili (ia Amazon Jr.) Sa ou galue i le amataga e tasi ma faʻaaogaina Terraform mo le tolu tausaga. I le nofoaga fou, na ou faʻaaogaina foi Terraform ma loʻu malosi atoa, ona tuleia lea e le kamupani le suiga i mea uma a la Amazon, e aofia ai CloudFormation. Ua ou faia ma le filiga faiga sili ona lelei mo ia mea uma e lua, ma ua ou faaaogaina meafaigaluega uma e lua i le lavelave tele, faagaioiga lautele o galuega. Mulimuli ane, ina ua uma ona mafaufau loloto i aafiaga o le malaga mai Terraform i CloudFormation, na ou talitonu o Terraform atonu o le filifiliga sili lea mo le faalapotopotoga.

Terraform Mata'utia

Polokalama Beta

Terraform e leʻi faʻasalalauina le version 1.0, o se mafuaaga lelei e le faʻaaogaina ai. Ua tele suiga talu mai le taimi muamua na ou faʻataʻitaʻiina ai aʻu, ae i tua terraform apply e masani ona malepe pe a maeʻa ni faʻafouga pe naʻo le maeʻa o ni nai tausaga o faʻaoga. Ou te fai atu "ua ese mea uma i le taimi nei," ae ... o le mea lena e foliga mai e fai mai tagata uma, e leai? E i ai suiga e le fetaui ma lomiga muamua, e ui lava e talafeagai, ma e oʻo lava i le lagona e pei o le syntax ma abstractions o faleoloa punaoa ua avea nei ma mea tatou te manaʻomia. E foliga mai ua sili atu le lelei o le meafaigaluega, ae ... :-0

I le isi itu, ua faia e le AWS se galuega lelei i le faatumauina o le fetaui i tua. Atonu e mafua ona o a latou auaunaga e masani ona faʻataʻitaʻiina maeʻaeʻa i totonu o le faʻalapotopotoga ma naʻo le toe faʻaigoaina, faʻasalalau. O lea la, “sa latou taumafai malosi” o se faamatalaga faatauvaa. O le fa'atumauina o feso'ota'iga i tua ma API mo se faiga e 'ese'ese ma lavelave e pei o le AWS e matua'i faigata lava. So'o se tasi na tatau ona tausia API fa'alaua'itele o lo'o fa'aaogaina lautele e pei ona i ai e tatau ona malamalama i le faigata o le faia mo le tele o tausaga. Ae o le amio a CloudFormation, i loʻu manatua, e leʻi suia lava i le tele o tausaga.

Feiloai le vae... o se pulufana

E pei ona ou iloa, tape le punaoa tagata i fafo CloudFormation faaputuga mai lau faaputuga CF e le mafai. E tutusa foi le moni i Terraform. E fa'atagaina oe e fa'aulufale mai punaoa o iai i lau fa'aputuga. O le galuega e mafai ona fai mai e ofoofogia, ae o le mana tele e sau ai le tiute tele. E na'o lou mana'omia o le fa'aopoopoina o se puna'oa i le fa'aputuga, ma a'o e galue ma lau fa'aputuga, e le mafai ona e tape pe suia lenei punaoa. I se tasi aso na toe foi ai. I se tasi aso i luga o le Twitch, na faʻafuaseʻi ona faʻaulufaleina mai e se tasi le vaega o le saogalemu o le AWS a se isi tagata i totonu o latou lava faʻaputuga Terraform ae le o se mea leaga. Na ou ulufale i le tele o poloaiga ma ... o le vaega saogalemu (faʻatasi ai ma felauaiga o loʻo sau) na mou atu.

Terraform Sili

Toe faʻaleleia mai setete le atoatoa

O nisi taimi e le mafai ai e le CloudFormation ona suia atoa mai le tasi setete i le isi. I le taimi lava e tasi, o le a ia taumafai e toe foi i le muamua. E faanoanoa ona e le mafai i taimi uma lenei mea. E mafai ona fai si taufaafefe le debug mea na tupu mulimuli ane - e te le iloa pe o le a fiafia CloudFormation o loʻo faʻafefe - e tusa lava pe na o le toe faaleleia. Pe o le a mafai pe leai foi e toe foi atu i le setete muamua, na te matua le iloa pe faapefea ona fuafua ma, e ala i le faaletonu, tautau mo itula e faatalitali mo se vavega.

Terraform, i le isi itu, e foliga mai e toe faʻaleleia mai suiga le manuia e sili atu ma le faʻalelei ma ofoina atu meafaigaluega faʻapipiʻi.

Suiga manino i le tulaga o pepa

“Ua lelei, load balancer, ua e sui. Ae faapefea?"

—enisinia popole, sauni e oomi le faamau “talia”.

O nisi taimi ou te manaʻomia le faia o ni togafiti ma le paleni o uta i le CloudFormation stack, e pei o le faʻaopoopoina o se numera o le taulaga poʻo le suia o se vaega saogalemu. ClouFormation fa'aali suiga leaga. O aʻu, i luga o pine ma nila, siaki faʻasefulu taimi le faila yaml ia mautinoa ou te leʻi tapeina se mea e manaʻomia ma ou te leʻi faʻaopoopoina se mea e le manaʻomia.

Terraform e sili atu ona manino i lenei tulaga. O nisi taimi e matua manino lava o ia (faitau: le manaia). O le mea e lelei ai, o le lomiga lata mai e aofia ai le faʻaleleia atili o le faʻaaliga o suiga ina ia mafai nei ona e vaʻaia tonu le suiga.

Faʻaliega

Tusi polokalame i tua.

O le tu'u sa'o, o le uiga sili ona taua o polokalama umi-ola o le mafai lea ona fa'afetaui i suiga. Tusi so'o se polokalame i tua. O le tele o taimi ou te faia ai mea sese e ala i le faia o se auaunaga "faigofie", ona amata loa lea ona faʻapipiʻi mea uma i totonu o le CloudFormation poʻo le Terraform stack. Ma o le mea moni, masina mulimuli ane na faʻaalia ai na ou malamalama i mea uma e sese, ma o le auaunaga e leʻi faigofie! Ma o lea e tatau ona ou talepeina se faaputuga tele i ni vaega laiti. A e galue ma CloudFormation, e mafai ona faia lenei mea e ala i le toe faia muamua o le faaputuga o loʻo i ai, ma ou te le faia lenei mea i aʻu faʻamaumauga. O le Terraform, i le isi itu, na mafai ai ona vavae le faaputuga ma vaevaeina i lalo i ni vaega laiti e sili atu ona malamalama.

Modules i le git

Fa'asoa le Terraform code i luga o le tele o faaputuga e sili atu le faigofie nai lo le fa'asoaina o le CloudFormation code. Faatasi ai ma Terraform, e mafai ona e tuʻuina lau code i totonu o le git repository ma faʻaogaina e faʻaaoga ai le faʻaogaina o le faʻasologa o le semantic. So'o se tasi e avanoa i lenei fale teu oloa e mafai ona toe fa'aoga le code fa'asoa. E tutusa le CloudFormation o le S3, ae e leai ni faʻamanuiaga tutusa, ma e leai se mafuaʻaga e tatau ai ona tatou lafoaʻia le git mo le S3.

Na fa'atuputeleina le fa'alapotopotoga ma o le agava'a e fa'asoa fa'aputu masani na o'o atu i se tulaga mata'utia. Terraform e fa'afaigofie uma ma fa'anatura, ae o le CloudFormation o le a fa'aoso oe i totonu o pa'u ae e te le'i maua se mea fa'apenei e galue.

Gaoioiga e pei o le code

“Sei o tatou tusia ma ua lelei.”

-o se inisinia 3 tausaga aʻo leʻi faia le uila Terraform.

A oʻo mai i le atinaʻeina o polokalama, Go poʻo se Java polokalame e le naʻo le code.

Suia mai Terraform i CloudFormation - ma fa'anoanoa ai
Code e pei ole Code

O loʻo iai foʻi atinaʻe o loʻo galue ai.

Suia mai Terraform i CloudFormation - ma fa'anoanoa ai
Atinaʻe pei o Faʻamatalaga

Ae o fea e sau ai o ia? E fa'afefea ona mata'ituina? O fea e nofo ai lau code? E mana'omia e le au atia'e se fa'atagaga avanoa?

Suia mai Terraform i CloudFormation - ma fa'anoanoa ai
Gaoioiga e pei o Code

O le avea ma se tagata e faia polokalame e le na'o le tusiaina o tulafono laiti.

AWS e le na'o le tasi: masalo e te fa'aogaina isi kamupani. SignalFx, PagerDuty poʻo Github. Masalo o loʻo i ai lau 'auʻaunaga Jenkins i totonu mo CI / CD poʻo se laupapa faʻapipiʻi Grafana i totonu mo le mataʻituina. Infra as Code e filifilia mo mafuaaga eseese, ma e tutusa uma le taua mo mea uma e fesoʻotaʻi ma polokalama.

Ina ua ou galue i Twitch, sa matou faatelevaveina auaunaga i totonu o le Amazon's mixed embedded ma AWS system. Na matou fa'atosina ma lagolagoina le tele o microservices, fa'ateleina tau o galuega. O talanoaga na faia e pei o lenei:

  • Я: Malae, o le tele naua o taga e ova ai le tasi microservice. E tatau ona ou faʻaogaina lenei lapisi e fatu ai se tala AWS (na matou o i 2 tala i luga auaunaga laiti), ona sosoo ai lea ma le mea lenei mo le setiina o faʻasalalauga, o le tasi lea mo se fale teu oloa, ma le tasi lea mo se lisi imeli, ona sosoo ai lea ma le tasi ...
  • Ta'ita'i: Sei o tatou tusia ma lelei.
  • Я: Lelei, ae o le tusitusiga lava ia o le a suia. Matou te manaʻomia se auala e siaki ai o nei mea uma na fausia i totonu ole Amazon gizmos o loʻo faʻafouina.
  • Ta'ita'i: Malie le leo. Ma o le a matou tusia se tala mo lenei mea.
  • Я: Matagofie! Ma atonu o le a manaʻomia pea le faʻasologa o le faʻasologa. Pe na te taliaina ea i latou?
  • Ta'ita'i: Tuu atu ia te ia e ave i le mea e alu i ai!
  • Я: E ono suia le faagasologa ma o le a leiloa le fetaui i tua. E mana'omia nisi ituaiga fa'atonuga fa'aliliuga.
  • Ta'ita'i: Manaia le manatu!
  • Я: Meafaigaluega e mafai ona suia ma le lima, i totonu o le faʻaoga faʻaoga. Matou te manaʻomia se auala e siaki ai ma faʻaleleia lenei mea.

… 3 tausaga mulimuli ane:

  • Ta'ita'i: Ma sa matou maua le terraform.

O le uiga o le tala o le: e tusa lava pe oe ulu i luga o mulivae i mea uma Amazon, o loʻo e faʻaaogaina pea se mea e le mai le AWS, ma o nei 'auʻaunaga o loʻo i ai se setete e faʻaaogaina se gagana faʻatulagaina e faʻatumauina ai lena setete i le sync.

CloudFormation lambda vs git modules terraform

lambda o le fofo a CloudFormation i le mataupu faʻapitoa masani. Faatasi ai ma lambda e te mafaia faia macros poʻo puna'oa fa'aoga. O lenei auala e faʻaalia ai faʻalavelave faʻapitoa e le o iai i le Terraform's semantic versioning of git modules. Mo aʻu, o le faʻafitauli sili ona faigata o le puleaina o faʻatagaga mo nei tagata uma lambdas (ma o le tele o faʻamatalaga AWS). O le isi faʻafitauli taua o le "o le a le mea na muamua, le moa poʻo le fuamoa?" faʻafitauli: e fesoʻotaʻi ma le lambda code. O lenei galuega lava ia o atinaʻe ma tulafono, ma e manaʻomia e ia lava le mataʻituina ma faʻafouga. O le fao mulimuli i totonu o le pusa maliu o le faigata lea i le faʻafouina o suiga o lambda code; sa tatau foi ona matou mautinoa o le fa'aputuga gaioiga e aunoa ma se fa'atonuga tuusa'o e le suia i le va o ta'avale.

Ou te manatua le taimi na ou manaʻo ai e fai se faʻataʻitaʻiga canary mo le siosiomaga Elastic Beanstalk faʻatasi ai ma se paleni faʻatatau masani. O le mea sili ona faigofie e fai o le faia lea o se faʻapipiʻi lona lua mo le EB i tafatafa o le gaosiga o le siosiomaga, ma faia se laasaga atili: faʻapipiʻi le vaega faʻapipiʻiina o canary auto-scaling ma le faʻapipiʻiina LB i totonu o le siosiomaga gaosiga. Ma talu ai ona faʻaaogaina e Terraform ASG beantalk e fai ma fa'ai'uga, e mana'omia 4 laina fa'aopoopo o le code i Terraform. Ina ua ou fesili pe i ai se tali tutusa i CloudFormation, na latou faasino mai ia te aʻu i se faleoloa git atoa ma se paipa faʻapipiʻiina ma mea uma, mo le lelei o se mea e le lelei 4 laina o Terraform code e mafai ona faia.

E iloa lelei le tafetafea

Ia mautinoa o mea moni e fetaui ma faʻamoemoega.

Su'esu'ega tafetafea o se fa'agaioiga malosi tele e pei o fa'ailoga fa'ailoga aua e fesoasoani e fa'amautinoa e fetaui le mea moni ma fa'amoemoega. E avanoa i CloudFormation ma Terraform. Ae a'o fa'atupula'ia le fa'aputuga o le gaosiga, o le su'esu'eina o le tafetafea i CloudFormation na maua ai le tele ma le tele o fa'amatalaga sese.

Fa'atasi ai ma Terraform e sili atu lau fa'amata'u fa'aolaola matau mo le su'esu'eina o le tafetafea. Mo se faʻataʻitaʻiga, e te ulufale i le poloaiga ignore_changes tuusa'o i le fa'auigaga o galuega a le ECS pe afai e te mana'o e le amana'ia suiga i se fa'auigaga o galuega fa'apitoa e aunoa ma le le amana'iaina o suiga i lau fa'agaioiga atoa o le ECS.

CDK ma le lumanaʻi o CloudFormation

O le CloudFormation e faigata ona faʻatautaia i luga ole lapopoa, faʻasologa o mea tetele. O le tele o nei faigata e iloa ma o le meafaigaluega e manaʻomia mea e pei o aws-cdk, o se faʻavae mo le faʻamalamalamaina o atinaʻe o ao i le faʻailoga ma faʻatautaia e ala i le AWS CloudFormation. O le a manaia le vaʻai pe o le a le lumanaʻi mo aws-cdk, ae o le a faigata ona tauva ma isi malosi o Terraform; e fa'afou le CloudFormation, e mana'omia suiga o le lalolagi.

Ina ia le faʻanoanoa ai Terraform

O le mea lea o le "infrastructure as a code", ae le o le "as a text".

O loʻu manatu muamua o Terraform sa fai si leaga. Ou te manatu na ou le malamalama i le auala. Toeitiiti lava o inisinia uma latou te manatu i ai o se faʻasologa o tusitusiga e manaʻomia ona faʻaliliuina i mea tetele e manaʻomia. AUA LE FAIA LENEI ALA.

O le moni o le atinaʻeina o polokalama lelei e faʻaoga foi i Terraform.

Ua ou vaai i le tele o faiga na faʻaaogaina e fatu ai tulafono lelei e le amanaʻia i Terraform. Ua e su'esu'e mo le tele o tausaga e avea ma se fai polokalame lelei. Aua e te fiu i lenei aafiaga ona o loo e galue ma Terraform. O mea moni o le atina'e lelei o polokalame e fa'atatau ile Terraform.

E fa'afefea ona le fa'amauina le code?

Ua ou va'ai i fa'aputuga tetele o Terraform e matua'i leai ni fa'amaumauga. E fa'afefea ona e tusia fa'ailoga i itulau - e matua leai lava ni fa'amaumauga? Fa'aopoopo fa'amaumauga e fa'amatala ai lau code Terraform (fa'amamafa i le upu "code"), aisea e taua tele ai lenei vaega, ma mea e te faia.

E fa'afefea ona matou fa'atinoina auaunaga sa avea muamua ma galuega tele ()?

Ua ou vaʻai i faʻapipiʻi faʻapipiʻi faigata tele o Terraform o loʻo tuʻuina atu o se module tasi. Aisea tatou te le fa'aogaina ai polokalame i lenei auala? Aisea tatou te vaevaeina ai galuega tetele i galuega laiti? O tali tutusa e fa'atatau ile Terraform. Afai e tele tele lau module, e tatau ona e vaevaeina i lalo i ni vaega laiti.

E le o fa'aogaina e lau kamupani faletusi?

Ua ou vaʻai i le faʻafefea e inisinia, viliina se galuega fou e faʻaaoga ai Terraform, kopi faʻavalevalea-faʻapipiʻi pusi tetele mai isi poloketi ia latou lava, ona faʻataʻitaʻi lea ma i latou seia amata ona galue. E te galue fa'apenei i le "tau" code i lau kamupani? E le gata ina matou faaaogaina faletusi. Ioe, e le o mea uma e tatau ona avea ma faletusi, ae o fea tatou te leai ni faletusi faʻasoa i mataupu faavae?!

E te le o fa'aogaina le PEP8 po'o le gofmt?

O le tele o gagana o lo'o i ai se fa'atulagaga masani, talia fa'atulagaina. I le Python o le PEP8 lea. I Go - gofmt. Terraform ei ai lona lava: terraform fmt. Fiafia i ai mo lou soifua maloloina!

E te fa'aogaina le React e aunoa ma le iloaina o le JavaScript?

Terraform modules e mafai ona faʻafaigofieina nisi o vaega o atinaʻe lavelave e te fatuina, ae e le o lona uiga e le mafai ona e faʻaogaina. E te mana'o e fa'aoga sa'o le Terraform e aunoa ma le malamalama i punaoa? Ua e malaia: o le a mavae atu le taimi, ma o le a le mafai lava ona e pulea Terraform.

O e fa'ailogaina i tui nofofua po'o tui fa'alagolago?

O le tui fa'alagolago ose fa'ata'ita'iga sili ona lelei mo le atina'eina o polokalama ma e sili atu nai lo tagata nofofua. E fa'apefea ona aoga lenei mea i Terraform? Ua ou vaai i Terraform modules e faʻalagolago ile setete mamao. Nai lo le tusiaina o modules e toe maua mai ai le setete mamao, tusi se module e ave ai faʻamau. Ona pasi atu lea o vaega nei i le module.

Pe o faia lelei e au faletusi ni mea se sefulu po o se mea lelei e tasi?

O faletusi e sili ona lelei, o faletusi ia e taulaʻi i se tasi galuega e sili ona lelei. Nai lo le tusiaina o modules Terraform tetele e taumafai e fai mea uma i le taimi e tasi, fausia vaega o latou e faia lelei se mea e tasi. Ona tuufaatasi lea pe a manaomia.

E fa'afefea ona e faia suiga i faletusi e aunoa ma le fetaui i tua?

O se module masani Terraform, e pei o se faletusi masani, e manaʻomia le faʻafesoʻotaʻi suiga i tagata faʻaoga e aunoa ma le fetaui i tua. E ita pe a tutupu nei suiga i faletusi, ma e pei lava o le ita pe a faia suiga e le o tua i tua i Terraform modules. E fautuaina e faʻaoga git tags ma semver pe a faʻaaoga Terraform modules.

O fa'agaoioi lau 'au'aunaga gaosiga i lau komepiuta feavea'i po'o se nofoaga autu o fa'amaumauga?

Hashicorp ei ai meafaigaluega pei ao mata'utia e taufetuli lau terraform. O nei 'au'aunaga fa'apitoa e fa'afaigofie ai ona fa'atautaia, su'e tusi, ma fa'amaonia suiga i fa'afanua.

E te le tusia ni su'ega?

E iloa e inisinia e manaʻomia le faʻataʻitaʻiina o le code, ae e masani ona galo ia i latou le suʻega pe a galulue ma Terraform. Mo atina'e, ua tumu lenei mea i taimi taufaa'ole'ole. O laʻu fautuaga o le "suʻega" poʻo le "fausia faʻataʻitaʻiga" faʻapipiʻi e faʻaaoga ai modules e mafai ona faʻapipiʻi saʻo mo suʻega i le taimi o le CI / CD.

Terraform ma microservices

O le ola ma le oti o kamupani microservices e faʻalagolago i le saoasaoa, faʻafouga, ma le faʻalavelaveina o fale faigaluega microservice fou.

O le itu sili ona leaga e fesoʻotaʻi ma microservice architectures, ma e le mafai ona faʻaumatia, e fesoʻotaʻi ma le galuega, ae le o le code. Afai e te manatu o Terraform e na o se auala e faʻaautomatika ai naʻo le vaega o atinaʻe o le microservices architecture, o lona uiga o loʻo e misia le aoga moni o le faiga. O lea ua uma mea uma e pei o le code.

puna: www.habr.com

Faaopoopo i ai se faamatalaga