{"id":37586,"date":"2019-10-31T22:18:27","date_gmt":"2019-10-31T19:18:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/infrastructure-as-code-pervoe-znakomstvo\/"},"modified":"2019-10-31T22:18:27","modified_gmt":"2019-10-31T19:18:27","slug":"infrastructure-as-code-pervoe-znakomstvo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastructure as code: f\u00f6rsta bekantskapen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vi h\u00e5ller p\u00e5 med onboarding av SRE-teamet p\u00e5 f\u00f6retaget. Jag kom in i denna historia fr\u00e5n utvecklingssidan. Under processen har jag f\u00e5tt tankar och insikter som jag vill dela med andra utvecklare. I denna reflekterande artikel pratar jag om vad som h\u00e4nder, hur det h\u00e4nder och hur alla ska forts\u00e4tta att leva med detta. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/d154a2fbbd0dd846c763db178f02702e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Forts\u00e4ttning p\u00e5 en serie artiklar skrivna inspirerade av f\u00f6rel\u00e4sningar p\u00e5 v\u00e5rt interna evenemang. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/462033\/\">DevForum<\/a><\/noindex><\/b>: <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/463469\/\">1. Schr\u00f6dingers katt utan l\u00e5da: konsensusproblemet i distribuerade system.<\/a><\/noindex><br \/>\n2. Infrastruktur som kod. (Du \u00e4r h\u00e4r)<br \/>\n3. Generering av Typescript-kontrakt fr\u00e5n C#-modeller. (P\u00e5g\u00e5ende&#8230;)<br \/>\n4. Introduktion till Raft-konsensusalgoritmen. (P\u00e5g\u00e5ende&#8230;)<br \/>\n&#8230;<\/p><\/blockquote>\n<p>\nVi beslutade att skapa ett SRE-team genom att f\u00f6rverkliga id\u00e9erna <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Vi anst\u00e4llde programmerare fr\u00e5n v\u00e5ra egna utvecklare och skickade dem p\u00e5 utbildning i flera m\u00e5nader. <\/p>\n<p>Teamet stod inf\u00f6r f\u00f6ljande utbildningsuppgifter:<\/p>\n<ul>\n<li>Att beskriva v\u00e5r infrastruktur, som till st\u00f6rsta delen finns i Microsoft Azure, i form av kod (Terraform och allt som h\u00f6r till). <\/li>\n<li>Att l\u00e4ra utvecklarna att arbeta med infrastrukturen. <\/li>\n<li>Att f\u00f6rbereda utvecklarna f\u00f6r att ha jour.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vi inf\u00f6r begreppet Infrastruktur som kod.<\/h2>\n<p>\nI den vanliga v\u00e4rldens modell (klassisk administration) finns kunskapen om infrastrukturen p\u00e5 tv\u00e5 st\u00e4llen:<\/p>\n<ol>\n<li>Antingen i form av kunskap i experternas huvuden.<img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Eller finns dessa uppgifter p\u00e5 vissa maskiner, varav en del experterna k\u00e4nner till. Men det \u00e4r inte s\u00e4kert att en person utifr\u00e5n (i h\u00e4ndelse av att hela v\u00e5rt team pl\u00f6tsligt d\u00f6r) kan f\u00f6rst\u00e5 vad som fungerar och hur. Det kan finnas mycket information p\u00e5 maskinen: \u00e5tkomster, cron-jobb, en f\u00f6rberedande (se. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk montering<\/a><\/noindex>) disk och helt enkelt en o\u00e4ndlig lista \u00f6ver vad som kan ske. Det \u00e4r sv\u00e5rt att f\u00f6rst\u00e5 vad som faktiskt h\u00e4nder.<img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nI b\u00e5da fallen hamnar vi i en f\u00e4lla, d\u00e4r vi blir beroende av:<\/p>\n<ul>\n<li>antingen av en m\u00e4nniska, som \u00e4r d\u00f6dlig och utsatt f\u00f6r sjukdomar, k\u00e4rlek, hum\u00f6rsv\u00e4ngningar och helt enkelt vanliga avsked;<\/li>\n<li>eller av en fysiskt fungerande maskin, som ocks\u00e5 kan falla, stj\u00e4las, ger ov\u00e4ntade situationer och besv\u00e4r. <\/li>\n<\/ul>\n<p>\nSj\u00e4lvklart framst\u00e5r l\u00f6sningen som att i idealfallet allt b\u00f6r \u00f6vers\u00e4ttas till m\u00e4nniskol\u00e4sbar, underh\u00e5llen och kvalitetskommenterad kod. <\/p>\n<p>S\u00e5ledes \u00e4r infrastruktur som kod (Infrastructure as Code \u2013 IaC) en beskrivning av all befintlig infrastruktur i form av kod, samt de medel som beh\u00f6vs f\u00f6r att arbeta med den och f\u00f6r att realisera faktisk infrastruktur fr\u00e5n den.<\/p>\n<p><b class=\"spoiler_title\">Varf\u00f6r \u00f6vers\u00e4tta allt till kod<\/b>M\u00e4nniskor \u00e4r inte maskiner. De kan inte komma ih\u00e5g allt. Reaktionen hos en m\u00e4nniska och en maskin \u00e4r olika. Allt som \u00e4r automatiserat fungerar potentiellt snabbare \u00e4n allt som g\u00f6rs av en m\u00e4nniska. Det viktigaste \u00e4r en enda sanning (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">Varifr\u00e5n kommer nya SRE-ingenj\u00f6rer<\/b>S\u00e5 vi beslutade oss f\u00f6r att rekrytera nya SRE-ingenj\u00f6rer, men var hittar vi dem? Boken med de r\u00e4tta svaren (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) s\u00e4ger oss: fr\u00e5n utvecklare. De arbetar med kod, och du uppn\u00e5r det perfekta tillst\u00e5ndet.<\/p>\n<p>Vi har s\u00f6kt l\u00e4nge och grundligt efter dem p\u00e5 arbetsmarknaden utanf\u00f6r v\u00e5rt f\u00f6retag. Men vi m\u00e5ste erk\u00e4nna att vi inte hittade en enda som matchade v\u00e5ra krav. Vi var tvungna att leta bland v\u00e5ra egna. <\/p>\n<h2>Problem med Infrastructure as Code<\/h2>\n<p>\nL\u00e5t oss nu titta p\u00e5 exempel p\u00e5 hur infrastruktur kan integreras i kod. Koden \u00e4r v\u00e4lskriven, av h\u00f6g kvalitet, med kommentarer och indrag. <\/p>\n<p>Exempel p\u00e5 kod fr\u00e5n Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExempel p\u00e5 kod fr\u00e5n Ansible.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMina herrar, men om allt vore s\u00e5 enkelt! Vi lever i den verkliga v\u00e4rlden, och den \u00e4r alltid redo att \u00f6verraska dig, att ge dig \u00f6verraskningar och problem. Det finns inga undantag h\u00e4r.<\/p>\n<p><b>1. Det f\u00f6rsta problemet \u00e4r att IaC oftast \u00e4r n\u00e5gon form av dsl.<\/b><\/p>\n<p>Och DSL \u00e4r i sin tur en beskrivning av strukturen. Mer specifikt det som du b\u00f6r ha: Json, Yaml, modifieringar fr\u00e5n vissa stora f\u00f6retag som har skapat sin egen dsl (HCL anv\u00e4nds i Terraform). <\/p>\n<p>Problemet \u00e4r att den l\u00e4tt kan sakna s\u00e5dana bekanta saker som:<\/p>\n<ul>\n<li>variabler;<\/li>\n<li>villkor;<\/li>\n<li>ibland saknas kommentarer, till exempel i Json, d\u00e4r de inte \u00e4r f\u00f6rutsedda som standard;<\/li>\n<li>funktioner;<\/li>\n<li>och det \u00e4r inte ens det mest avancerade, som klasser, arv och s\u00e5dant.<\/li>\n<\/ul>\n<p>\n <b>2. Det andra problemet med s\u00e5dan kod \u00e4r att det oftast \u00e4r en heterogen milj\u00f6<\/b>. Vanligtvis arbetar du och sitter med C#, det vill s\u00e4ga med ett spr\u00e5k, en stack, ett ekosystem. H\u00e4r har du ett stort utbud av teknologier. <\/p>\n<p>En ganska verklig situation \u00e4r n\u00e4r en bash-skript med Python k\u00f6r en process d\u00e4r Json smyger sig in. Du analyserar det, och sedan ger ytterligare en generator ut ytterligare 30 filer. F\u00f6r allt detta kommer ing\u00e5ngsvariabler fr\u00e5n Azure Key Vault, som h\u00e4mtas av ett plugin till drone.io, skrivet i Go, och dessa variabler g\u00e5r igenom en yaml som genererades av en templator jsonnet. Det \u00e4r ganska sv\u00e5rt att ha en tydligt v\u00e4lbeskriven kod n\u00e4r din milj\u00f6 \u00e4r s\u00e5 varierad. <\/p>\n<p>Traditionell utveckling inom ett enda uppdrag sker med ett spr\u00e5k. H\u00e4r arbetar vi dock med ett stort antal spr\u00e5k. <\/p>\n<p><b>3. Det tredje problemet \u00e4r verktygen.<\/b>. Vi \u00e4r vana vid fantastiska redakt\u00f6rer (Ms Visual Studio, Jetbrains Rider) som g\u00f6r allt \u00e5t oss. Och \u00e4ven om vi g\u00f6r ett misstag, kommer de att ber\u00e4tta att vi har fel. Det verkar vara normalt och naturligt. <\/p>\n<p>Men n\u00e4ra till hands finns VSCode, d\u00e4r det finns n\u00e5gra plugins som p\u00e5 n\u00e5got s\u00e4tt installeras, st\u00f6ds eller inte st\u00f6ds. Nya versioner kommer ut och det finns inget st\u00f6d f\u00f6r dem. Ett enkelt byte av en funktion (\u00e4ven om den finns) blir en sv\u00e5r och icke-trivial uppgift. En enkel omd\u00f6pning av en variabel betyder att g\u00f6ra en ers\u00e4ttning i projektet som omfattar tiotals filer. Man f\u00e5r hoppas att den ers\u00e4tter det som beh\u00f6vs. Det finns sj\u00e4lvklart viss syntaxmarkering, det finns autokomplettering, och n\u00e5gonstans finns det formatering (men jag fick det inte att fungera i Terraform p\u00e5 Windows). <\/p>\n<p>Vid tidpunkten f\u00f6r skrivandet av artikeln <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">vscode-terraform plugin<\/a><\/noindex> har \u00e4nnu inte sl\u00e4ppts f\u00f6r att st\u00f6dja version 0.12, \u00e4ven om den redan har sl\u00e4ppts i tre m\u00e5nader.<\/p>\n<h2>Det \u00e4r dags att gl\u00f6mma&#8230;<\/h2>\n<p><\/p>\n<ol>\n<li>Debugging.<\/li>\n<li>Refactoring verktyg.<\/li>\n<li>Autokomplettering.<\/li>\n<li>Uppt\u00e4ckter av fel vid kompilering.<\/li>\n<\/ol>\n<p>\nDet l\u00e5ter kanske l\u00f6jligt, men det \u00f6kar faktiskt tiden f\u00f6r utveckling och \u00f6kar antalet fel som ofelbart uppst\u00e5r. <\/p>\n<p>Det mest skr\u00e4mmande \u00e4r att vi tvingas t\u00e4nka inte p\u00e5 hur vi ska designa, organisera filer i mappar, dekomponera, g\u00f6ra koden underh\u00e5llbar och l\u00e4sbar, utan hur jag korrekt ska skriva det h\u00e4r kommandot, eftersom jag skrev det p\u00e5 n\u00e5got s\u00e4tt fel. <\/p>\n<p>Som nyb\u00f6rjare f\u00f6rs\u00f6ker du f\u00f6rst\u00e5 Terraform, men IDE:n hj\u00e4lper dig inte p\u00e5 n\u00e5got s\u00e4tt. N\u00e4r det finns dokumentation \u2013 gick in, tittade. Men om du skulle l\u00e4ra dig ett nytt programmeringsspr\u00e5k skulle IDE:n ha f\u00f6reslagit att det finns en s\u00e5dan typ, medan det inte finns en annan. \u00c5tminstone p\u00e5 niv\u00e5n av int eller string. Detta \u00e4r ofta anv\u00e4ndbart. <\/p>\n<h2>Men hur \u00e4r det med tester?<\/h2>\n<p>\nNi fr\u00e5ga: \"Vad s\u00e4ger ni om tester, mina herrar programmerare?\" Ser\u00f6sa killar testar allt i produktion, och det \u00e4r h\u00e5rt. H\u00e4r \u00e4r ett exempel p\u00e5 en enhetstest f\u00f6r Terraform-modulen fr\u00e5n webbplatsen. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/azure\/terraform\/terratest-in-terraform-modules\">Microsoft<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe har bra dokumentation. Microsoft har alltid imponerat p\u00e5 mig med sin inst\u00e4llning till dokumentation och utbildning. Men man beh\u00f6ver inte vara farbror Bob f\u00f6r att f\u00f6rst\u00e5 att koden h\u00e4r inte \u00e4r perfekt. Observera valideringen som flyttades \u00e5t h\u00f6ger. <\/p>\n<p>Problemet med enhetstest \u00e4r att vi kan kontrollera korrektheten av JSON p\u00e5 utg\u00e5ngen. Jag kastade in 5 parametrar, och fick en JSON-str\u00e4ng p\u00e5 2000 rader. Jag kan analysera vad som h\u00e4nder h\u00e4r, validera testresultatet... <\/p>\n<p>Det \u00e4r sv\u00e5rt att analysera JSON i Go. Men man m\u00e5ste skriva i Go, eftersom Terraform \u00e4r skrivet i Go \u2013 det \u00e4r en bra praxis att testa i det spr\u00e5k som man skriver i. Sj\u00e4lva koden \u00e4r organiserad mycket svagt. \u00c4nd\u00e5 \u00e4r detta det b\u00e4sta biblioteket f\u00f6r testning. <\/p>\n<p>Sj\u00e4lva Microsoft skriver sina moduler och testar dem p\u00e5 detta s\u00e4tt. Sj\u00e4lvklart \u00e4r detta Open Source. Allt jag pratar om kan du komma och fixa. Jag kan s\u00e4tta mig ner och fixa allt p\u00e5 en vecka, open sourca plugins till VS Code, Terraform, skapa en plugin f\u00f6r Rider. Kanske skriva ett par analyzers, koppla in linters, bidra till ett testbibliotek. Jag kan g\u00f6ra allt detta. Men jag borde inte syssla med det. <\/p>\n<h2>B\u00e4sta praxis inom Infrastructure as Code.<\/h2>\n<p>\nVi g\u00e5r vidare. Om det inte finns tester i IaC, d\u00e5ligt med IDE och verktyg, s\u00e5 m\u00e5ste det \u00e5tminstone finnas b\u00e4sta praxis. Jag gick helt enkelt in p\u00e5 Google Analytics och gjorde en j\u00e4mf\u00f6relse av tv\u00e5 s\u00f6kfr\u00e5gor: Terraform b\u00e4sta praxis och C# b\u00e4sta praxis. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVad ser vi? En obarmh\u00e4rtig statistik som inte g\u00e5r i v\u00e5r fav\u00f6r. N\u00e4r det kommer till m\u00e4ngden material \u2013 samma sak. Inom C#-utveckling simmar vi helt enkelt i material, vi har superba b\u00e4sta praxis, vi har b\u00f6cker skrivna av experter, och \u00e4ven b\u00f6cker skrivna av andra experter som kritiserar dessa b\u00f6cker. En \u00f6verfl\u00f6d av officiell dokumentation, artiklar, utbildningskurser, och nu \u00e4ven Open Source utveckling.<\/p>\n<p>N\u00e4r det kommer till s\u00f6kfr\u00e5gan om IaC: h\u00e4r f\u00f6rs\u00f6ker ni i sm\u00e5 bitar samla information fr\u00e5n presentationer av h\u00f6g belastning eller HashiConf, fr\u00e5n officiell dokumentation och m\u00e5nga \u00e4renden p\u00e5 GitHub. Hur ska man egentligen dela upp dessa moduler, vad ska man g\u00f6ra med dem? Det verkar som en verklig problematik\u2026 Det finns ju ett community, mina herrar, d\u00e4r man f\u00e5r 10 kommentarer p\u00e5 GitHub f\u00f6r varje fr\u00e5ga. Men det \u00e4r inte s\u00e4kert. <\/p>\n<p>Tyv\u00e4rr b\u00f6rjar experterna just nu dyka upp. Det finns fortfarande f\u00f6r f\u00e5 av dem. Och sj\u00e4lva communityn \u00e4r i ett tidigt skede. <\/p>\n<h2>Var \u00e4r allt p\u00e5 v\u00e4g och vad ska man g\u00f6ra<\/h2>\n<p>\nMan kan allt \u00f6verge och \u00e5terv\u00e4nda till C#, till rider-v\u00e4rlden. Men nej. Varf\u00f6r skulle ni ens g\u00f6ra det om ni inte letade efter en l\u00f6sning. H\u00e4r \u00e4r mina subjektiva slutsatser. Ni kan g\u00e4rna diskutera med mig i kommentarerna, det skulle bli intressant. <\/p>\n<p>Personligen satsar jag p\u00e5 flera saker:<\/p>\n<ol>\n<li>Utvecklingen inom detta omr\u00e5de g\u00e5r mycket snabbt. H\u00e4r \u00e4r en graf \u00f6ver f\u00f6rfr\u00e5gningar om DevOps.\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f6rsta bekantskapen\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKanske \u00e4r \u00e4mnet en hype, men faktumet att omr\u00e5det v\u00e4xer ger viss hopp. <\/p>\n<p>Om n\u00e5got v\u00e4xer s\u00e5 snabbt, kommer det definitivt att dyka upp kloka m\u00e4nniskor som s\u00e4ger hur man b\u00f6r g\u00f6ra och inte g\u00f6ra. \u00d6kande popularitet leder till att kanske n\u00e5gon f\u00e5r tid att slutligen skriva en plugin till jsonnet f\u00f6r vscode, som g\u00f6r det m\u00f6jligt att g\u00e5 direkt till implementationen av funktionen, ist\u00e4llet f\u00f6r att s\u00f6ka efter den via ctrl+shift+f. N\u00e4r allt utvecklas, dyker det upp fler material. Utgivningen av boken fr\u00e5n Google om SRE \u00e4r ett utm\u00e4rkt exempel.<\/li>\n<li>Det finns utvecklade metoder och praxis inom vanlig utveckling som vi framg\u00e5ngsrikt kan till\u00e4mpa h\u00e4r. Ja, det finns nyanser med testning och heterogen milj\u00f6, bristande verktyg, men en enorm m\u00e4ngd praxis har samlats som kan vara anv\u00e4ndbar och hj\u00e4lpa.\n<p>Ett banalt exempel: samarbete genom pair programming. Det hj\u00e4lper verkligen att f\u00f6rst\u00e5 b\u00e4ttre. N\u00e4r du har en granne som ocks\u00e5 f\u00f6rs\u00f6ker f\u00f6rst\u00e5 n\u00e5got, kommer ni tillsammans att f\u00f6rst\u00e5 b\u00e4ttre.<\/p>\n<p> Att f\u00f6rst\u00e5 hur refaktorisering g\u00f6rs hj\u00e4lper \u00e4ven i en s\u00e5dan situation att genomf\u00f6ra den. Det vill s\u00e4ga, du kan inte f\u00f6r\u00e4ndra allt p\u00e5 en g\u00e5ng, utan f\u00f6r\u00e4ndra namnen f\u00f6rst, sedan f\u00f6r\u00e4ndra placeringen, och kanske v\u00e4lja ut en del, oops, h\u00e4r saknas kommentarer. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Slutsats<\/h2>\n<p>\nTrots att mina resonemang kan verka pessimistiska, ser jag hoppfullt p\u00e5 framtiden och hoppas verkligen att vi (och ni) kommer att lyckas.<\/p>\n<blockquote><p>F\u00f6ljande del av artikeln f\u00f6rbereds. I den kommer jag att ber\u00e4tta om hur vi f\u00f6rs\u00f6kte till\u00e4mpa metoder fr\u00e5n agil utveckling f\u00f6r att f\u00f6rb\u00e4ttra v\u00e5r inl\u00e4rningsprocess och v\u00e5rt arbete med infrastrukturen.<\/p><\/blockquote>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435-\u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0438 \u044f \u0433\u043e\u0432\u043e\u0440\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0438 \u043a\u0430\u043a \u0432\u0441\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\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\/sv\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\udd47Infrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\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-10-31T19:18:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:27+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\udd47Infrastructure as code: f\u00f6rsta bekantskapen | ProHoster","description":"Vi har en onboardingprocess f\u00f6r SRE-teamet p\u00e5 v\u00e5rt f\u00f6retag. Jag kom in i detta fr\u00e5n utvecklingssidan. Under processen har jag f\u00e5tt tankar och insikter som jag vill dela med andra utvecklare.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\udd47Infrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e | ProHoster","og:description":"\u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430 SRE-\u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u042f \u0437\u0430\u0448\u0451\u043b \u0432\u043e \u0432\u0441\u044e \u044d\u0442\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u0438\u043d\u0441\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","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-10-31T19:18:27+00:00","article:modified_time":"2019-10-31T19:18:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37586","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-23 18:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:29:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}