{"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\/no\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastruktur som kode: en f\u00f8rste introduksjon","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I selskapet v\u00e5rt er det en onboarding-prosess for SRE-teamet. Jeg har tatt del i hele denne prosessen fra utviklersiden. Underveis har jeg f\u00e5tt tanker og innsikter som jeg \u00f8nsker \u00e5 dele med andre utviklere. I denne refleksjonsartikkelen snakker jeg om hva som skjer, hvordan det skjer, og hvordan alle skal leve med dette videre. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" 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 av en serie artikler skrevet med inspirasjon fra presentasjoner p\u00e5 v\u00e5rt 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 katt uten eske: konsensusproblemet i distribuerte systemer.<\/a><\/noindex><br \/>\n2. Infrastruktur som kode. (Du er her)<br \/>\n3. Generering av Typescript-kontrakter fra C#-modeller. (P\u00e5g\u00e5r&#8230;)<br \/>\n4. Innf\u00f8ring i Raft-konsensusalgoritmen. (P\u00e5g\u00e5r&#8230;)<br \/>\n&#8230;<\/p><\/blockquote>\n<p>\nVi har besluttet \u00e5 opprette et SRE-team, basert p\u00e5 ideene <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Vi har valgt programmerere fra v\u00e5re egne utviklere og sendt dem p\u00e5 kurs i flere m\u00e5neder. <\/p>\n<p>Teamet hadde f\u00f8lgende l\u00e6ringsoppgaver:<\/p>\n<ul>\n<li>\u00c5 beskrive infrastrukturen v\u00e5r, som stort sett er i Microsoft Azure, som kode (Terraform og alt relatert). <\/li>\n<li>\u00c5 l\u00e6re utviklerne \u00e5 arbeide med infrastrukturen. <\/li>\n<li>\u00c5 forberede utviklerne p\u00e5 vaktarbeid.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vi innf\u00f8rer begrepet Infrastruktur som kode<\/h2>\n<p>\nI den vanlige verdensmodellen (klassisk administrasjon) er kunnskap om infrastrukturen i to steder:<\/p>\n<ol>\n<li>Enten i hodene p\u00e5 eksperter.<img decoding=\"async\" alt=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Eller disse opplysningene finnes p\u00e5 maskiner, hvor eksperter kjenner til noen av dem. Men det er ikke sikkert at en utenforst\u00e5ende (hvis hele teamet v\u00e5rt skulle d\u00f8 plutselig) kan forst\u00e5 hva som fungerer og hvordan. P\u00e5 maskinen kan det v\u00e6re mange opplysninger: tilgangsrettigheter, cron-jobber, tilknyttede (se <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">diskmontering<\/a><\/noindex>) disker og bare en endel\u00f8s liste over hva som kan skje. Det er vanskelig \u00e5 forst\u00e5 hva som faktisk skjer.<img decoding=\"async\" alt=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nI begge tilfeller havner vi i en felle, hvor vi blir avhengige:<\/p>\n<ul>\n<li>enten av en person, som er d\u00f8delig, utsatt for sykdommer, forelskelser, hum\u00f8rforandringer og bare helt vanlig oppsigelser;<\/li>\n<li>eller av en fysisk fungerende maskin, som ogs\u00e5 kan krasje, bli stj\u00e5let, gi overraskelser og ulemper. <\/li>\n<\/ul>\n<p>\nDet er \u00e5penbart at l\u00f8sningen er \u00e5 oversette alt til lesbar, vedlikeholdbar, kvalitetskodet. <\/p>\n<p>Dermed er infrastruktur som kode (Infrastructure as Code \u2013 IaC) en beskrivelse av all eksisterende infrastruktur i form av kode, samt tilh\u00f8rende verkt\u00f8y for \u00e5 arbeide med det og realisere faktisk infrastruktur fra det.<\/p>\n<p><b class=\"spoiler_title\">Hvorfor oversette alt til kode<\/b>Mennesker er ikke maskiner. De kan ikke huske alt. Reaksjonen til et menneske og en maskin er forskjellig. Alt som er automatisert, fungerer potensielt raskere enn det som gj\u00f8res av mennesker. Det viktigste er \u00e9n sannhet (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">Hvor kommer nye SRE-ingeni\u00f8rer fra<\/b>S\u00e5 vi har bestemt oss for \u00e5 ansette nye SRE-ingeni\u00f8rer, men hvor finner vi dem? Boken med de riktige svarene (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) forteller oss: fra utviklere. De jobber med kode, og du oppn\u00e5r den ideelle tilstanden.<\/p>\n<p>Vi har lett mye og lenge etter dem p\u00e5 arbeidsmarkedet utenfor v\u00e5rt selskap. Men vi m\u00e5 innse at vi ikke fant en eneste som passet v\u00e5re \u00f8nsker. Vi m\u00e5tte sjekke blant v\u00e5re egne. <\/p>\n<h2>Problemer med infrastruktur som kode<\/h2>\n<p>\nLa oss n\u00e5 se p\u00e5 eksempler p\u00e5 hvordan infrastruktur kan v\u00e6re integrert i kode. Koden er godt skrevet, av h\u00f8y kvalitet, med kommentarer og innrykk. <\/p>\n<p>Kodeeksempel fra Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" 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=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" 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 alltid klar til \u00e5 overraske deg, gi deg overraskelser og problemer. Det er ikke uten problemer her heller.<\/p>\n<p><b>1. Det f\u00f8rste problemet er at IaC i de fleste tilfeller er en slags DSL.<\/b><\/p>\n<p>Og en DSL, p\u00e5 sin side, er en beskrivelse av strukturen. N\u00e6rmere bestemt hva du b\u00f8r ha: Json, Yaml, modifikasjoner fra noen store selskaper som har utviklet sin egen DSL (i Terraform brukes HCL). <\/p>\n<p>Problemet er at det lett kan mangle slike vanlige ting som:<\/p>\n<ul>\n<li>variabler;<\/li>\n<li>betingelser;<\/li>\n<li>noen steder mangler kommentarer, for eksempel er de ikke forh\u00e5ndsdefinert i Json;<\/li>\n<li>funksjoner;<\/li>\n<li>og jeg har enn\u00e5 ikke nevnt slike h\u00f8yere niv\u00e5er, som klasser, arv og alt det der.<\/li>\n<\/ul>\n<p>\n <b>2. Det andre problemet med slik kode er at det oftest er et heterogent milj\u00f8<\/b>. Vanligvis sitter du og arbeider med C#, alts\u00e5 med ett spr\u00e5k, \u00e9n stakk, \u00e9n \u00f8kosystem. Men her har du et enormt mangfold av teknologier. <\/p>\n<p>Det er en helt reell situasjon der en bash med Python kj\u00f8rer en eller annen prosess, hvor Json settes inn. Du analyserer det, og deretter gir en annen generator ytterligere 30 filer. For alt dette kommer det inn variable fra Azure Key Vault, som hentes av et plugin til drone.io, skrevet i Go, og disse variable passerer gjennom yaml, som ble generert fra templater i jsonnet. Det er ganske vanskelig \u00e5 ha strengt godt beskrevet kode n\u00e5r du har et s\u00e5 variert milj\u00f8. <\/p>\n<p>Tradisjonell utvikling innenfor en oppgave skjer med ett og samme spr\u00e5k. Her jobber vi med et stort antall spr\u00e5k. <\/p>\n<p><b>3. Det tredje problemet \u2013 er verkt\u00f8yene.<\/b>. Vi er vant til kule redakt\u00f8rer (Ms Visual Studio, Jetbrains Rider), som gj\u00f8r alt for oss. Og selv om vi skulle gj\u00f8re en feil, vil de si at vi ikke er riktige. Det f\u00f8les som normalt og naturlig. <\/p>\n<p>Men et sted i n\u00e6rheten er VSCode, som har noen plugins som p\u00e5 en eller annen m\u00e5te installeres, st\u00f8ttes eller ikke st\u00f8ttes. Nye versjoner kommer ut, men de blir ikke st\u00f8ttet. Et banalt skifte til implementeringen av en funksjon (selv om den finnes) blir et vanskelig og ikke-banalt problem. En enkel omd\u00f8pning av en variabel - det er en erstatning i prosjektet fra dusinvis av filer. Heldigvis, hvis den erstatte det som trengs. Det er selvf\u00f8lgelig noen steder med syntaksutheving, autocompletion og noen steder er det formatering (men jeg klarte ikke \u00e5 f\u00e5 det til \u00e5 fungere med terraform p\u00e5 Windows). <\/p>\n<p>Ved tidspunktene artiklen ble skrevet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">vscode-terraform plugin<\/a><\/noindex> har enda ikke blitt utgitt for \u00e5 st\u00f8tte versjon 0.12, selv om den allerede har v\u00e6rt ute i 3 m\u00e5neder.<\/p>\n<h2>Det er p\u00e5 tide \u00e5 glemme&#8230;<\/h2>\n<p><\/p>\n<ol>\n<li>Debugging.<\/li>\n<li>Refactoring-verkt\u00f8y.<\/li>\n<li>Auto fullf\u00f8ring.<\/li>\n<li>Oppdagelse av feil under kompilering.<\/li>\n<\/ol>\n<p>\nDet er morsomt, men dette \u00f8ker tiden for utvikling og \u00f8ker antall feil som uunng\u00e5elig skjer. <\/p>\n<p>Det mest skremmende er at vi m\u00e5 tenke ikke p\u00e5 hvordan vi skal designe, organisere filene i mapper, dekomponere, gj\u00f8re koden vedlikeholdbar, lesbar og s\u00e5 videre, men p\u00e5 hvordan jeg kan skrive denne kommandoen korrekt, fordi jeg p\u00e5 en eller annen m\u00e5te skrev den feil. <\/p>\n<p>Som nybegynner pr\u00f8ver du \u00e5 forst\u00e5 terraform, men IDE-en hjelper deg ikke i det hele tatt. N\u00e5r det finnes dokumentasjon \u2013 g\u00e5r du inn og ser. Men hvis du begynte med et nytt programmeringsspr\u00e5k, ville IDE-en ha foresl\u00e5tt at det finnes en slik type, og en slik type finnes ikke. I hvert fall p\u00e5 niv\u00e5et int eller string. Dette er ofte nyttig. <\/p>\n<h2>Men hvordan med testene?<\/h2>\n<p>\nDere sp\u00f8r: \u00abHvordan er det med testene, kj\u00e6re programmerere?\u00bb Seri\u00f8se folk tester alt i produksjon, og det er strengt. Her er et eksempel p\u00e5 en enhetstest for et Terraform-modul fra nettstedet. <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=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe har god dokumentasjon. Microsoft har alltid imponert meg med sin tiln\u00e6rming til dokumentasjon og oppl\u00e6ring. Men man trenger ikke \u00e5 v\u00e6re onkel Bob for \u00e5 forst\u00e5 at koden her ikke er perfekt. Legg merke til valideringen som er plassert til h\u00f8yre. <\/p>\n<p>Problemet med enhetstesten er at vi kan sjekke om JSON-en er korrekt p\u00e5 utgangen. Jeg ga fem parametere, og jeg fikk en JSON som er 2000 linjer lang. Jeg kan analysere hva som skjer her, validere testresultatet\u2026 <\/p>\n<p>Det er vanskelig \u00e5 analysere JSON i Go. Men man b\u00f8r skrive i Go, fordi Terraform p\u00e5 Go er god praksis, \u00e5 teste i spr\u00e5ket man skriver i. Kodeutformingen er ogs\u00e5 veldig svak. Likevel er dette det beste biblioteket for testing. <\/p>\n<p>Selv Microsoft skriver sine moduler og tester dem p\u00e5 denne m\u00e5ten. Selvf\u00f8lgelig er dette Open Source. Alt jeg snakker om kan du komme og reparere. Jeg kan sette meg ned og fikse alt p\u00e5 en uke, open-sourc'e VS Code-plugger, Terraform, lage en plugin for Rider. Kanskje skrive et par analyseverkt\u00f8y, legge til lintrere, bidra til testbiblioteket. Jeg kan gj\u00f8re alt dette. Men det er ikke det jeg skal bruke tiden min p\u00e5. <\/p>\n<h2>Beste praksiser for Infrastructure as Code<\/h2>\n<p>\nLa oss g\u00e5 videre. Hvis det ikke finnes tester i IaC, hvis IDE og verkt\u00f8yene er d\u00e5rlige, s\u00e5 m\u00e5 det i det minste finnes noen beste praksiser. Jeg s\u00f8kte bare i Google Analytics og sammenlignet to s\u00f8k: Terraform beste praksiser og C# beste praksiser. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHva ser vi? Uutholdelig statistikk som ikke er til v\u00e5r fordel. N\u00e5r det gjelder mengden materiale, er det det samme. Innen C# utvikling er vi faktisk overfylt av materiale, vi har supergode praksiser, det er b\u00f8ker skrevet av eksperter, og ogs\u00e5 b\u00f8ker skrevet av andre eksperter som kritiserer de b\u00f8kene. Mye offisiell dokumentasjon, artikler, oppl\u00e6ringskurs, og n\u00e5 ogs\u00e5 open source utvikling.<\/p>\n<p>N\u00e5r det gjelder s\u00f8ket om IaC: her m\u00e5 du i det minste pr\u00f8ve \u00e5 samle informasjon fra foredrag og HashiConf, fra den offisielle dokumentasjonen og utallige problemer p\u00e5 GitHub. Hvordan skal man egentlig dele opp disse modulene, hva skal man gj\u00f8re med dem? Det virker som et reelt problem\u2026 Det finnes et fellesskap, folkens, hvor du kan f\u00e5 ti kommentarer p\u00e5 GitHub for hvert sp\u00f8rsm\u00e5l du har. Men det er ikke sikkert. <\/p>\n<p>Dessverre begynner ekspertene f\u00f8rst n\u00e5 \u00e5 dukke opp. Det er fortsatt for f\u00e5. Og fellesskapet er fortsatt p\u00e5 et tidlig stadium. <\/p>\n<h2>Hvor er alt dette p\u00e5 vei, og hva skal vi gj\u00f8re?<\/h2>\n<p>\nMan kan bare gi opp og g\u00e5 tilbake til C#, til verden av Rider. Men nei. Hvorfor skulle man i det hele tatt gj\u00f8re det, hvis man ikke pr\u00f8ver \u00e5 finne en l\u00f8sning? Her er mine subjektive konklusjoner. Du kan gjerne argumentere med meg i kommentarfeltet, det vil v\u00e6re interessant. <\/p>\n<p>Personlig satser jeg p\u00e5 flere faktorer:<\/p>\n<ol>\n<li>Utviklingen innen dette omr\u00e5det skjer veldig raskt. Jeg viser grafen over s\u00f8kene relatert til DevOps.\n<p><img decoding=\"async\" alt=\"Infrastruktur som kode: en f\u00f8rste introduksjon\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKanskje dette er et hypet tema, men selve faktum at feltet vokser, gir en viss h\u00e5p. <\/p>\n<p>Hvis noe vokser s\u00e5 raskt, vil det n\u00f8dvendigvis dukke opp kloke mennesker som sier hva man skal gj\u00f8re og hva man ikke skal gj\u00f8re. \u00d8kt popularitet kan f\u00f8re til at noen endelig f\u00e5r tid til \u00e5 skrive et plugin til jsonnet for vscode, som lar deg hoppe til implementeringen av funksjonen, i stedet for \u00e5 lete etter den med ctrl+shift+f. N\u00e5r alt utvikler seg, kommer det flere ressurser. Utgivelsen av Google-boken om SRE er et glimrende eksempel p\u00e5 dette.<\/li>\n<li>Det finnes utviklede metoder og praksiser i vanlig utvikling som vi kan bruke med suksess her. Ja, det er noen nyanser med testing og heterogene milj\u00f8er, samt utilstrekkelig verkt\u00f8y, men det er opparbeidet en enorm mengde praksiser som kan v\u00e6re nyttige og hjelpe.\n<p>Et banalt eksempel: samarbeid gjennom pair programming. Det hjelper mye med \u00e5 forst\u00e5. N\u00e5r du har en nabo ved siden av deg som ogs\u00e5 pr\u00f8ver \u00e5 forst\u00e5 noe, vil dere sammen forst\u00e5 bedre.<\/p>\n<p> Forst\u00e5elsen av hvordan refaktorering gj\u00f8res, hjelper selv i en slik situasjon. Det betyr at du kan endre ikke alt p\u00e5 en gang, men f\u00f8rst navngivningen, s\u00e5 plasseringen, og kanskje dele ut en del, \u00e5h, men her mangler det kommentarer. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Konklusjon<\/h2>\n<p>\nSelv om mine resonnementer kan virke pessimistiske, ser jeg med h\u00e5p mot fremtiden og h\u00e5per oppriktig at vi (og dere) vil lykkes.<\/p>\n<blockquote><p>Den andre delen av artikkelen er p\u00e5 vei. Der vil jeg fortelle om hvordan vi pr\u00f8vde \u00e5 bruke praksiser fra smidig utvikling for \u00e5 forbedre v\u00e5r oppl\u00e6ringsprosess og arbeid med infrastrukturen.<\/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.5 - 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\/no\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Infrastruktur som kode: f\u00f8rste bekjentskap | ProHoster","description":"Vi har i selskapet v\u00e5rt en onboarding-prosess for SRE-teamet. Jeg begynte med dette fra utviklerens perspektiv. Underveis fikk jeg tanker og innsikter som jeg \u00f8nsker \u00e5 dele med andre utviklere.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/37586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}