{"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\/da\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastructure as code: f\u00f8rste indblik","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vi er i vores virksomhed i gang med at onboarde SRE-teamet. Jeg kom ind i det hele fra udviklersiden. Undervejs har jeg f\u00e5et nogle tanker og indsigter, som jeg gerne vil dele med andre udviklere. I denne artikel-refleksion taler jeg om, hvad der sker, hvordan det sker, og hvordan vi alle skal leve med det fremover. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" 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>Fortsettelse af serien af artikler skrevet med inspiration fra pr\u00e6sentationer ved vores interne arrangement. <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 kat uden kasse: konsensusproblemet i distribuerede systemer.<\/a><\/noindex><br \/>\n2. Infrastruktur som kode. (Du er her)<br \/>\n3. Generering af Typescript-kontrakter fra C#-modeller. (Undervejs...)<br \/>\n4. Introduktion til Raft-konsensusalgoritmen. (Undervejs...)<br \/>\n\u2026<\/p><\/blockquote>\n<p>\nVi besluttede at danne et SRE-team og implementere id\u00e9erne fra <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Vi rekrutterede programm\u00f8rer fra vores egne udviklere og sendte dem p\u00e5 tr\u00e6ning i flere m\u00e5neder. <\/p>\n<p>Teamet stod overfor f\u00f8lgende undervisningsopgaver:<\/p>\n<ul>\n<li>At beskrive vores infrastruktur, som for det meste er i Microsoft Azure, som kode (Terraform og alt relateret). <\/li>\n<li>At l\u00e6re udviklerne at arbejde med infrastrukturen. <\/li>\n<li>At forberede udviklerne til vagter.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vi indf\u00f8rer begrebet Infrastruktur som kode.<\/h2>\n<p>\nI den normale verdensmodel (klassisk administration) findes viden om infrastrukturen to steder:<\/p>\n<ol>\n<li>Enten i form af viden i hovedet p\u00e5 eksperterne.<img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Eller disse oplysninger findes p\u00e5 nogle maskiner, hvor dele af dem kendes af eksperterne. Men det er ikke sikkert, at en person udefra (i tilf\u00e6lde af at hele vores team pludselig d\u00f8r) kan finde ud af, hvad der fungerer og hvordan. Der kan v\u00e6re mange oplysninger p\u00e5 maskinen: adgangsrettigheder, cron-jobs, en underl\u00e6rt (se. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk mounting<\/a><\/noindex>) disk og bare en endel\u00f8s liste over alt, hvad der kan ske. Det er sv\u00e6rt at forst\u00e5, hvad der i virkeligheden foreg\u00e5r.<img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nI begge tilf\u00e6lde havner vi i en f\u00e6lde, hvor vi bliver afh\u00e6ngige:<\/p>\n<ul>\n<li>enten af en person, der er d\u00f8delig, udsat for sygdomme, forelskelser, hum\u00f8rsvingninger og simpelthen banal fratr\u00e6den;<\/li>\n<li>eller af en fysisk fungerende maskine, der ogs\u00e5 kan g\u00e5 ned, blive stj\u00e5let, byde p\u00e5 overraskelser og ubehageligheder. <\/li>\n<\/ul>\n<p>\nDet st\u00e5r klart, at idealet er, at alt b\u00f8r overs\u00e6ttes til menneskelig l\u00e6sbar, vedligeholdt og kvalitetskode. <\/p>\n<p>S\u00e5ledes er infrastruktur som kode (Infrastructure as Code \u2013 IaC) en beskrivelse af al eksisterende infrastruktur i form af kode samt tilknyttede v\u00e6rkt\u00f8jer til at arbejde med det og realisere den faktiske infrastruktur.<\/p>\n<p><b class=\"spoiler_title\">Hvorfor overs\u00e6tte alt til kode<\/b>Mennesker er ikke maskiner. De kan ikke huske alt. Reaktionen hos et menneske og en maskine er forskellig. Alt automatiseret fungerer potentielt hurtigere end alt, hvad et menneske g\u00f8r. Det vigtigste er \u00e9n sandhedskilde (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">Hvor kommer nye SRE-ingeni\u00f8rer fra<\/b>S\u00e5 vi har besluttet at onboarde nye SRE-ingeni\u00f8rer, men hvor finder vi dem? Bogen med de rigtige svar (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) fort\u00e6ller os: fra udviklerne. For de arbejder med kode, og du n\u00e5r det ideelle niveau.<\/p>\n<p>Vi har s\u00f8gt l\u00e6nge og grundigt efter dem p\u00e5 arbejdsmarkedet uden for vores virksomhed. Men vi m\u00e5 erkende, at vi ikke fandt nogen, der passede til vores krav. Vi m\u00e5tte unders\u00f8ge internt blandt vores egne. <\/p>\n<h2>Problemer med infrastruktur som kode<\/h2>\n<p>\nLad os nu se eksempler p\u00e5, hvordan infrastruktur kan v\u00e6re indlejret i kode. Koden er godt skrevet, af h\u00f8j kvalitet, med kommentarer og indrykninger. <\/p>\n<p>Kodeeksempel fra Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKodeeksempel fra Ansible.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMine damer og herrer, men hvis alt var s\u00e5 enkelt! Vi lever i den virkelige verden, og den er altid klar til at overraske dig med overraskelser og problemer. Ikke uden problemer her heller.<\/p>\n<p><b>1. Det f\u00f8rste problem er, at IaC i de fleste tilf\u00e6lde er en form for DSL.<\/b><\/p>\n<p>Og DSL, p\u00e5 sin side, er en beskrivelse af strukturen. Mere pr\u00e6cist, hvad du skal have: Json, Yaml, modificationer fra st\u00f8rre virksomheder, der har opfundet deres egen DSL (HCL anvendes i Terraform). <\/p>\n<p>Problemet er, at der m\u00e5ske mangler nogle af de velkendte ting, som:<\/p>\n<ul>\n<li>variabler;<\/li>\n<li>betingelser;<\/li>\n<li>der er steder uden kommentarer, for eksempel er kommentarer ikke forudset i Json som standard;<\/li>\n<li>funktioner;<\/li>\n<li>og det er slet ikke for at n\u00e6vne s\u00e5danne h\u00f8jniveaufunktioner som klasser, arv og alt det der.<\/li>\n<\/ul>\n<p>\n <b>2. Det andet problem med denne kode er, at det oftest er et heterogent milj\u00f8.<\/b>. Normalt sidder du og arbejder med C#, dvs. et sprog, en stack, et \u00f8kosystem. Og her har du et stort udvalg af teknologier. <\/p>\n<p>En ret realistisk situation er, n\u00e5r en bash med Python starter en proces, hvori der indg\u00e5r JSON. Du analyserer det, og derefter genererer en eller anden generator endnu 30 filer. For alt dette kommer indgangsvariabler fra Azure Key Vault, som er trukket ind af et plugin til drone.io, skrevet i Go, og disse variabler g\u00e5r gennem yaml, som er blevet genereret fra skabelonmotoren jsonnet. Det er ret sv\u00e6rt at have en strengt veldokumenteret kode, n\u00e5r du har et s\u00e5 forskelligartet milj\u00f8. <\/p>\n<p>Traditionel udvikling inden for en enkelt opgave foreg\u00e5r med \u00e9t sprog. Her arbejder vi derimod med mange forskellige sprog. <\/p>\n<p><b>3. Det tredje problem \u2013 det er v\u00e6rkt\u00f8jerne.<\/b>. Vi er vant til flotte redakt\u00f8rer (Ms Visual Studio, Jetbrains Rider), som g\u00f8r alt for os. Og selv hvis vi g\u00e5r i st\u00e5, fort\u00e6ller de os, at vi tager fejl. Det f\u00f8les normalt og naturligt. <\/p>\n<p>Men lige ved siden af er VSCode, hvor der er nogle plugins, som p\u00e5 en eller anden m\u00e5de installeres, underst\u00f8ttes eller ikke underst\u00f8ttes. Nye versioner blev udgivet, men de blev ikke underst\u00f8ttet. Et simpelt skift til implementeringen af en funktion (selv hvis den findes) bliver en kompleks og ikke-trivial opgave. En simpel omd\u00f8bning af en variabel \u2013 det er en erstatning i projektet, der str\u00e6kker sig over dusinvis af filer. Du er heldig, hvis det erstatter det, du beh\u00f8ver. Der er selvf\u00f8lgelig nogle steder med farvefremh\u00e6vning, auto completion, og nogle steder er der formatering (selv om det ikke virkede for mig i terraform p\u00e5 Windows). <\/p>\n<p>P\u00e5 tidspunktet for skrivningen af artiklen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">vscode-terraform plugin<\/a><\/noindex> er endnu ikke blevet frigivet til underst\u00f8ttelse af version 0.12, selvom den allerede er blevet udgivet for 3 m\u00e5neder siden.<\/p>\n<h2>Det er tid til at glemme om...<\/h2>\n<p><\/p>\n<ol>\n<li>Fejlfinding.<\/li>\n<li>Refactoring-v\u00e6rkt\u00f8j.<\/li>\n<li>Auto completion.<\/li>\n<li>Opdagelse af fejl ved compilering.<\/li>\n<\/ol>\n<p>\nDet er morsomt, men det \u00f8ger tiden til udvikling og \u00f8ger antallet af de fejl, som uundg\u00e5eligt opst\u00e5r. <\/p>\n<p>Det v\u00e6rste er, at vi bliver tvunget til ikke at t\u00e6nke p\u00e5, hvordan vi skal designe, organisere filer i mapper, dekomponere, g\u00f8re koden vedligeholdelsesm\u00e6ssig, l\u00e6sbar og s\u00e5 videre, men om hvordan jeg korrekt skriver denne kommando, fordi jeg p\u00e5 en eller anden m\u00e5de skrev den forkert. <\/p>\n<p>Som nybegynder fors\u00f8ger du at forst\u00e5 terraform, men IDE'en hj\u00e6lper dig slet ikke med det. N\u00e5r der er dokumentation \u2013 s\u00e5 g\u00e5r du ind, kigger. Men hvis du skulle l\u00e6re et nyt programmeringssprog, ville IDE'en have foresl\u00e5et, at der fandtes en s\u00e5dan type, men ikke denne. I det mindste p\u00e5 niveauet int eller string. Det er ofte nyttigt. <\/p>\n<h2>Men hvad med testene?<\/h2>\n<p>\nDu sp\u00f8rger: \u201eHvordan st\u00e5r det til med testene, mine herrer programm\u00f8rer?\u201d Seri\u00f8se folk tester alt i produktion, og det er h\u00e5rdt. Her er et eksempel p\u00e5 en enhedstest for et Terraform-modul fra hjemmesiden. <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\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe har en god dokumentation. Microsoft har altid v\u00e6ret imponerende i deres tilgang til dokumentation og uddannelse. Men man beh\u00f8ver ikke at v\u00e6re onkel Bob for at se, at koden her ikke er perfekt. Bem\u00e6rk valideringen, der er placeret til h\u00f8jre. <\/p>\n<p>Problemet med enhedstesten er, at vi kan kontrollere korrektheden af Json p\u00e5 udgangen. Jeg sendte 5 parametre, og jeg fik en Json-streng p\u00e5 2000 linjer. Jeg kan analysere, hvad der sker her, validere testresultatet\u2026 <\/p>\n<p>Det er sv\u00e6rt at analysere Json i Go. Man b\u00f8r skrive i Go, fordi Terraform er skrevet i Go \u2013 det er en god praksis at teste i det sprog, man skriver i. Selve organiseringen af koden er meget svag. Til geng\u00e6ld er dette den bedste biblioteker til testning. <\/p>\n<p>Selv Microsoft skriver deres moduler ved at teste dem p\u00e5 denne m\u00e5de. Selvf\u00f8lgelig er det Open Source. Alt, hvad jeg taler om, kan du komme og reparere. Jeg kan s\u00e6tte mig ned og fikse alt p\u00e5 en uge, open source plugins til VS Code, Terraform, lave et plugin til Rider. M\u00e5ske skrive et par analysatorer, implementere linters, bidrage til et testbibliotek. Jeg kan g\u00f8re det hele. Men det er ikke det, jeg skal besk\u00e6ftige mig med. <\/p>\n<h2>Bedste praksis for Infrastructure as Code<\/h2>\n<p>\nLad os g\u00e5 videre. Hvis der ikke er tests i IaC, og IDE og v\u00e6rkt\u00f8jer er d\u00e5rlige, s\u00e5 b\u00f8r der i det mindste v\u00e6re bedste praksis. Jeg gik bare ind i Google Analytics og sammenlignede to s\u00f8geforesp\u00f8rgsler: Terraform bedste praksis og C# bedste praksis. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvad ser vi? Ublid statistik til vores ulempe. I forhold til m\u00e6ngden af materiale er det det samme. I C# udvikling sv\u00f8mmer vi bare i materialer, vi har overlegen bedste praksis, der er b\u00f8ger skrevet af eksperter samt b\u00f8ger skrevet af andre eksperter, der kritiserer dem. En overflod af officiel dokumentation, artikler, uddannelseskurser, og nu ogs\u00e5 open source udvikling.<\/p>\n<p>Hvad ang\u00e5r foresp\u00f8rgslen om IaC: her pr\u00f8ver du at samle information fra pr\u00e6sentationer fra h\u00f8jbelastede events eller HashiConf, fra den officielle dokumentation og utallige issues p\u00e5 GitHub. Hvordan placerer man overhovedet disse moduler, og hvad skal man g\u00f8re med dem? Det virker som et reelt problem\u2026 Der er et f\u00e6llesskab, mine herrer, hvor du kan f\u00e5 10 kommentarer p\u00e5 GitHub til ethvert sp\u00f8rgsm\u00e5l. Men det er ikke sikkert. <\/p>\n<p>Desv\u00e6rre er eksperterne kun lige begyndt at dukke op nu. Der er simpelthen for f\u00e5 af dem. Og selve f\u00e6llesskabet er stadig i sin sp\u00e6de begyndelse. <\/p>\n<h2>Hvor bev\u00e6ger det hele sig hen, og hvad skal man g\u00f8re?<\/h2>\n<p>\nMan kan v\u00e6lge at kaste alt v\u00e6k og g\u00e5 tilbage til C#, ind i riderens verden. Men nej. Hvorfor skulle man overhovedet besk\u00e6ftige sig med det, hvis man ikke \u00f8nsker at finde en l\u00f8sning? Nedenfor pr\u00e6senterer jeg mine subjektive konklusioner. I er velkomne til at diskutere med mig i kommentarfeltet; det ville v\u00e6re interessant. <\/p>\n<p>Personligt satser jeg p\u00e5 flere ting:<\/p>\n<ol>\n<li>Udviklingen inden for dette omr\u00e5de sker utrolig hurtigt. Jeg viser grafen over foresp\u00f8rgsler relateret til DevOps.\n<p><img decoding=\"async\" alt=\"Infrastructure as code: f\u00f8rste indblik\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e5ske er emnet popul\u00e6rt, men det faktum, at omr\u00e5det vokser, giver en vis h\u00e5b. <\/p>\n<p>Hvis noget vokser s\u00e5 hurtigt, vil der helt sikkert dukke kloge mennesker op, som kan fort\u00e6lle, hvad man skal g\u00f8re, og hvad man ikke skal g\u00f8re. Den stigende popularitet betyder, at nogen m\u00e5ske f\u00e5r tid til endelig at f\u00e6rdigg\u00f8re en plugin til jsonnet for vscode, som g\u00f8r det muligt at g\u00e5 direkte til implementeringen af en funktion i stedet for at lede efter den via ctrl+shift+f. N\u00e5r alt udvikler sig, bliver der mere materiale tilg\u00e6ngeligt. Udgivelsen af Googles bog om SRE er et glimrende eksempel p\u00e5 dette.<\/li>\n<li>Der er udviklet metoder og praksisser inden for normal udvikling, som vi med succes kan anvende her. Ja, der er nuancer med testning og heterogene milj\u00f8er og utilstr\u00e6kkelig v\u00e6rkt\u00f8jsudvikling, men der er samlet et enormt antal praksisser, som kan v\u00e6re nyttige og hj\u00e6lpe.\n<p>Et banalt eksempel: samarbejde gennem pair programming. Det hj\u00e6lper virkelig med at forst\u00e5. N\u00e5r du har en nabo ved siden af dig, som ogs\u00e5 pr\u00f8ver at forst\u00e5 noget, s\u00e5 vil I sammen forst\u00e5 det bedre.<\/p>\n<p> Forst\u00e5elsen af, hvordan refactoring udf\u00f8res, hj\u00e6lper ogs\u00e5 i en s\u00e5dan situation med at udf\u00f8re det. Det vil sige, at du kan \u00e6ndre ikke alt p\u00e5 \u00e9n gang, men \u00e6ndre navngivningen f\u00f8rst, derefter \u00e6ndre placeringen og m\u00e5ske fremh\u00e6ve en del, \u00e5h, og her mangler der kommentarer. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Konklusion<\/h2>\n<p>\nSelvom mine overvejelser kan synes pessimistiske, ser jeg med h\u00e5b mod fremtiden og h\u00e5ber oprigtigt, at vi (og I) vil f\u00e5 det til at lykkes.<\/p>\n<blockquote><p>N\u00e6ste del af artiklen er p\u00e5 vej. I den vil jeg fort\u00e6lle, hvordan vi har fors\u00f8gt at anvende praksisser inden for agil udvikling for at forbedre vores l\u00e6ringsproces og arbejde med infrastrukturer.<\/p><\/blockquote>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\u00f8rste m\u00f8de | ProHoster","description":"Vi har i vores virksomhed en onboarding-proces for SRE-teamet. Jeg kom ind i hele denne historie fra udviklingssiden. Undervejs fik jeg nogle tanker og indsigter, som jeg gerne vil dele med andre udviklere.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}