{"id":52367,"date":"2019-11-07T00:00:00","date_gmt":"2019-11-06T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/pereshel-s-terraform-na-cloudformation-i-pozhalel"},"modified":"2020-02-18T14:00:04","modified_gmt":"2020-02-18T11:00:04","slug":"pereshel-s-terraform-na-cloudformation-i-pozhalel","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel","title":{"rendered":"T\u00f5usin Terraformist CloudFormationi ja kahetsen seda","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Esitus infrastruktuurist koodina korduvates tekstivormingutes on lihtne parim praktika s\u00fcsteemidele, millega ei ole vaja j\u00e4nnata. Selle praktika nimi on <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Infrastructure_as_code\">Infrastructure as Code<\/a><\/noindex>, ja senini on selle rakendamiseks, eriti AWS-is, kaks populaarset t\u00f6\u00f6riista: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/\">Terraform<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/cloudformation\/\">CloudFormation<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"T\u00f5usin Terraformist CloudFormationi ja kahetsen seda\" src=\"\/wp-content\/uploads\/2019\/11\/e33084fb81ca06107b341eef01e69adc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>V\u00f5rdlen oma kogemust Terraformi ja CloudFormationiga<\/em><\/p>\n<p><\/p>\n<p>Enne, kui ma tulin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.twitch.tv\/\">Twitch<\/a><\/noindex> (nimetatud ka <noindex><a rel=\"nofollow\" href=\"https:\/\/www.businessinsider.com\/amazon-buys-twitch-2014-8\">Amazon Jr.<\/a><\/noindex>) t\u00f6\u00f6tasin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.signalfx.com\/\">\u00fches start-upis<\/a><\/noindex> ja kasutasin Terraformi umbes kolm aastat. Uues kohas kasutasin ma samuti aktiivselt Terraformi, kuid siis n\u00f5udis ettev\u00f5te \u00fcleminekut t\u00e4ielikult Amazonile, sealhulgas CloudFormationile. T\u00f6\u00f6tasin k\u00f5vasti v\u00e4lja parimaid praktikaid m\u00f5lema jaoks, kasutades neid kahte t\u00f6\u00f6riista v\u00e4ga keerulistes organisatsioonilistes t\u00f6\u00f6protsessides. Hiljem, p\u00e4rast \u00fclemineku m\u00f5ju hoolikat kaalumist Terraformilt CloudFormationile, j\u00f5udsin j\u00e4reldusele, et Terraform on ilmselt parim valik organisatsioonile.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"terraform-uzhasnyy\">Terraform On Kohutav<\/h2>\n<p><\/p>\n<h3 id=\"beta-versiya-po\">Tarkvara beetaversioon<\/h3>\n<p><\/p>\n<p>Terraformi 1.0 versioon pole veel v\u00e4lja antud, mis on kaalukas p\u00f5hjus, miks seda mitte kasutada. Alates esimesest proovimisest on see palju muutunud, kuid tookord <code>terraform apply<\/code> \u0447\u0430\u0441\u0442\u043e \u043b\u043e\u043c\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043b\u0435\u0442 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. \u042f \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e &#171;\u0441\u0435\u0439\u0447\u0430\u0441-\u0442\u043e \u0432\u0441\u0435 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443&#187;, \u043d\u043e\u2026 \u0442\u0430\u043a \u0432\u0440\u043e\u0434\u0435 \u0432\u0441\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u043d\u0435\u0442? \u0415\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u0445\u043e\u0442\u044f \u043e\u043d\u0438 \u0443\u043c\u0435\u0441\u0442\u043d\u044b, \u0438 \u0434\u0430\u0436\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0435, \u0447\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0442\u043e \u043d\u0430\u0434\u043e. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u0440\u0430\u0432\u0434\u0430 \u0441\u0442\u0430\u043b \u043b\u0443\u0447\u0448\u0435, \u043d\u043e\u2026 :-0<\/p>\n<p><\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, AWS \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0430\u0441\u044c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438. \u0412\u0441\u0435, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0447\u0430\u0441\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043d\u044c\u043a\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043b\u0438\u0448\u044c \u043f\u043e\u0442\u043e\u043c, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0432, \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442. \u0422\u0430\u043a \u0447\u0442\u043e &#171;\u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c&#187; \u044d\u0442\u043e \u0435\u0449\u0435 \u0441\u043b\u0430\u0431\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 API \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u043e\u0439 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u0430\u043a AWS, \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u043e. \u041b\u044e\u0431\u043e\u0439, \u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 API, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0442\u0430\u043a \u0436\u0435 \u0448\u0438\u0440\u043e\u043a\u043e, \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0442\u0440\u0443\u0434\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0435\u0442. \u0410 \u0432\u043e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 CloudFormation \u043d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0438 \u0440\u0430\u0437\u0443 \u0441 \u0433\u043e\u0434\u0430\u043c\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p><\/p>\n<h3 id=\"znakomsya-noga-eto-pulya\">Tere, jalg\u2026 see on kuul<\/h3>\n<p><\/p>\n<p>Nii palju kui mina tean, pole v\u00f5imalik kustutada ressursi <strong>v\u00e4lise<\/strong> CloudFormationi oma CF-steki kaudu ei ole v\u00f5imalik. Sarnane olukord on ka Terraformiga. See v\u00f5imaldab olemasolevaid ressursse oma steki importida. See funktsioon on t\u00f5eliselt muljetavaldav, kuid koos suure j\u00f5u ja vastutusega tuleb. Tuleb ainult ressurss steki lisada ja nii kaua kui t\u00f6\u00f6tad oma stekiga, ei saa seda ressursse kustutada ega muuta. \u00dckskord juhtus nii. Kord Twitchi saidil importis keegi, ilma halba kavatsedes, kogemata kellegi AWS turvagruppi oma Terraformi steki. Sisestas paar k\u00e4sku ja... turvagrupp (koos siseneva liiklusega) kadus.<\/p>\n<p><\/p>\n<h2 id=\"terraform-velikiy\">Terraform Suur<\/h2>\n<p><\/p>\n<h3 id=\"vosstanovlenie-iz-nepolnyh-sostoyaniy\">Taastereeglid mittet\u00e4ielikest seisunditest<\/h3>\n<p><\/p>\n<p>M\u00f5nikord ei suuda CloudFormation t\u00e4ielikult \u00fchest olekust teise liikuda. Sel juhul p\u00fc\u00fcab ta tagasi naasta eelmisse. Kahjuks ei ole see alati teostatav. Hiljem on tulemuse t\u00f5rgete parandamine pisut hirmutav \u2014 kunagi ei tea, kas CloudFormation r\u00f5\u00f5mustab selle \u00fcle, et teda rikutakse \u2014 isegi kui selle eesm\u00e4rk on parandamine. Ja ei suuda ta pealegi kindlasti \u00f6elda, kas eelmisse olekusse tagasi saamine \u00f5nnestub v\u00f5i mitte, ja vaikimisi j\u00e4\u00e4b ta tundide kaupa ootama imet.<\/p>\n<p><\/p>\n<p>Terraform seevastu on p\u00e4rast eba\u00f5nnestunud \u00fcleminekuid taastumisel elegantsem ja pakub laiendatud t\u00f5rkeotsingu t\u00f6\u00f6riistu.<\/p>\n<p><\/p>\n<h3 id=\"bolee-yasnye-izmeneniya-v-sostoyaniya-dokumenta\">Selgemad muudatused dokumendi seisundites<\/h3>\n<p><\/p>\n<blockquote><p>&#171;\u041b\u0430\u0434\u043d\u043e, \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0442\u044b \u043c\u0435\u043d\u044f\u0435\u0448\u044c\u0441\u044f. \u041d\u043e \u043a\u0430\u043a?&#187;<\/p>\n<p>\u2014\u043e\u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 &#171;\u043f\u0440\u0438\u043d\u044f\u0442\u044c&#187;.<\/p><\/blockquote>\n<p>M\u00f5nikord pean CloudFormationi stekis koormuse tasakaalustajaga teatud manipuleerimisi tegema \u2014 n\u00e4iteks porti numbri lisama v\u00f5i turvagruppi muutma. CloudFormationi muudatused kajastuvad kehvasti. Mina aga, nagu n\u00f5eltekste, kontrollin k\u00fcmme korda YAML-faili, et veenduda, et ei ole midagi vajalikku kustutanud ega liigset lisanud.<\/p>\n<p><\/p>\n<p>Terraform on selles osas palju l\u00e4bipaistvam. M\u00f5nikord on ta isegi liiga l\u00e4bipaistev (loe: t\u00fc\u00fctab). \u00d5nneks sisaldab viimane versioon parendatud muudatuste kuvamist \u2014 n\u00fc\u00fcd on t\u00e4pselt n\u00e4ha, mis muutub.<\/p>\n<p><\/p>\n<h3 id=\"gibkost\">Paindlikkus<\/h3>\n<p><\/p>\n<blockquote><p>Kirjutage tarkvara tagurpidi.<\/p><\/blockquote>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f \u043f\u0440\u044f\u043c\u043e, \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0435\u0440\u0442\u0430 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0435\u0433\u043e \u041f\u041e \u2014 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c. \u041b\u044e\u0431\u043e\u0435 \u041f\u041e \u043f\u0438\u0448\u0438\u0442\u0435 \u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e. \u042f \u0432\u043e\u0442 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u043a\u0430\u043b\u044b\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0440\u0430\u043b &#171;\u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439&#187; \u0441\u0435\u0440\u0432\u0438\u0441, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u0432\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0442\u0435\u043a CloudFormation \u0438\u043b\u0438 Terraform. \u0418 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0441\u043f\u0443\u0441\u0442\u044f \u043c\u0435\u0441\u044f\u0446\u044b \u0432\u0441\u043a\u0440\u044b\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044f \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u043b \u043d\u0435 \u0442\u0430\u043a, \u0438 \u0441\u0435\u0440\u0432\u0438\u0441-\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439! \u0418 \u0432\u043e\u0442 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0442\u0435\u043a \u043d\u0430 \u043c\u0430\u043b\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435. \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0448\u044c \u0441 CloudFormation, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u0435\u043a, \u0430 \u044d\u0442\u043e\u0433\u043e \u044f, \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0411\u0414, \u043d\u0435 \u0434\u0435\u043b\u0430\u044e. Terraform \u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u043f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0435\u043a \u0438 \u0440\u0430\u0441\u0447\u043b\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u044c\u0448\u0438\u0435 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p><\/p>\n<h3 id=\"moduli-v-git\">Git'i moodulid<\/h3>\n<p><\/p>\n<p>Koodi jagamine Terraformi vahel paljude stekkide vahel on palju lihtsam kui CloudFormationi koodi jagamine. Terraformiga saab koodi paigutada git-repositooriumisse ja sellele juurdep\u00e4\u00e4suks kasutada semantilist versioonihaldust. Iga\u00fchel, kellel on juurdep\u00e4\u00e4s sellele repositooriumile, on v\u00f5imalik jagatud koodi taas kasutada. CloudFormationi ekvivalent on S3, kuid sellel ei ole samu eeliseid ja pole \u00fchtegi p\u00f5hjust, miks me peaksime S3 kasuks git'ist loobuma.<\/p>\n<p><\/p>\n<p>Organisatsioon kasvas ja v\u00f5imalus jagada \u00fchist steeki saavutas kriitilise taseme. Terraformiga on see k\u00f5ik lihtne ja loomulik, samas kui CloudFormation sunnib teid h\u00fcppama r\u00f5ngaste kaudu, enne kui saate midagi sarnast toimima.<\/p>\n<p><\/p>\n<h3 id=\"operations-as-code\">Operations as code<\/h3>\n<p><\/p>\n<blockquote><p>&#171;\u0417\u0430\u0441\u043a\u0440\u0438\u043f\u0442\u0443\u0435\u043c \u0438 \u043b\u0430\u0434\u043d\u043e&#187;.<\/p>\n<p>\u2014 insener kolm aastat enne, kui leiutas Terraformi jalgratta.<\/p><\/blockquote>\n<p>Kui jutt tuleb tarkvara arendamisest, siis Go v\u00f5i Java programm pole vaid kood.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"T\u00f5usin Terraformist CloudFormationi ja kahetsen seda\" src=\"\/wp-content\/uploads\/2019\/11\/a5c61fd318b9b5aa62ebb69e38ca1b0e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Code as Code<\/em><\/p>\n<p><\/p>\n<p>On ju veel infrastruktuur, mille peal see t\u00f6\u00f6tab.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"T\u00f5usin Terraformist CloudFormationi ja kahetsen seda\" src=\"\/wp-content\/uploads\/2019\/11\/301c0323baa18563f05503e701af069b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Infrastructure as Code<\/em><\/p>\n<p><\/p>\n<p>Aga kuidas see seal on? Kuidas seda j\u00e4lgida? Kus asub teie kood? Kas arendajatel on vaja ligip\u00e4\u00e4su luba?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"T\u00f5usin Terraformist CloudFormationi ja kahetsen seda\" src=\"\/wp-content\/uploads\/2019\/11\/5cb0b6f720682b7bb6d5f485287b618b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Operations as Code<\/em><\/p>\n<p><\/p>\n<blockquote><p>Tarkvaraarendaja olema ei ole ainult koodi kirjutamine.<\/p><\/blockquote>\n<p>Ainult AWS ei piisa: te kasutate kindlasti ka teiste teenusepakkujate teenuseid. SignalFx, PagerDuty v\u00f5i Github. V\u00f5ib-olla on teil CI\/CD jaoks sisemine Jenkins server v\u00f5i sisemine Grafana juhtpaneel j\u00e4lgimiseks. Infra as Code'd valitakse erinevatel p\u00f5hjustel ja iga\u00fchel neist on tarkvaraga seotud asjades sama oluline roll.<\/p>\n<p><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 Twitch, \u043c\u044b \u0443\u0441\u043a\u043e\u0440\u044f\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0441\u0438\u0441\u0442\u0435\u043c AWS Amazon&#8217;\u0430. \u041c\u044b \u0448\u0442\u0430\u043c\u043f\u043e\u0432\u0430\u043b\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438. \u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u043a\u043b\u044e\u0447\u0435:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Mina<\/strong>: Issand, liiga palju liikumisi, et \u00fche mikroteenuse k\u00e4ivitamiseks. Mul tuleb seda jama kasutada, et luua AWS konto (me suundusime 2 kontole) <strong>mikroteenus<\/strong>), \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u0443 \u2014 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439, \u0435\u0449\u0435 \u044d\u0442\u0443 \u2014 \u0434\u043b\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043a\u043e\u0434\u0430, \u0438 \u044d\u0442\u0443 \u2014 \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043d\u0443 \u0438 \u0432\u043e\u0442 \u044d\u0442\u0443&#8230;<\/li>\n<li><strong>Juht<\/strong>: Skriptime ja valmis.<\/li>\n<li><strong>Mina<\/strong>: \u041b\u0430\u0434\u044b, \u043d\u043e \u0441\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f. \u041d\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0448\u0442\u0443\u043a\u043e\u0432\u0438\u043d\u044b amazon&#8217;\u0430 \u0438\u043c\u0435\u044e\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/li>\n<li><strong>Juht<\/strong>: K\u00f5lab h\u00e4sti. Ja selleks kirjutame skripti.<\/li>\n<li><strong>Mina<\/strong>: Suurep\u00e4rane! Ja skriptil on ilmselt veel vaja m\u00e4\u00e4rata parameetreid. Kas ta saab neid?<\/li>\n<li><strong>Juht<\/strong>: Jah, saab k\u00fcll, kuhu ta ikka kaob!<\/li>\n<li><strong>Mina<\/strong>: Protsess v\u00f5ib muutuda, tagasiside\u00fchilduvus kaob. Vajame mingit semantilist versioonikontrolli.<\/li>\n<li><strong>Juht<\/strong>: Suurep\u00e4rane idee!<\/li>\n<li><strong>Mina<\/strong>: T\u00f6\u00f6riistu saab muuta k\u00e4sitsi, kasutajaliidese sees. Meil on vaja viisi, kuidas seda kontrollida ja parandada.<\/li>\n<\/ul>\n<p><\/p>\n<p><em>&#8230;3 \u0433\u043e\u0434\u0430 \u0441\u043f\u0443\u0441\u0442\u044f:<\/em><\/p>\n<p><\/p>\n<ul>\n<li><strong>Juht<\/strong>: Nii saime terraformi.<\/li>\n<\/ul>\n<p><\/p>\n<p>Muinasjutu moraal on selline: isegi kui oled <strong>\u043f\u043e \u0443\u0448\u0438 \u0432\u043e \u0432\u0441\u0435\u043c amazon&#8217;\u043e\u0432\u0441\u043a\u043e\u043c<\/strong>, kasutad siiski midagi, mis ei ole AWS-ist, ja neil teenustel on olek, mida konfigureerimise keeles kasutatakse selle oleku s\u00fcnkroonimiseks.<\/p>\n<p><\/p>\n<h3 id=\"cloudformation-lambda-vs-git-moduli-terraform\">CloudFormation lambda vs git-moodulid terraform<\/h3>\n<p><\/p>\n<p>lambda on CloudFormation lahendus kasutajaloogika k\u00fcsimuse jaoks. Lambda abil saab <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/AWSCloudFormation\/latest\/UserGuide\/macros-example.html\">luua makrosid<\/a><\/noindex> v\u00f5i <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/AWSCloudFormation\/latest\/UserGuide\/walkthrough-custom-resources-lambda-lookup-amiids.html\">kasutajavara<\/a><\/noindex>. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 git \u0443 Terraform. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u0430\u043c\u043e\u0439 \u043d\u0430\u0441\u0443\u0449\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0441\u0442\u0430\u043b\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 lambda (\u0430 \u044d\u0442\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 AWS). \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u0438\u043f\u0430 &#171;\u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u2014 \u043a\u0443\u0440\u0438\u0446\u0430 \u0438\u043b\u0438 \u044f\u0439\u0446\u043e?&#187;: \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u043a\u043e\u0434\u043e\u043c lambda. \u0421\u0430\u043c\u0430 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u2014 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438 \u043a\u043e\u0434, \u0438 \u043e\u043d\u0430 \u0441\u0430\u043c\u0430 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u0445. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0433\u0432\u043e\u0437\u0434\u0435\u043c \u0432 \u0433\u0440\u043e\u0431 \u0441\u0442\u0430\u043b\u0430 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043a\u043e\u0434\u0430 lambda; \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043c\u0438.<\/p>\n<p><\/p>\n<p>M\u00e4letan, et tahtsin luua kanaroti juurutuse Elastic Beanstalki keskkonnas klassikalise koormuse tasakaalustajaga. K\u00f5ige lihtsam oleks olnud teha teine juurutus EBs tootmiskeskkonna k\u00f5rvale, tehes veel \u00fche sammu: \u00fchendades automaatselt skaleeritava kanaroti juurutusgrupi tootmiskeskkonna LB juurutusega. Ja kuna Terraform kasutab <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/providers\/aws\/r\/elastic_beanstalk_environment.html#autoscaling_groups\">ASG beantalkina v\u00e4ljundina<\/a><\/noindex>, siis see n\u00f5uab 4 lisaread koodis Terraformis. Kui k\u00fcsisin, kas CloudFormationis on sarnane lahendus, juhatati mind kogu git-repositooriumi juurde, kus oli juurutamisteenus jne: ja k\u00f5ik see oli selle nimel, et oleksime v\u00f5inud teha \u00f5nnetud 4 rida koodi Terraformis.<\/p>\n<p><\/p>\n<h3 id=\"on-luchshe-obnaruzhivaet-dreyf\">See tuvastab drifi paremini<\/h3>\n<p><\/p>\n<blockquote><p>Veenduge, et reaalsus vastab ootustele.<\/p><\/blockquote>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/blogs\/aws\/new-cloudformation-drift-detection\/\">Drifi tuvastamine<\/a><\/noindex> on v\u00e4ga v\u00f5imas operatsioonide koodina funktsioon, kuna see aitab veenduda, et reaalsus vastab ootustele. See on saadaval nii CloudFormationis kui ka Terraformis. Kuid stacki kasvu korral andis drifi otsimine CloudFormationis \u00fcha rohkem valeh\u00e4ireid.<\/p>\n<p><\/p>\n<p>Terraformiga on teil oluliselt arenenumad eluts\u00fckli konksud drifi tuvastamiseks. N\u00e4iteks sisestate k\u00e4su <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/configuration\/resources.html#ignore_changes\">ignore_changes<\/a><\/noindex> otse ECS-\u00fclesande m\u00e4\u00e4ratlemisse, kui soovite ignoreerida muudatusi m\u00f5nes konkreetse \u00fclesande m\u00e4\u00e4ratluses, ignoreerimata samas muudatusi kogu ECSi juurutuses.<\/p>\n<p><\/p>\n<h2 id=\"cdk-i-buduschee-cloudformation\">CDK ja CloudFormationi tulevik<\/h2>\n<p><\/p>\n<p>CloudFormationiga on raske suurtel, infrastruktuuri\u00fcleselt laialdastel aladel hallata. Paljusid neist raskustest on tunnustatud ja t\u00f6\u00f6riist vajab selliseid asju nagu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/en_pv\/cdk\/latest\/guide\/home.html\">aws-cdk<\/a><\/noindex>, struktuur, et m\u00e4\u00e4ratleda pilveteenuste infrastruktuur koodina ja edastada see AWS CloudFormationi kaudu. Huvitav on n\u00e4ha, mis ootab aws-cdkt tulevikus, kuid tal on raske konkureerida teiste Terraformi eelistega; CloudFormationi sisenemiseks on vajalikud globaalsed muudatused.<\/p>\n<p><\/p>\n<h3 id=\"chtoby-terraform-ne-razocharoval\">Et Terraform ei pettuks<\/h3>\n<p><\/p>\n<blockquote><p>\u042d\u0442\u043e \u0436\u0435 &#171;\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0430\u043a \u041a\u041e\u0414&#187;, \u0430 \u043d\u0435 &#171;\u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442&#187;.<\/p><\/blockquote>\n<p>Minu esialgne mulje Terraformist oli \u00fcsna halb. Arvan, et ma lihtsalt ei m\u00f5istnud suhtumist. Peaaegu k\u00f5ik insenerid tajuvad seda esmakordselt tahtmatult kui tekstivormingut, mille tuleb muuta soovitud infrastruktuuriks. EI PEAA NII.<\/p>\n<p><\/p>\n<h3 id=\"propisnye-istiny-horoshey-razrabotki-po-otnosyatsya-i-k-terraform\">Hea tarkvaraarenduse p\u00f5hialused kehtivad ka Terraformi kohta<\/h3>\n<p><\/p>\n<p>Olen n\u00e4inud, kuidas paljusid h\u00e4id koodiloome praktikaid eiratakse Terraformis. Olete aastaid \u00f5ppinud, et saada heaks programmeerijaks. \u00c4rge loobuge sellest kogemusest lihtsalt seet\u00f5ttu, et t\u00f6\u00f6tate Terraformiga. Heade tarkvaraarenduse p\u00f5hit\u00f5dede reeglid kehtivad ka Terraformi kohta.<\/p>\n<p><\/p>\n<h3 id=\"kak-uzh-kod-i-ne-zadokumentirovat\">Kuidas saaks koodi mitte dokumenteerida?<\/h3>\n<p><\/p>\n<p>Olen kohanud tohutuid Terraformi steke t\u00e4iesti ilma dokumentatsioonita. Kuidas saab kirjutada kode lehek\u00fclgedena \u2014 t\u00e4iesti ilma dokumentatsioonita? Lisage dokumentatsioon, kus seletatakse teie <strong>koodi<\/strong> Terraform (\u0443\u0434\u0430\u0440\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0430 \u0441\u043b\u043e\u0432\u043e &#171;\u043a\u043e\u0434&#187;), \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0442\u0430\u043a \u0432\u0430\u0436\u0435\u043d, \u0438 \u0447\u0442\u043e \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435.<\/p>\n<p><\/p>\n<h3 id=\"kak-mozhno-razvorachivat-servisy-kotorye-nekogda-byli-odnoy-bolshoy-funkciey-main\">Kuidas saab k\u00e4ivitada teenuseid, mis olid kunagi \u00fcks suur main() funktsioon?<\/h3>\n<p><\/p>\n<p>Olen kohanud v\u00e4ga keerulisi Terraformi steke, mis esitatakse \u00fchtse moodulina. Miks me ei k\u00e4ita tarkvara nii? Miks me jagame suuri funktsioone v\u00e4iksemateks? Samad vastused kehtivad ka Terraformi puhul. Kui teie moodul on liiga suur \u2014 tuleb see jagada v\u00e4iksemateks mooduliteks.<\/p>\n<p><\/p>\n<h3 id=\"razve-vasha-kompaniya-ne-polzuetsya-bibliotekami\">Kas teie ettev\u00f5te ei kasuta raamatukogusid?<\/h3>\n<p><\/p>\n<p>\u042f \u0432\u0438\u0434\u0435\u043b, \u043a\u0430\u043a \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0440\u0430\u0441\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Terraform, \u0442\u0443\u043f\u043e \u043a\u043e\u043f\u0438-\u043f\u0435\u0439\u0441\u0442\u0438\u043b\u0438 \u0433\u0440\u043e\u043c\u0430\u0434\u043d\u044b\u0435 \u043a\u0443\u0441\u043a\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u0432\u044b\u0440\u044f\u043b\u0438 \u0438\u0445, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0412\u043e\u0442 \u0432\u044b \u0443 \u0441\u0435\u0431\u044f \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043b\u0438 \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a \u0441 &#171;\u0431\u043e\u0435\u0432\u044b\u043c&#187; \u043a\u043e\u0434\u043e\u043c? \u041c\u044b \u0436\u0435 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438. \u0414\u0430, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=PAAkCSZUG1c&amp;t=9m28s\">mitte k\u00f5ike ei pea olema raamatukogu,<\/a><\/noindex> aga kuhu me ilma \u00fchiste raamatukogudeta \u00fcldse j\u00f5uame?!<\/p>\n<p><\/p>\n<h3 id=\"razve-vy-ne-polzuetes-pep8-ili-gofmt\">Kas te ei kasuta PEP8 v\u00f5i gofmt?<\/h3>\n<p><\/p>\n<p>Enamikus keeltes on olemas standardne vastuv\u00f5etud vormindamisre\u017eiim. Pythonis on see PEP8. Go puhul \u2014 gofmt. Terraformil on oma: <code>terraform fmt<\/code>. Kasutage seda julgelt! <\/p>\n<p><\/p>\n<h3 id=\"vy-stanete-polzovatsya-react-ne-znaya-javascript\">Kas hakkate Reacti kasutama, teadmata JavaScripti?<\/h3>\n<p><\/p>\n<p>Terraformi moodulid v\u00f5ivad lihtsustada teie loodud keerulise infrastruktuuri teatud osa, kuid see ei t\u00e4henda, et te ei peaks sellest \u00fcldse aru saama. Kas soovite kasutada Terraformi \u00f5igesti ilma ressurssidest arusaamata? Olete hukule m\u00e4\u00e4ratud: aeg kulgeb, kuid te ei \u00f5pi kunagi Terraformi.<\/p>\n<p><\/p>\n<h3 id=\"vy-kodite-singltonami-ili-vnedryaya-zavisimosti\">Kas kirjutate tegelasi, v\u00f5i kasutate s\u00f5ltuvusi?<\/h3>\n<p><\/p>\n<p>S\u00f5ltuvuste rakendamine on tunnustatud parim tava tarkvara arendamiseks, mida eelistavad singlitoad. Kuidas see Terraformis kasulik on? Olen kohanud Terraformi mooduleid, mis s\u00f5ltuvad kaugolekust. Selle asemel, et kirjutada mooduleid, mis t\u00f5mbavad kaugolekust, kirjutage moodul, mis v\u00f5tab parameetreid. Ja seej\u00e4rel seadke need parameetrid moodulisse.<\/p>\n<p><\/p>\n<h3 id=\"vashi-biblioteki-delayut-desyat-veschey-horosho-ili-odnu---otlichno\">Kas teie raamatukogud teevad k\u00fcmmet asja h\u00e4sti v\u00f5i \u00fchte \u2013 suurep\u00e4raselt?<\/h3>\n<p><\/p>\n<p>Parimad toimivad raamatukogud on keskendunud \u00fchele \u00fclesandele, millega nad h\u00e4sti toime tulevad. Selle asemel, et kirjutada suuri Terraformi mooduleid, mis p\u00fc\u00fcavad teha k\u00f5ike korraga, jagage need osadeks, mis teevad midagi \u00fchte h\u00e4sti. Ja seej\u00e4rel \u00fchendage need vastavalt vajadusele.<\/p>\n<p><\/p>\n<h3 id=\"kak-vy-proizvodite-izmeneniya-v-bibliotekah-bez-obratnoy-sovmestimosti\">Kuidas te muudate raamatukogusid ilma tagasip\u00f6\u00f6rduva \u00fchilduvuseta?<\/h3>\n<p><\/p>\n<p>\u00dcldisele Terraformi moodulile, nagu tavalisele raamatukogule, on vajalik teavitada kasutajaid muudatustest, mis ei ole tagasip\u00f6\u00f6rduva \u00fchilduvusega. Kui selliseid muudatusi tehakse raamatukogudes, on see h\u00e4iriv, ja sama h\u00e4iriv on, kui Terraformi moodulites tehakse tagasip\u00f6\u00f6rduva \u00fchilduvuseta muudatusi. Soovitatav on kasutada git siltide ja semver'i rakendamisel Terraformi mooduleid.<\/p>\n<p><\/p>\n<h3 id=\"proizvodstvennyy-servis-zapuschen-u-vas-na-noutbuke-ili-v-datacentre\">Kas teie tooteteenus t\u00f6\u00f6tab teie s\u00fclearvutis v\u00f5i andmekeskuses?<\/h3>\n<p><\/p>\n<p>Hashicorpil on sellised t\u00f6\u00f6riistad nagu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/cloud\/index.html\">terraform cloud<\/a><\/noindex> teie terraformi k\u00e4ivitamiseks. Need tsentraliseeritud teenused lihtsustavad juhtimist, auditeerimist ja muutuste heakskiitmist terraformis.<\/p>\n<p><\/p>\n<h3 id=\"razve-vy-ne-pishete-testy\">Kas te ei kirjuta teste?<\/h3>\n<p><\/p>\n<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u043f\u0440\u0438\u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043a\u043e\u0434 \u043d\u0443\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0441\u0430\u043c\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0431\u0438\u0432\u0430\u044e\u0442 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0441 Terraform. \u0414\u043b\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044d\u0442\u043e \u0447\u0440\u0435\u0432\u0430\u0442\u043e \u043a\u043e\u0432\u0430\u0440\u043d\u044b\u043c\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u042f \u0441\u043e\u0432\u0435\u0442\u0443\u044e &#171;\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c&#187; \u0438\u043b\u0438 &#171;\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b&#187; \u0441\u0442\u0435\u043a\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f CI\/CD.<\/p>\n<p><\/p>\n<h3 id=\"terraform-i-mikroservisy\">Terraform ja mikroteenused<\/h3>\n<p><\/p>\n<blockquote><p>Mikroteenuste ettev\u00f5tete elu ja surm s\u00f5ltuvad kiirusest, uuendamisest ja uute mikroteenuste t\u00f6\u00f6 virnade h\u00e4vitamisest.<\/p><\/blockquote>\n<p>K\u00f5ige levinum negatiivne aspekt, mis on seotud mikroteenuste arhitektuuridega ja mille eest ei p\u00e4\u00e4se, on seotud t\u00f6\u00f6ga, mitte koodiga. Kui v\u00f5tta Terraform lihtsalt kui viisi, kuidas automaatiseerida ainult mikroteenuste arhitektuuri infrastruktuuri, siis v\u00f5tate endalt \u00e4ra selle s\u00fcsteemi t\u00f5elised eelised. N\u00fc\u00fcd on juba <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=HcmPi7-IVQo\">k\u00f5ik \u2013 nagu kood<\/a><\/noindex>.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/474546\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c. \u0417\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2014 Infrastructure as Code, \u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 AWS, \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430: Terraform \u0438 CloudFormation. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Terraform \u0438 CloudFormation \u0414\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52367","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c.\" \/>\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\/pereshel-s-terraform-na-cloudformation-i-pozhalel\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\u041f\u0435\u0440\u0435\u0448\u0435\u043b \u0441 Terraform \u043d\u0430 CloudFormation \u2014 \u0438 \u043f\u043e\u0436\u0430\u043b\u0435\u043b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel\" \/>\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=\"2019-11-06T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:04+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\udd47Registreerisin CloudFormation'i peale Terraform'i \u2014 ja kahetsen | ProHoster","description":"Esitle infrastruktuuri koodina korduvate tekstivormingutes - see on parim praktika s\u00fcsteemide jaoks, mis ei n\u00f5ua hiirekasutust.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel","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\u041f\u0435\u0440\u0435\u0448\u0435\u043b \u0441 Terraform \u043d\u0430 CloudFormation \u2014 \u0438 \u043f\u043e\u0436\u0430\u043b\u0435\u043b | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel","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":"2019-11-06T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52367","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":"2026-01-24 03:23:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:44:44","updated":"2026-01-24 03:23:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/52367","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=52367"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/52367\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=52367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=52367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=52367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}