{"id":93459,"date":"2020-09-07T07:43:22","date_gmt":"2020-09-07T05:43:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g"},"modified":"2020-09-07T07:43:22","modified_gmt":"2020-09-07T05:43:22","slug":"opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g","title":{"rendered":"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/7d032c58748e76083b69df4ea38c3285.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Paljud tunnevad ja kasutavad Terraformi igap\u00e4evases t\u00f6\u00f6s, kuid parimad tavad on endiselt v\u00e4lja kujunemata. Igal meeskonnal on oma l\u00e4henemisviiside ja meetodite v\u00e4ljam\u00f5tlemine.<\/p>\n<p><\/p>\n<p>Teie infrastruktuur algab t\u00f5en\u00e4oliselt lihtsast: paar ressursi + m\u00f5ned arendajad. Aja jooksul kasvab see igas suunas. Te leiutate viise, kuidas ressursside jaoks Terraformi mooduleid r\u00fchmitada, korraldada koodi kaustadesse, ja mis siin \u00fcldse valesti minna ei saa? (tuntud viimased s\u00f5nad)<\/p>\n<p><\/p>\n<p>Aeg m\u00f6\u00f6dub ja te tunnete, et teie infrastruktuur on nagu teie uus lemmikloom, aga miks? Teid h\u00e4irivad seletamatud muutused infrastruktuuris, te pelgate infrastruktuurile ja koodile l\u00e4heneda \u2014 tulemuseks on see, et te viivitate uue funktsionaalsuse rakendamisega v\u00f5i halvendate kvaliteeti\u2026<\/p>\n<p><\/p>\n<p>P\u00e4rast kolme aastat AWS-i jaoks Terraformi kogukonna moodulite haldamist Githubis ja pikaajalist Terraformi tootmises hoidmist, on Anton Bab\u0435\u043d\u043a\u043e valmis jagama oma kogemusi: kuidas kirjutada TF-mooduleid, et tulevikus ei oleks valu.<\/p>\n<p><\/p>\n<p>Esitluse l\u00f5puks saavad osalejad paremini tuttavaks Terraformi ressursihalduse p\u00f5him\u00f5tetega, seotud parimate praktikatega moodulite kohta ning m\u00f5ningate pideva integreerimise p\u00f5him\u00f5tetega, mis on seotud infrastruktuuri haldamisega.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><strong>K\u00e4esoleva artikli sisu:<\/strong> <em>Tahan m\u00e4rkida, et see ettekande kuup\u00e4ev on novembrist 2018 \u2014 sellest on m\u00f6\u00f6dunud juba 2 aastat. Ettekandes arutatud Terraformi versioon 0.11 ei ole enam toetatud. Viimase kahe aasta jooksul on ilmunud 2 uut versiooni, kus on palju uuendusi, t\u00e4iustusi ja muudatusi. Palun p\u00f6\u00f6rake sellele t\u00e4helepanu ja kontrollige dokumentatsiooni.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/2387cb9ad6bf95b85b28090c9f18dd63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lingid:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/terraform-community-modules\">terraform-community-modules<\/a><\/noindex> + <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/terraform-aws-modules\">terraform-aws-modules<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/antonbabenko\/pre-commit-terraform\">antonbabenko\/pre-commit-terraform<\/a><\/noindex> \u2014 automaatne koodi ja dokumentatsiooni vormindamine<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/antonbabenko\/terrapin\">antonbabenko\/terrapin<\/a><\/noindex> \u2014 Terraformi moodulite generaator (t\u00f6\u00f6s)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/antonbabenko\/modules.tf-lambda\">antonbabenko\/modules.tf-lambda<\/a><\/noindex> \u2014 Terraformi koodi generaator visuaalsetest diagrammidest (t\u00f6\u00f6s)<\/li>\n<li>www.terraform-best-practices.com<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@anton.babenko\">medium.com\/@anton.babenko<\/a><\/noindex> (Uued postitused on minu isiklikul veebilehel www.antonbabenko.com\/)<\/li>\n<li>@antonbabenko \u2014 Twitter ja palju erinevaid Slacke<\/li>\n<\/ul>\n<p><\/p>\n<p>Minu nimi on Anton Babenko. M\u00f5ned teist on ilmselt kasutanud koodi, mida ma olen kirjutanud. Olen n\u00fc\u00fcd sellest r\u00e4\u00e4kides kindlam kui kunagi varem, sest mul on juurdep\u00e4\u00e4s statistikale. <\/p>\n<p><\/p>\n<p>Ma tegelen Terraformiga ja olen aktiivne osaleja ning panustaja paljudele avatud l\u00e4htekoodiga projektidele, mis on seotud Terraformi ja Amazoni teenustega alates 2015. aastast. <\/p>\n<p><\/p>\n<p>Umbes sellest ajast olen kirjutanud piisavalt koodi, et esitada see huvitaval viisil. Ja sellest ma p\u00fc\u00fcan n\u00fc\u00fcd r\u00e4\u00e4kida.<\/p>\n<p><\/p>\n<p>R\u00e4\u00e4gin Terraformi keerukusest ja kasutusspetsiifikast. Kuid tegelikult ei ole see HighLoad'i teema. Ja n\u00fc\u00fcd te m\u00f5istate, miks. <\/p>\n<p><\/p>\n<p>Aja jooksul hakkasin kirjutama Terraformi mooduleid. Kasutajad esitasid k\u00fcsimusi, ma need \u00fcmber kirjutasin. Siis kirjutasin erinevaid utiliite koodi vormindamiseks pre-commit hooki abil jne.<\/p>\n<p><\/p>\n<p>Oli palju huvitavaid projekte. Mulle meeldib tegeleda koodigeneratsiooniga, sest mulle meeldib, et arvuti teeks minu ja programmeerija eest j\u00e4rjest rohkem t\u00f6\u00f6d, mist\u00f5ttu t\u00f6\u00f6tan n\u00fc\u00fcd Terraformi koodi generaatori kallal visuaalsetest diagrammidest. V\u00f5ib-olla on m\u00f5ned teist neid n\u00e4inud. Need on ilusad kastid nooltega. Ja ma arvan, et on fantastiline, kui saab vajutada nuppu 'Eksport' ja saada see k\u00f5ik koodina. <\/p>\n<p><\/p>\n<p>Ma olen Ukrainast. Olen elanud Norra jaoks palju aastaid. <\/p>\n<p><\/p>\n<p>Samuti on selle ettekande jaoks teavet kogutud inimestelt, kes tunnevad mu nime ja leiavad mind sotsiaalmeedias. Mul on peaaegu alati sama kasutajanimi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/67928ae08257a7ab188322f3cf10a307.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/github.com\/terraform-aws-modules\">https:\/\/github.com\/terraform-aws-modules<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/registry.terraform.io\/namespaces\/terraform-aws-modules\">https:\/\/registry.terraform.io\/namespaces\/terraform-aws-modules<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Nagu ma mainisin, olen ma Terraform AWS moodulite peamine hooldaja, mis on \u00fcks suurimaid hoidlaid GitHubis, kus majutame mooduleid k\u00f5ige levinumate \u00fclesannete jaoks: VPC, Autoscaling, RDS.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/5ed2e9b0638aec2aacb39af72a9dcfc1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja see, mida te praegu kuulete, on k\u00f5ige-k\u00f5ige alus. Kui te kahtlete, et m\u00f5istate, mis on Terraform, on parem veeta aega kuskil mujal. Siin on palju tehnilisi termineid. Ja esitluse taset ei ole ma h\u00e4benenud maksimaalseks kuulutada. See t\u00e4hendab, et ma saan r\u00e4\u00e4kida, kasutades k\u00f5iki v\u00f5imalikke termineid ilma eriliku seletamiseta. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/f6508b864fc723faa4e9860f652ff420.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraform ilmus 2014. aastal kui utiliit, mis v\u00f5imaldas kirjutada, kavandada ja hallata infrastruktuuri kui koodi. Siin on v\u00f5tmekontseptsioon 'infrastruktuur kui kood'.<\/p>\n<p><\/p>\n<p>Kogu dokumentatsioon, nagu ma \u00fctlesin, on kirjutatud <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/\">terraform.io<\/a><\/noindex>. Loodan, et enamik on selle saidiga tuttav ja on dokumentatsiooni l\u00e4bi lugenud. Kui nii, siis olete \u00f5iges kohas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c1efa6a90819f89ed97a7d65d73eca2c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii n\u00e4eb v\u00e4lja tavaline Terraformi konfiguratsioonifail, kus me esmalt defineerime m\u00f5ned muutujad. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/1da470ec7aae5750580bcfc39cb52523.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Antud juhul m\u00e4\u00e4ratleme 'aws_region'. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/64bae52f1145d3466b2e144f7507758d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seej\u00e4rel kirjeldame, milliseid ressursse soovime luua. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/f1add85177c56dd1cc2a8ce68a15c35c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e4ivitame m\u00f5ned k\u00e4sud, sealhulgas 'terraform init', et alla laadida s\u00f5ltuvused ja pakkujad. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/7e592e62f5666c111e1962f00b9cff9f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja k\u00e4ivitame k\u00e4su 'terraform apply', et kontrollida, kas m\u00e4\u00e4ratud konfiguratsioon vastab loodud ressurssidele. Kuna me ei ole varem midagi loonud, pakub Terraform meile nende ressursside loomist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8bac034477578afa59bb64db106cea2b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kinnitamos selle. Nii loome bucket'i nimega seasnail.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/2b945542cc62066367de1695afb10ec8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On ka mitu sarnast utiliiti. Paljud teist, kes kasutavad Amazoni, tunnevad AWS CloudFormation'i v\u00f5i Google Cloud Deployment Manager'i, v\u00f5i Azure Resource Manager'i. Igal neist on oma rakendus ressursside haldamiseks nende avalike pilveteenuste pakkujate seas. Terraform on eriti kasulik, kuna see v\u00f5imaldab hallata rohkem kui 100 pakkujat. (Rohkem <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/providers\/index.html\">siin<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c2d976e74a17cf1f16af9f1bc29a3b32.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraformi algseteks eesm\u00e4rkideks olid:<\/p>\n<p><\/p>\n<ul>\n<li>Terraform annab \u00fchtse \u00fclevaate ressurssidest.<\/li>\n<li>See v\u00f5imaldab toetada k\u00f5iki kaasaegseid platvorme. <\/li>\n<li>Terraform on alguses m\u00f5eldud utiliidina, mis v\u00f5imaldab infrastruktuuri turvaliselt ja etteennustatavalt muuta. <\/li>\n<\/ul>\n<p><\/p>\n<p>2014. aastal k\u00f5las s\u00f5na \u201eetteennustatav\u201d selles kontekstis v\u00e4ga ebatavaliselt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/262def09715fa0249b5033416fd3c4e5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraform on universaalne t\u00f6\u00f6riist. Kui teil on API, siis saate hallata k\u00f5ike:<\/p>\n<p><\/p>\n<ul>\n<li>Saate kasutada rohkem kui 120 teenusepakkujat k\u00f5ike, mis teile meeldib, juhtimiseks. <\/li>\n<li>N\u00e4iteks saate Terraformi kasutada GitHub'i hoidlate ligip\u00e4\u00e4su seadistamiseks. <\/li>\n<li>Saate isegi Jira bug'e luua ja sulgeda.<\/li>\n<li>Saate hallata New Relic'i m\u00f5\u00f5dikuid. <\/li>\n<li>V\u00f5ite isegi Dropboxis faile luua, kui v\u00e4ga soovite. <\/li>\n<\/ul>\n<p><\/p>\n<p>K\u00f5ik see saavutatakse Terraform'i teenusepakkujate abil, kellel on avatud API, mis on kirjutatud Go keeles.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c6d9023bdb5f622c383f8a61765825f3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oletame, et hakkasime Terraformi kasutama, lugesime m\u00f5nda dokumentatsiooni saidilt, vaatasime videot ja hakkasime kirjutama main.tf, nagu ma eelmistel slaididel n\u00e4itasin. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/1f7da2e6a9b8171945f8b5783b8132f1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja teil on k\u00f5ik suurep\u00e4rane, teil on fail, mis loob VPC.<\/p>\n<p><\/p>\n<p>Kui soovite luua VPC, siis m\u00e4\u00e4rate umbes need 12 rida. Kirjeldage, millises piirkonnas soovite luua, millist cidr_blocki IP-aadresse kasutada. Ja k\u00f5ik. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/ddaf4d884a1e4b2e6b07a713b2154521.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Muidugi, projekt kasvab j\u00e4rk-j\u00e4rgult. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/e0a07abdf139582b50b4f117923cc2a0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja te lisate sinna hulga uusi asju: ressursse, andmeallikaid, te integreerite uusi teenusepakkujad, \u00fchel hetkel soovite kasutada Terraformi, et hallata kasutajaid oma GitHubi kontol jne. Te v\u00f5ite soovida kasutada erinevaid DNS-teenusepakkujaid, \u00fchendada erinevaid asju. Terraform muudab selle lihtsaks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8f5e9ea326e1a923631da3e434810bc4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadakem j\u00e4rgmist n\u00e4idet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8f679abff1c007372dcdf2e611708b7a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Te lisate j\u00e4rk-j\u00e4rgult internet_gateway, sest soovite, et teie VPC ressursid p\u00e4\u00e4seksid internetti. See on hea m\u00f5te. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/6ed039e5d55b76f5189bffecf473b9c0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00f5puks n\u00e4eb main.tf v\u00e4lja selline:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/ab739b16e0cf3ef88f84ec082020a967.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on main.tf \u00fclemine osa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/fea16b3d0ac6701a1503f708e9b17f63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on main.tf alumine osa.<\/p>\n<p><\/p>\n<p>Siis lisate subnet'i. Sel hetkel, kui soovite lisada NAT-gatewayd, marsruute, marsruuditabeleid ja hulga teisi subnet'e, ei ole teil enam 38 rida, vaid umbes 200-300 rida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/9706450edecd5111c8adbaf01c86cdcf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See t\u00e4hendab, et teie main.tf fail kasvab j\u00e4rk-j\u00e4rgult. Ja \u00fcsna sageli paneb inimesed k\u00f5ik \u00fchte faili kokku. main.tf-sse tekib 10-20 Kb. Kujutage ette, et 10-20 Kb on tekstiline sisu. Ja k\u00f5ik on k\u00f5ikide asjadega seotud. Sellega muutub j\u00e4rk-j\u00e4rgult keeruliseks tegutseda. 10-20 Kb on hea kasutusjuhtum, m\u00f5nikord on rohkem. Ja mitte alati ei arva inimesed, et see on halb. <\/p>\n<p><\/p>\n<p>Nagu tavap\u00e4rases programmeerimises, st mitte infrastruktuur kui kood, oleme harjunud kasutama hulka erinevaid klasse, pakette, mooduleid ja gruppeerimisi. Terraform v\u00f5imaldab teha peaaegu sama.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/23d406874406406577dd272b4795899d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Kood kasvab. <\/li>\n<li>S\u00f5ltuvused ressursside vahel kasvavad samuti. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/9fe1a348f4818c6d080a77d862b6232c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja meil tekib suur vajadus. Me m\u00f5istame, et niimoodi elada ei saa. Meie kood muutub \u00fcha mahukamaks. 10-20 Kb ei ole muidugi v\u00e4ga mahukas, kuid r\u00e4\u00e4gime ainult v\u00f5rgustikust, st olete lisanud ainult v\u00f5rguressursid. Me ei ole veel r\u00e4\u00e4kinud rakenduse koormuse tasandist, ES-klastrist, Kubernetesest jne, kuhu on kergesti v\u00f5imalik lisada veel 100 Kb. Kui k\u00f5ik need asjad kirja panna, siis avastate v\u00e4ga kiiresti, et Terraform pakub Terraform-mooduleid.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/15187efbc9d48d1d2069c69b4ef1a491.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraform-moodulid on ise piisav Terraform-konfiguratsioon, mida haldatakse grupina. See on k\u00f5ik, mida on vaja teada Terraform-moodulitest. Need ei ole mingit moodi targad, nad ei luba teil teha keerulisi sidumisi s\u00f5ltuvalt millestki. See j\u00e4\u00e4b arendajate \u00f5lgadele. St see on lihtsalt mingi Terraform-konfiguratsioon, mille te juba olete kirjutanud. Ja saate lihtsalt kutsuda seda kui gruppi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/2c4489dc6da5a4c1f32ffea5218a902a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii p\u00fc\u00fcame m\u00f5ista, kuidas optimeerida meie 10-20-30 Kb koodi. Aja jooksul saame selgemaks, et peame kasutama teatud mooduleid. <\/p>\n<p><\/p>\n<p>Esimene moodulite t\u00fc\u00fcp, millega kokku puutume, on ressursimoodulid. Need ei tea, milline on teie infrastruktuur, milline on teie \u00e4ri, kus ja millised tingimused on. Just need moodulid, mida ma koos avatud l\u00e4htekoodi kogukonnaga haldan, on need, mida me esitleme k\u00f5ige algsemate ehitusplokkidena teie infrastruktuurile. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/3ee9bff297b410615d6f869bd7c05285.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ressursimooduli n\u00e4ide.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/db6ed597ba534cb2cde077049e73f51b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui kutsume ressursimoodulit, n\u00e4itame, kust me peame selle sisu laadima.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c4d8a9608644392c64b2171b25d83ad9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4itame, millist versiooni me tahame laadida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/713359b956e80d43a0ea4f590959739a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me edastame sinna hulga argumente. Ja k\u00f5ik. See on k\u00f5ik, mida peame teadma, kui kasutame seda moodulit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8987d97aabb77238af296776588ba1a7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Paljud arvavad, et kui kasutada viimast versiooni, siis k\u00f5ik on stabiilne. Kuid nii ei ole. Infrastruktuur peab olema versiooniga, peame selgelt vastama, millise versiooni kohalolek on seotud selle v\u00f5i toote osaga. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/bb4be602dd32b89285883643a3df2db5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teie ees on kood, mis asub selle mooduli sees. Moodul security-group. Siin keritakse kuni 640. reale. Security-group ressursi loomine Amazonis erinevates konfiguratsioonides on v\u00e4ga keeruline \u00fclesanne. Lihtsalt security-groupi loomine ja reeglite edastamine ei piisa. See oleks liiga lihtne. Amazonis on miljon erinevat piirangut. N\u00e4iteks, kui te kasutate <strong>VPC endpointi, prefix listi, erinevaid API-sid<\/strong> ja \u00fcritate neid k\u00f5ik koos siduda, siis Terraform ei luba teil seda teha. Samuti ei luba Amazon API seda. Seet\u00f5ttu tuleb kogu see keeruline loogika peita moodulisse ja kasutajale esitada kood, mis n\u00e4eb v\u00e4lja vaid nii. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/e163f0678577325b3629980ec55717f5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kasutajal ei ole vaja teada, kuidas see seestpoolt t\u00f6\u00f6tab. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/36188061b996aa7e559bdfc3afada4a9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine moodulite t\u00fc\u00fcp, mis koosneb ressursimoodulitest, lahendab juba \u00fclesandeid, mis on teie \u00e4ri jaoks rohkem rakendatavad. Tihti on see koht, mis on Terraformi laiendus ja seab mingid ranged v\u00e4\u00e4rtused silte ja ettev\u00f5tte standardeid. Samuti saab sinna lisada funktsioone, mida Terraform praegu ei luba kasutada. See on just praegu. Praegu on versioon 0.11, mis on kohe minevikku j\u00e4\u00e4mas. Kuid siiski on eelprotsessorid, jsonnet, cookiecutter ja k\u00f5ik muud asjad need abimehanismid, mida tuleb t\u00e4ielikuks t\u00f6\u00f6ks kasutada. <\/p>\n<p><\/p>\n<p>Edasi n\u00e4itan ma m\u00f5ned n\u00e4ited sellest. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/96764177d72cd9835f1a007eccedcc05.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Infrastruktuurimoodulit kutsutakse t\u00e4pselt sama viisi j\u00e4rgi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/0e036ea86279651179f18d0c5394442f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00e4\u00e4ratakse allikas, kust sisu laadida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/d33adefbe446554c952d15f8883b73e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Edastatakse hulk v\u00e4\u00e4rtusi, mis antakse sellele moodulile. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/a9bd3ed71cdb0524faec83cb942e4e3d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seej\u00e4rel kutsutakse selle mooduli sees v\u00e4lja hulk ressursimooduleid VPC, rakenduste koormustasakaalu, turvaroheline grupi v\u00f5i Elastic Container Service'i klasstri loomiseks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/df6955fc8f2fe94eac3226966faf987c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On kaks moodulite t\u00fc\u00fcpi. On oluline seda m\u00f5ista, sest enamik teavet, mille ma selles ettekandes kokku kogusin, ei ole dokumentatsioonis kirjas. <\/p>\n<p><\/p>\n<p>Terraformi dokumentatsioon on praegu t\u00f5eliselt probleemne, sest see \u00fctleb lihtsalt, et on olemas sellised funktsioonid, mida saate kasutada. Kuid see ei selgita, kuidas neid funktsioone kasutada ja miks on nende kasutamine parem. Seet\u00f5ttu kirjutab v\u00e4ga suur hulk inimesi midagi, millega hiljem on raske edasi elada.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/619e1bd78d84d966c03d5eedab6671c8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaatame n\u00fc\u00fcd, kuidas neid mooduleid kirjutada. Siis vaatame, kuidas neid k\u00f5nele kutsuda ja kuidas koodiga t\u00f6\u00f6tada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/7bf5015edc75c0a15a8915439a5fc56b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraform Registry \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/registry.terraform.io\/\">https:\/\/registry.terraform.io\/<\/a><\/noindex><\/p>\n<p><\/p>\n<p>N\u00f5uanne nr 0 \u2013 \u00e4ra kirjuta ressursimooduleid. Enamik neist moodulitest on juba sinu eest kirjutatud. Nagu ma \u00fctlesin, on need avatud l\u00e4htekoodiga, nad ei sisalda mingit sinu \u00e4riloogikat, nendes pole k\u00f5vakooditud v\u00e4\u00e4rtusi IP-aadresside, paroolide jne jaoks. Moodul on v\u00e4ga paindlik. Ja see on juba t\u00f5en\u00e4oliselt kirjutatud. Amazonile m\u00f5eldud ressursimooduleid on palju. Umbes 650. Ja enamik neist on hea kvaliteediga. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/b68827405b2202e597852905c6475bc0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Antud n\u00e4ite puhul tuli teie juurde keegi ja \u00fctles: \u00abMa tahan olla v\u00f5imeline hallata andmebaasi. Loo moodul, et saaksin andmebaasi luua\u00bb. Inimene ei tea Amazonist ega Terraformist \u00fcksikasju. Ta lihtsalt \u00fctleb: \u00abMa tahan hallata MSSQLi\u00bb. T. e. me eeldame, et ta kutsub meie mooduli, edastab sinna mootori t\u00fc\u00fcbi, m\u00e4\u00e4rab ajav\u00f6\u00f6ndi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8d3892958b9067c1996b7c9115b97f08.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja inimene ei pea teadma, et selle mooduli sees loome kaks erinevat ressursi: \u00fche MSSQLi jaoks, teise k\u00f5igi \u00fclej\u00e4\u00e4nute jaoks, lihtsalt sellep\u00e4rast, et Terraform 0.11 ei v\u00f5imalda m\u00e4\u00e4rata ajav\u00f6\u00f6ndi v\u00e4\u00e4rtusi valikuliselt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/612b070a57244ac65d4ae6fdce78f218.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja selle mooduli v\u00e4ljundina saab inimene lihtsalt adressi. Ta ei tea, millise andmebaasi, millise ressursiga me k\u00f5ik selle sees loome. See on v\u00e4ga oluline element peitmise osas. Ja see kehtib mitte ainult nende moodulite kohta, mis on avalikud avatud l\u00e4htekoodiga, vaid ka nende moodulite kohta, mida te oma projektides, meeskondades kirjutate. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/bebb8510b0137faf16b4f02320eb69c0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on teine argument, mis on \u00fcsna oluline, kui olete Terraformi kasutanud m\u00f5nda aega. Teil on hoidla, kuhu panete k\u00f5ik oma Terraformi moodulid oma ettev\u00f5tte jaoks. Ja on t\u00e4iesti normaalne, et selle projekti suurus aegade jooksul kasvab \u00fche v\u00f5i kahe megabaidi suuruseks. See on okei. <\/p>\n<p><\/p>\n<p>Kuid probleem seisneb selles, kuidas Terraform neid mooduleid kutsub. N\u00e4iteks, kui kutsete moodulit iga eraldi kasutaja loomiseks, siis Terraform laadib k\u00f5igepealt kogu hoidla ja seej\u00e4rel l\u00e4heb kausta, kus asub konkreetne moodul. Seega laadite iga kord \u00fche megabaidi. Kui haldate 100 v\u00f5i 200 kasutajat, laadite 100 v\u00f5i 200 megabaiti ja siis alles minge sinna kausta. Loomulikult ei soovi te iga kord, kui vajutate \"Terraform init\", laadida terve hunniku asju. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/eee24c4c8628cf1aaf06d2f9fa88d410.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mbtproject\/mbt\">https:\/\/github.com\/mbtproject\/mbt<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Probleemi lahendamiseks on kaks v\u00f5imalust. Esimene on kasutada suhtelisi teid. Nii \u00fctlete koodis, et kaust on lokaalne (.\/). Enne kui midagi k\u00e4ivitada, teete selle reposi Git clone lokaalselt. Nii et teete seda ainult \u00fcks kord. <\/p>\n<p><\/p>\n<p>Muidugi on palju miinuseid. N\u00e4iteks ei saa kasutada versioonihaldust. Ja sellega on m\u00f5nikord raske elada. <\/p>\n<p><\/p>\n<p>Teine lahendus. Kui teil on palju alammodule ja teil on juba mingisugune v\u00e4ljakujunenud pipeline, siis on olemas projekt MBT, mis v\u00f5imaldab koguda monorepositoorset erinevaid pakette ja laadida need S3-le. See on v\u00e4ga hea meetod. Nii kaalub fail iam-user-1.0.0.zip vaid 1 Kb, kuna selle ressursi loomise kood on v\u00e4ga v\u00e4ike. Ja see t\u00f6\u00f6tab palju kiiremini. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/1402d267a4c4b7e912f4d00325e68244.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>R\u00e4\u00e4gime sellest, mida ei tohi moodulites kasutada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8fbd9e6d78e72ee2fe30562453957d77.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Miks on moodulites see halb? K\u00f5ige hirmutavam asi on assume user. Assume user on autentimise variant, mida erinevad inimesed v\u00f5ivad kasutada pakkujas. N\u00e4iteks k\u00f5ik \u00fcritame oletada rolli. See t\u00e4hendab, et Terraform v\u00f5tab selle rolli ja seej\u00e4rel sooritab selle rolliga k\u00f5ik \u00fclej\u00e4\u00e4nud toimingud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c14e84f0bd4f8019c1cd375268ce4416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kurjus peitub selles, et kui Vasja armastab Amazoniga \u00fchendust v\u00f5tta \u00fchel viisil, n\u00e4iteks kasutades vaikimist keskkondade muutujaid, ja Petja armastab kasutada oma jagatud v\u00f5tit, mis tal on salajases kohas, siis Terraformis ei saa m\u00f5lemat kasutada. Et nad ei kannataks, ei peaks seda plokki modulis n\u00e4itama. See tuleb n\u00e4idata k\u00f5rgemal tasandil. St. meil on ressursimoodul, infrastruktuuri moodul ja k\u00f5rgem kompositsioon. Ja kuskil k\u00f5rgemal tuleb see m\u00e4\u00e4rata. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/bd5ec774dfd9325c5f88b14925ed637b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine kurjus peitub provisioneris. Siin ei ole kurjus nii triviaalne, kuna kui kirjutate koodi ja see t\u00f6\u00f6tab teie jaoks, v\u00f5ite arvata, et kui see t\u00f6\u00f6tab, siis miks peaks seda muutma. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/4859e030d6fc22201757d6f372366261.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kurjus seisneb selles, et te ei saa alati kontrollida, millal see provisioner t\u00e4pselt k\u00e4ivitub, esiteks. Teiseks, te ei saa kontrollida, mida t\u00e4hendab aws ec2, st me r\u00e4\u00e4gime praegu Linuxist v\u00f5i Windowsist. Seega ei saa te kirjutada midagi, mis toimiks v\u00f5rdselt erinevates operatsioonis\u00fcsteemides v\u00f5i erinevate kasutusjuhtumite jaoks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/98958fc032bcbc4bace86a6d6e74fb62.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00f5ige levinum n\u00e4ide, mis on muu hulgas esitatud ametlikus dokumentatsioonis, on see, et kui te kirjutate aws_instance ja m\u00e4\u00e4rate hulga argumente, ei ole seal midagi halba, kui m\u00e4rkida ka provisioner 'local-exec' ja k\u00e4ivitada oma ansible-playbook.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/50d8055c66969147af3e92195b818d6e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tegelikult \u2013 jah, seal ei ole midagi halba. Kuid peagi m\u00f5istate, et see 'local-exec' ei eksisteeri n\u00e4iteks launch_configuration'is. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/47f5b5ef6433a0e2853a969ddb423883.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja kui kasutate launch_configuration'i ja soovite \u00fchest instance'ist luua autoscaling group'i, siis launch_configuration'is ei ole m\u00f5istet 'provisioner'. Seal on m\u00f5isted 'user data'.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/eb45a5b16b0c90d5e200b4adc487d38a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seet\u00f5ttu on universaalsemaks lahenduseks user data kasutamine. See k\u00e4ivitub kas vastavalt konkreetses instance'is, kui instance k\u00e4ivitatakse, v\u00f5i selles samas user data's, kui autoscaling group kasutab seda launch_configuration'it.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/307d665dd12a2bf67deebf3f985c62f2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui siiski on soov k\u00e4ivitada provisioner, kuna see on liitkomponent, kui \u00fcks ressurss on loodud ja siis tuleb k\u00e4ivitada oma provisioner'i, oma k\u00e4sklane. Selliseid olukordi on palju. <\/p>\n<p><\/p>\n<p>Ja k\u00f5ige \u00f5igem ressurss selleks on null_resource. Null_resource on fiktiivne ressurss, mida kunagi t\u00f5eliselt ei loodud. See ei puuduta midagi, pole API-d, pole autoscalingut. Kuid see v\u00f5imaldab reguleerida, millal k\u00e4ivitada k\u00e4sk. Antud juhul k\u00e4ivitub k\u00e4sk loomise ajal.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/2b7d5fcfee963eb2366f6e9fb7be188b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ling <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/common-traits-in-terraform-modules\">http:\/\/bit.ly\/common-traits-in-terraform-modules<\/a><\/noindex><\/p>\n<p><\/p>\n<p>On mitmeid m\u00e4rke. Ma ei plaani k\u00f5igil m\u00e4rkidel v\u00e4ga detailselt peatuda. Selle kohta on artikkel. Kuid kui olete t\u00f6\u00f6tanud Terraformiga v\u00f5i kasutanud teiste mooduleid, siis olete sageli m\u00e4rganud, et paljusid mooduleid, nagu ka enamik koodi avatud l\u00e4htekoodiga, kirjutavad inimesed oma vajaduste jaoks. Inimene kirjutas selle, lahendas oma probleemi. Panin selle GitHubi, las see seal elab. See elab, kuid kui seal pole mingit dokumentatsiooni ja n\u00e4iteid, siis ei kasuta keegi seda. Ja kui seal pole funktsionaalsust, mis v\u00f5imaldab lahendada natuke rohkem kui tema konkreetne probleem, siis ei kasuta keegi ka seda. On v\u00e4ga palju viise, kuidas kasutajaid kaotada. <\/p>\n<p><\/p>\n<p>Kui soovite kirjutada midagi, mida inimesed kasutaksid, siis soovitan j\u00e4rgida neid m\u00e4rke. <\/p>\n<p><\/p>\n<p>Need on:<\/p>\n<p><\/p>\n<ul>\n<li>Dokumentatsioon ja n\u00e4ited.<\/li>\n<li>T\u00e4ielik funktsionaalsus.<\/li>\n<li>M\u00f5istlikud vaikev\u00e4\u00e4rtused.<\/li>\n<li>Puhtad kood.<\/li>\n<li>Testid.<\/li>\n<\/ul>\n<p><\/p>\n<p>Testid on eraldi teema, kuna nende kirjutamine on \u00fcsna keeruline. Ma usun rohkem dokumentatsiooni ja n\u00e4idendeid. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/835b3e4152a8ce5af46a0ea77187e13c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oleme vaadanud, kuidas mooduleid kirjutada. On kaks argumenti. Esimene, mis on k\u00f5ige olulisem, on see, et \u00e4ra kirjuta, kui sa ei pea, sest paljud inimesed on need \u00fclesanded juba sinu eest \u00e4ra teinud. Ja teine, kui sa siiski otsustad kirjutada, siis p\u00fc\u00fca mitte kasutada mooduli ja provisionerite pakkujaid. <\/p>\n<p><\/p>\n<p>See on dokumentatsiooni hall ala. Sa v\u00f5id praegu m\u00f5elda: 'Midagi on segane. Ei veennud.' Kuid vaatame kuue kuu p\u00e4rast. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/ff3612aec24633ccaae8aefc24d5b04a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd r\u00e4\u00e4gime, kuidas neid mooduleid kutsuda. <\/p>\n<p><\/p>\n<p>Me m\u00f5istame, et aja jooksul meie kood suureneb. Meil ei ole enam \u00fchte faili, meil on juba 20 faili. K\u00f5ik need asuvad \u00fches kaustas. V\u00f5i v\u00f5ib-olla viies kaustas. V\u00f5ib-olla hakkame me neid jagama piirkondade v\u00f5i komponentide j\u00e4rgi. Siis m\u00f5istame, et n\u00fc\u00fcd peavad tekkima mingid s\u00fcnniks\u00fcnnmused, orkestreerimine. See t\u00e4hendab, et peame aru saama, mida teha, kui me muudame v\u00f5rguressursse, mida teha \u00fclej\u00e4\u00e4nud s\u00f5ltuvustega jne. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/14cc354574cf2960530d7c40fb678b52.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On kaks \u00e4\u00e4rmust. Esimene \u00e4\u00e4rmus on k\u00f5ik \u00fches. Meil on \u00fcks meistrifail. Kuni teatud ajani oli see Terraformi veebisaidil ametlik best practice.<\/p>\n<p><\/p>\n<p>Kuid n\u00fc\u00fcd on see kirjutatud kui deprecated ja eemaldatud. Aja jooksul m\u00f5istis Terraformi kogukond, et see ei ole kaugeltki best practice, kuna inimesed hakkavad projekti erinevates vormides kasutama. Ja probleeme tekib. N\u00e4iteks, kui me m\u00e4\u00e4rame k\u00f5ik s\u00f5ltuvused \u00fchte kohta. On olukordi, kus vajutame 'Terraform plan' ja enne kui Terraform v\u00e4rskendab k\u00f5igi ressursside seisundeid, v\u00f5ib kuluda palju aega. <\/p>\n<p><\/p>\n<p>Palju aega \u2013 n\u00e4iteks 5 minutit. Kellegi jaoks on see palju aega. Olen n\u00e4inud juhtumeid, kus see kestis 15 minutit. 15 minutit AWS API p\u00fcsis, et m\u00f5ista, mis toimub iga ressursi seisundiga. See on t\u00f5eliselt suur ala. <\/p>\n<p><\/p>\n<p>Ja loomulikult tekib seotud probleem, kui soovite midagi \u00fches kohas muuta, siis ootate 15 minutit, ja see annab teile mingi muutuste loendi. Te viskate k\u00e4ed \u00fcles, kirjutate \"Yes\", ja midagi l\u00e4heb valesti. See on t\u00e4iesti reaalselt juhtuv n\u00e4ide. Terraform ei p\u00fc\u00fca teid probleemidest eemal hoida. Seega, kirjutage, mida soovite. Probleemid - teie probleemid. Enne Terraform 0.11 ei p\u00fc\u00fcdnud see teid kuidagi aidata. Versioonis 0.12 on teatud huvitavad kohad, mis v\u00f5imaldavad teil \u00f6elda: \"Vassia, kas sa t\u00f5eliselt seda soovid, v\u00f5ib-olla peaksid natuke \u00fcmber m\u00f5tlema?\". <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/727b827aa9e31043e4e037e0c42a9748.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine viis on selle ala v\u00e4hendamine, st saab v\u00e4hem siduda \u00fchte kohtadest teistesse kohtadesse. <\/p>\n<p><\/p>\n<p>Ainuke probleem on selles, et tuleb kirjutada rohkem koodi, st tuleb m\u00e4\u00e4ratleda muutujad paljusid faile, seda v\u00e4rskendada. M\u00f5nele ei meeldi see. Minu jaoks on see okei. Aga m\u00f5ned arvavad: \"Miks kirjutada see erinevates kohtades, ma viskan selle k\u00f5ik \u00fchte kohta kokku.\" Seda saab ka teha, aga see on teine \u00e4\u00e4rmuses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/f9de423769b338726faefba886bee419.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kus see k\u00f5ik elab \u00fches kohas? \u00dcks, kaks, kolm inimest, st keegi kasutab. <\/p>\n<p><\/p>\n<p>Kes kutsus \u00fcles \u00fche konkreetse komponendi, \u00fche ploki v\u00f5i \u00fche infrastruktuuri mooduli? Ligikaudu viis-seitsme inimese jaoks. See on suurep\u00e4rane. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/0339f2fcf9c08ce6a70bc359bb1950ec.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kaim vastus on \u2013 kuskil keskel. Kui projekt on suur, on sageli olukord, kus kumbki lahendus ei sobi ja mitte k\u00f5ik ei toimi, seega tekib segu. Sellest pole midagi halba, peaasi, et m\u00f5istate, et m\u00f5lemal on oma eelised. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/bf6eaf1416bd5445ca90f2cbcf0792f1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui stack VPC-s on midagi muutunud ja soovite neid muudatusi rakendada EC2-s, st soovite uuendada autoscaling gruppi, kuna olete saanud uue subneti, siis nimetaksin ma selliseid s\u00f5ltuvusi orkestreerimiseks. Kas on olemas m\u00f5ni lahendus: kuidas keegi seda kasutab? <\/p>\n<p><\/p>\n<p>Ma v\u00f5in soovitada, millised lahendused on olemas. V\u00f5ite kasutada Terraform'i, et teha imet, v\u00f5i kasutada make-failide abil Terraform'i. Ja vaadata, kui seal on midagi muutunud, saate siin k\u00e4ivitada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/8ff0f7f7e1fc37572749aeb1dce6e2f0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas teile selline lahendus meeldib? Kas keegi usub, et see on suurep\u00e4rane lahendus? Ma n\u00e4en naeratust, ilmselt on kahtlused sisse hiilinud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/29a2d3e1909af1c30ab4af2647d5bca2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Muidugi, \u00e4rge proovige seda kodus. Terraform'i ei ole kunagi loodud k\u00e4ivitamiseks Terraform'ist.<\/p>\n<p><\/p>\n<p>\u00dches ettekandes \u00f6eldi mulle: \u201eEi, see ei toimi.\u201d Asjaolu on see, et see ei peagi toimima. Kuigi see n\u00e4eb v\u00e4lja muljetavaldav, kui sa saad Terraformist k\u00e4ivitada Terraformi, mis k\u00e4ivitab veel Terraformi, siis \u00e4ra tee nii. Terraform peaks alati k\u00e4ivituma v\u00e4ga lihtsalt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/1ae74b01e8cb8f7bab8bc5065b65e6c7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gruntwork-io\/terragrunt\/\">https:\/\/github.com\/gruntwork-io\/terragrunt\/<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Kui sul on vajadus kutsuda \u00fcles orkestreerimist, kui midagi kuskil muutub, siis on olemas Terragrunt.<\/p>\n<p><\/p>\n<p>Terragrunt on utiliit, Terraformi laiendus, mis v\u00f5imaldab koordineerida ja orkestreerida infrastruktuuri moodulite \u00fcleskutsumist.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/60ad02b0d3e6189fa6195e43c043b3e7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00fc\u00fcpiline Terraformi konfigureerimisfail n\u00e4eb v\u00e4lja selline. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/2a5f5cb7e6eaed566c526a0923d1f1e6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sa m\u00e4rkid, millist konkreetselt moodulit sa soovid kutsuda.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/ccf0faaa01207c67201ec750666d0c87.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Millised on mooduli s\u00f5ltuvused.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/affc9afd52aac7cc4b13337c5d7f068e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja millised argumendid see moodul vastu v\u00f5tab. See on k\u00f5ik, mis on vajalik Terragrunti kohta teada.<\/p>\n<p><\/p>\n<p>Seal on dokumentatsioon, 1 700 t\u00e4hekaarti GitHubis. Kuid enamikes juhtudel on see see, mida on vaja teada. Ja seda on v\u00e4ga lihtne juurutada ettev\u00f5tetes, kes on just hakanud t\u00f6\u00f6tama Terraformiga.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/90a4f52c58538647a062901e6d4b5246.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seega on orkestreerimine Terragrunt. Teisi variante on olemas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/5d57e3de03fbe7c5fbc8592367964069.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd r\u00e4\u00e4gime, kuidas koodiga t\u00f6\u00f6tada. <\/p>\n<p><\/p>\n<p>Kui teil on vaja lisada koodi uusi funktsioone, siis enamikul juhtudel on see lihtne. Te kirjutate uue ressursi, siin on k\u00f5ik lihtne. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/5a927eb69b80527945b7f825f42a1bc4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui teil on mingisugune ressurss, mille olete eelnevalt loonud, n\u00e4iteks olete Terraformist kuulnud p\u00e4rast AWS-konto avamist ja soovite kasutada juba olemasolevaid ressursse, siis on m\u00f5istlik laiendada oma moodulit selliselt, et see toetaks olemasolevate ressursside kasutamist.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/754e9d2836bf82e409c52a84988c84bd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja toetaks uute ressursside loomist, kasutades ressursi blokk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/82f388d9659dc9d20e81475aa3f9692f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u00e4ljundina tagastame alati v\u00e4ljundi ID olenevalt sellest, mis oli kasutusel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/71dc2952996800bce6278805c76a156f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine v\u00e4ga oluline probleem Terraform 0.11-s on t\u00f6\u00f6tlus nimekirjadega. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/669cd348c88f849155bfd06192cfea72.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Raskus seisneb selles, et kui meil on selline nimekiri users.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/dc808aa41a3f689ba1650f2a4f862dcf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja kui me loome neid kasutajaid, kasutades ressursi blokki, siis k\u00f5ik l\u00e4heb h\u00e4sti. Me l\u00e4heme l\u00e4bi kogu nimekirja, loome iga\u00fchele faili. K\u00f5ik on korras. Ja siis, n\u00e4iteks, kui user3, kes on nimekirja keskel, tuleb siit eemaldada, siis k\u00f5ik ressursid, mis on loodud p\u00e4rast teda, loovad end uuesti, kuna indeks muutub. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/4dfd4b4e3f902e1d63d4ba7e48ed6400.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00f6\u00f6tamine loenditega stateful-keskkonnas. Mis on stateful-keskkond? See on olukord, kus uus v\u00e4\u00e4rtus ilmneb selle ressursi loomisel. N\u00e4iteks AWS Access Key v\u00f5i AWS Secret Key, st kui me loome kasutaja, saame uue Access v\u00f5i Secret Key. Ja iga kord, kui me kustutame m\u00f5ne kasutaja, on selle kasutaja jaoks uus v\u00f5ti. Kuid see ei ole hea tava, sest kasutaja ei taha meiega suhelda, kui me peame iga kord looma uue kasutaja, kui keegi r\u00fchmast lahkub.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c1fe1eb9f5c59b85e0e3934c1a6f6c6d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lahendus on selline. See on kood, mis on kirjutatud Jsonnetis. Jsonnet on Google'i \u0448\u0430\u0431\u043b\u043eonide loomise keel. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/d67ae4dc51ee3e72e49692550e47653d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See k\u00e4sk v\u00f5imaldab v\u00f5tta selle \u0448\u0430\u0431\u043b\u043e\u043d ja v\u00e4ljundis tagastab see json-faili, mis on tehtud vastavalt teie \u0448\u0430\u0431\u043b\u043e\u043dile. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/52be571cf82b122265a7bd64489b874d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d n\u00e4eb v\u00e4lja selline. <\/p>\n<p><\/p>\n<p>Terraform v\u00f5imaldab t\u00f6\u00f6tada nii HCL-i kui ka Jsoniga v\u00f5rdselt, seega kui teil on v\u00f5imalus genereerida Json, siis v\u00f5ite selle anda Terraformile. Faili laiendusega .tf.json laaditakse edukalt \u00fcles. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/a2e9b9ecd514dc7fd178930a236f9305.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja siis t\u00f6\u00f6tame sellega nagu tavaliselt: terraform init, terraform apply. Ja loome kaks kasutajat.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd ei karda me, kui keegi tiimist lahkub. Me lihtsalt muudame json-faili. Vassja Pupkin lahkus, Petja Pjato\u0161kin j\u00e4i. Petja Pjato\u0161kin ei saa uut v\u00f5tit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/b6dcff93532446d5d06007b545df769d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Terraformi integreerimine teiste vahenditega ei ole tegelikult Terraformi \u00fclesanne. Terraform loodi ressursside loomiseks ja ainult selleks. K\u00f5ik, mis selle juurde sobib \u2013 pole Terraformi mure. Ja seda ei peaks sinna segama. On olemas Ansible, mis teeb k\u00f5ik vajaliku. <\/p>\n<p><\/p>\n<p>Siiski tekivad olukorrad, kus soovime Terraformi t\u00e4iendada ja kutsuda m\u00f5nda k\u00e4sku peale m\u00f5ne tegevuse t\u00e4itmist. <\/p>\n<p><\/p>\n<p>Esimene meetod. Loome v\u00e4ljundi, kuhu kirjutame selle k\u00e4su.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/63f29f850cb05bbb9605bb3d34fdd659.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja siis kutsume selle k\u00e4su v\u00e4lja shellis terraform output, n\u00e4idates seda v\u00e4\u00e4rtust, mida soovime. Nni k\u00e4ivitub k\u00e4sk k\u00f5igi asendatud v\u00e4\u00e4rtustega. See on v\u00e4ga mugav. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/083f5435d85e998ac5ba63e096f82026.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine meetod. See on null_resource kasutamine s\u00f5ltuvalt meie infrastruktuuri muutustest. Saame kutsuda sama local-exec'i, kohe kui mingi ressursi ID muutub. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/f0df46f403079ca865294f584d8e1da3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Muidugi, see k\u00f5ik tundub sujuv paberil, kuna Amazon, nagu k\u00f5ik teised avalikud pakkujad, omab hulganisti oma \u00e4\u00e4rmuslikke olukordi.<\/p>\n<p><\/p>\n<p>T\u00fc\u00fcpiline \u00e4\u00e4rmuslik juhtum on see, et kui avate AWS-i konto, on oluline, milliseid piirkondi te kasutate; kas funktsioon on seal lubatud; v\u00f5ib-olla avasite selle p\u00e4rast 2013. aasta detsembrit; v\u00f5ib-olla kasutate VPC-s vaikeseadeid jne. Piiranguid on palju. Ja Amazon on need dokumentatsiooni hajutanud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/0615964259654a9894770bc326ca9725.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00f5ned asjad, mida ma soovitan v\u00e4ltida.<\/p>\n<p><\/p>\n<p>Esiteks v\u00e4ltige k\u00f5iki salajaseid argumente Terraformi plaanis v\u00f5i Terraformi CLI-s. K\u00f5ik need saab panna kas tfvars-faili v\u00f5i keskkonnamuutujasse. <\/p>\n<p><\/p>\n<p>Aga pole vaja meelde j\u00e4tta kogu seda maagilist k\u00e4sku. Terraform plan \u2013 var ja edasi. Esimene muutuja \u2013 var, teine muutuja \u2013 var, kolmas, neljas. K\u00f5ige olulisem p\u00f5him\u00f5te infrastruktuuri kui koodi puhul, mida ma k\u00f5ige sagedamini kasutan, on see, et vaatamata koodile peaksin ma selgelt m\u00f5istma, mis on seal juurutatud, millises seisundis ja milliste v\u00e4\u00e4rtustega. Seet\u00f5ttu ei pea ma lugema dokumentatsiooni v\u00f5i k\u00fcsima Vasjalt, milliseid parameetreid ta meie klastrite loomiseks kasutas. Mul on piisav, et avada tfvars-fail, mis sageli vastab keskkonnale, ja vaadata k\u00f5ik seal.<\/p>\n<p><\/p>\n<p>Samuti ei tohiks kasutada target-argumente, et piirata ulatust. Selleks on palju lihtsam kasutada v\u00e4ikeseid infrastruktuuri mooduleid. <\/p>\n<p><\/p>\n<p>Samuti ei tohiks piirata ja suurendada parallelismi. Kui mul on 150 ressurssi ja soovin suurendada Amazonis parallelismi 10-lt, mis on vaikimisi, 100-le, siis t\u00f5en\u00e4oliselt l\u00e4heb midagi valesti. V\u00f5i v\u00f5ib n\u00fc\u00fcd minna h\u00e4sti, kuid kui Amazon \u00fctleb, et teete liiga palju p\u00e4ringuid, siis ilmneda probleemid. <\/p>\n<p><\/p>\n<p>Terraform p\u00fc\u00fcab enamikke neist probleemidest uuesti k\u00e4ivitada, kuid te ei saavuta peaaegu midagi. Parallelism=1 on oluline asi, mida tuleb kasutada, kui olete kinni j\u00e4\u00e4nud m\u00f5ne veaga AWS API-s v\u00f5i Terraformi pakkujas. Ja siis peate m\u00e4\u00e4rama: parallelism=1 ja ootama, kuni Terraform l\u00f5petab \u00fche p\u00e4ringu, siis teise, siis kolmanda. Ta k\u00e4ivitab need j\u00e4rjestikku.<\/p>\n<p><\/p>\n<p>Sageli k\u00fcsin: \"Miks ma arvan, et Terraformi t\u00f6\u00f6ruumid on kurjad?\" Usun, et infrastruktuuri kui koodi p\u00f5him\u00f5te seisneb selles, et n\u00e4ha, milline infrastruktuur on loodud ja milliste v\u00e4\u00e4rtustega. <\/p>\n<p><\/p>\n<p>Workspaces ei olnud kasutajate algatus. See ei t\u00e4henda, et kasutajad oleksid GitHubi probleemides \u00f6elnud, et nad ei saa elada ilma Terraform workspaces'ita. Ei, see ei ole nii. Terraform Enterprise on \u00e4rilahendus. HashiCorpi Terraform leidis, et meil on vaja workspaces'e, seega tegime selle teoks. Minu arvates oleks seda palju lihtsam eraldi kausta panna. Siis on rohkem faile, kuid see on arusaadavam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/e6c0d79203c27d49f0e3c4022e515b52.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas koodiga t\u00f6\u00f6tada? P\u00f5him\u00f5tteliselt, t\u00f6\u00f6tamine loenditega on ainus probleem. Ja v\u00f5tke Terraformi lihtsamalt. See ei ole asi, mis teeb k\u00f5ik teie eest suurep\u00e4raselt. \u00c4rge pange sinna k\u00f5ike, mis on dokumentatsioonis kirjutatud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/f154e25a85bdb723a5e7ad52471d88f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ettekande teemal oli kirjutatud 'tuleviku jaoks'. Ma r\u00e4\u00e4gin sellest v\u00e4ga l\u00fchidalt. Tuleviku jaoks \u2013 see t\u00e4hendab, et varsti ilmub v\u00e4lja versioon 0.12. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/c7f2da5d87e69fb10bf966b9258b5255.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>0.12 on palju uut. Kui olete tulnud tavalise programmeerimise maailmast, siis igatsete igasuguste d\u00fcnaamiliste blokide, ts\u00fcklite ja korrektsete tingimuslike v\u00f5rdlusoperatsioonide j\u00e4rele, kus vasak ja parem k\u00fclg ei arvutata samal ajal, vaid s\u00f5ltuvalt olukorrast. Te igatsete seda v\u00e4ga, seega 0.12 lahendab selle teie jaoks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/63aaef065c8a641a86a9223996524d18.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid! Kui sa kirjutad v\u00e4hem ja lihtsamalt, kasutades valmis mooduleid ja kolmandate osapoolte lahendusi, siis ei pea sa ootama ja lootma, et 0.12 tuleb ja k\u00f5ik sinu eest korda teeb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tuleviku infrastruktuuri kirjeldus Terraformis. Anton Bab\u0435\u043d\u043a\u043e (2018)\" src=\"\/wp-content\/uploads\/2020\/09\/b356603f38d5eb671c473369b5e8a03b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ait\u00e4h ettekande eest! Sa r\u00e4\u00e4kisid infrastruktuurist kui koodist ja mainisid teste vaid \u00fches s\u00f5nas. Kas moodulites on testid vajalikud? Kelle vastutus see on? Kas tuleb ise kirjutada v\u00f5i on see moodulite kohustus?<\/em><\/p>\n<p><\/p>\n<p>J\u00e4rgmine aasta tuleb ettekannetest, kus oleme otsustanud k\u00f5ike testida. Mis on see, mida testida - see on suurim k\u00fcsimus. On palju s\u00f5ltuvusi, palju piiranguid erinevatelt teenusepakkujatelt. Kui me sinuga r\u00e4\u00e4gime ja sa \u00fctled: \"Mul on vaja teste\", siis ma k\u00fcsin: \"Mida sa hakkad testima?\". Sa \u00fctled, et testid oma regioonis. Siis ma \u00fctlen, et minu regioonis see ei toimi. See t\u00e4hendab, et me ei saa isegi selles osas kokku leppida. R\u00e4\u00e4kimata k\u00f5igist tehnilistest probleemidest. See t\u00e4hendab, et kuidas kirjutada neid teste, et need oleksid adekvaatsed. <\/p>\n<p><\/p>\n<p>Uurin seda teemat aktiivselt, st kuidas automatiseeritud testide genereerimist selle infrastruktuuri p\u00f5hjal, mille sa oled kirjutanud. St kui sa oled kirjutanud selle koodi, pean ma selle k\u00e4ivitama, mille p\u00f5hjal saan luua testid. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gruntwork-io\/terratest\">Terratest<\/a><\/noindex> \u2013 see on \u00fcks k\u00f5ige sagedamini mainitud teeke, mis v\u00f5imaldab kirjutada integratsiooniteste Terraformi jaoks. See on \u00fcks utiliite. Mulle meeldib rohkem DSL-t\u00fc\u00fcpi, n\u00e4iteks rspec.<\/p>\n<p><\/p>\n<p><em>Anton, ait\u00e4h ettekande eest! Minu nimi on Valery. Luba mul esitada natuke filosoofiline k\u00fcsimus. On olemas tinglikult provisioning ja deployment. Provisioning loob minu infrastruktuuri, deployment aga t\u00e4idab seda millegi kasuliku, n\u00e4iteks serverite, rakendustega jne. Minu peas on arusaam, et Terraform on rohkem m\u00f5eldud provisioning'uks, samas kui Ansible on rohkem deployment'iks, kuna Ansible v\u00f5imaldab ka f\u00fc\u00fcsilisele infrastruktuurile nginx'i, Postgres'i paigaldamist. Kuid samas n\u00e4ib, et Ansible'il on ka provisioning'i v\u00f5imalus, n\u00e4iteks Amazon v\u00f5i Google'i ressursid. Kuid ka Terraform v\u00f5imaldab oma moodulite abil mingit tarkvara deploy'da. Kuidas sina seda n\u00e4ed? Kas on mingi piir, mis eristab Terraform'i ja Ansible'i ning millal ja mida on parem kasutada? V\u00f5i arvad, et Ansible on juba obsolete ja peaksime p\u00fc\u00fcama Terraform'i kasutada k\u00f5ikeh\u00f5lmavalt?<\/em><\/p>\n<p><\/p>\n<p>Hea k\u00fcsimus, Valeri. Minu arvates pole Terraform alates 2014. aastast oma eesm\u00e4rgis muutunud. See on loodud infrastruktuuri jaoks ja sureb infrastruktuuri nimel. Meie vajadus configuration management'i, nagu Ansible, j\u00e4\u00e4b endiselt ja j\u00e4\u00e4b alati. Probleemiks on, et seal on launch_configuration'i sees user data. Ja seal sa k\u00e4ivitad Ansible'i jne. See on see standardne eristus, mis mulle k\u00f5ige rohkem meeldib. <\/p>\n<p><\/p>\n<p>Kui me r\u00e4\u00e4gime kaunilt kujundatud infrastruktuurist, siis on olemas t\u00f6\u00f6riistu nagu Packer, mis loob selle pildi. Ja edasi kasutab Terraform andmeallikat, et seda pilti leida ja oma launch_configuration'i uuendada. See t\u00e4hendab, et pipeline seisneb selles, et me k\u00e4ivitame esmalt Trackeri, seej\u00e4rel k\u00e4ivitame Terraform'i. Ja kui toimub build, siis toimub uus muudatus. <\/p>\n<p><\/p>\n<p><em>Tere! Ait\u00e4h ettekande eest! Minu nimi on Misha, ettev\u00f5te RBS. Ansible'i saab k\u00e4ivitada provisioner'i kaudu, kui ressursse luuakse. Lisaks on Ansible'il olemas selline funktsioon nagu d\u00fcnaamiline inventuur. Esiteks saab k\u00e4ivitada Terraform'i, seej\u00e4rel Ansible'i, mis v\u00f5tab state'ist ressurssidest ja t\u00e4idab need. Mis on parem?<\/em><\/p>\n<p><\/p>\n<p>M\u00f5lemat kasutatakse inimestele sama edukalt. Minu arvates on Ansible'i d\u00fcnaamiline inventuur mugav asi, kui me ei r\u00e4\u00e4gi autoskalimisgruppidest. Kuna autoskalimisgrupis on meil juba oma t\u00f6\u00f6riist, mida nimetatakse launch_configuration'iks. Me salvestame launch_configuration'isse k\u00f5ik, mida on vaja k\u00e4ivitada, kui loome uue ressursi. Seega, Amazonis d\u00fcnaamilise inventuuri kasutamine ja Terraformi ts-faili lugemine tundub mulle \u00fcleliigne. Kui aga kasutate teisi vahendeid, kus ei ole m\u00f5istet \u201eautoskalimisgrupp\u201d, n\u00e4iteks kasutate DigitalOceanit v\u00f5i m\u00f5nda muud teenusepakkujat, kus autoskalimisgruppi ei ole, peate API-d k\u00e4sitsi kasutama, leidma IP-aadresse, koostama d\u00fcnaamilise inventuuri faili ning Ansible liigub selle j\u00e4rgi. See t\u00e4hendab, et Amazonis on launch_configuration, kuid muude teenuste puhul on d\u00fcnaamiline inventuur.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/517804\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Terraform \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438. \u041a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043c\u0435\u0442\u043e\u0434\u044b. \u0412\u0430\u0448\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 + \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043d\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043e \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 Terraform-\u043c\u043e\u0434\u0443\u043b\u0438, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c, \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":93460,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-93459","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Terraform \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438. \u041a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043c\u0435\u0442\u043e\u0434\u044b. \u0412\u0430\u0448\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 + \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043d\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043e \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 Terraform-\u043c\u043e\u0434\u0443\u043b\u0438, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c, \u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 Terraform \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435. \u0410\u043d\u0442\u043e\u043d \u0411\u0430\u0431\u0435\u043d\u043a\u043e (2018\u0433) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Terraform \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438. \u041a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043c\u0435\u0442\u043e\u0434\u044b. \u0412\u0430\u0448\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 + \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043d\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043e \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 Terraform-\u043c\u043e\u0434\u0443\u043b\u0438, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c, \u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-07T05:43:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-07T05:43:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Infrastruktuuri kirjeldamine Terraformis tuleviku tarbeks. Anton Babennko (2018) | ProHoster","description":"Paljusid ei tea, et Terraformi igap\u00e4evasel kasutamisel on endiselt parimad praktikad v\u00e4lja kujunemata. Igal meeskonnal tuleb leida oma l\u00e4henemisviise ja meetodeid. Teie infrastruktuur algab t\u00f5en\u00e4oliselt lihtsalt: m\u00f5ned ressursid + m\u00f5ned arendajad. Aja jooksul kasvab see igas suunas. Te leiate viise, kuidas koondada ressursse Terraformi moodulitesse, korraldada koodi kaustadesse, ja","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 Terraform \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435. \u0410\u043d\u0442\u043e\u043d \u0411\u0430\u0431\u0435\u043d\u043a\u043e (2018\u0433) | ProHoster","og:description":"\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Terraform \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438. \u041a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043c\u0435\u0442\u043e\u0434\u044b. \u0412\u0430\u0448\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 + \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043d\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043e \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 Terraform-\u043c\u043e\u0434\u0443\u043b\u0438, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c, \u0438","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/opisanie-infrastruktury-v-terraform-na-budushhee-anton-babenko-2018g","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-07T05:43:22+00:00","article:modified_time":"2020-09-07T05:43:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"93459","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:47:31","updated":"2022-09-27 15:34:51"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/93459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=93459"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/93459\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/93460"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=93459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=93459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=93459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}