{"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\/nl\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastructure as code: een eerste kennismaking","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bij ons bedrijf is het proces van onboarding van het SRE-team aan de gang. Ik ben deze situatie vanuit de ontwikkeling ingegaan. In dit proces zijn er gedachten en inzichten ontstaan die ik met andere ontwikkelaars wil delen. In dit reflecterende artikel bespreek ik wat er gebeurt, hoe het gebeurt, en hoe iedereen hiermee verder kan leven. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" 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>Vervolg van de serie artikelen, geschreven naar aanleiding van presentaties op onze interne bijeenkomst. <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 zonder doos: het consensusprobleem in gedistribueerde systemen.<\/a><\/noindex><br \/>\n2. Infrastructure as code. (Je bent hier)<br \/>\n3. Generatie van Typescript-contracten op C#-modellen. (Bezig...)<br \/>\n4. Inleiding tot het Raft-consensusalgoritme. (Bezig...)<br \/>\n\u2026<\/p><\/blockquote>\n<p>\nWe hebben besloten om een SRE-team te vormen, ge\u00efnspireerd door idee\u00ebn van <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. We hebben programmeurs uit onze eigen ontwikkelaarsgroep aangenomen en hen voor enkele maanden op opleiding gestuurd. <\/p>\n<p>De volgende leerdoelen stonden voor het team:<\/p>\n<ul>\n<li>Onze infrastructuur, die voor een groot deel in Microsoft Azure draait, beschrijven als code (Terraform en alles wat daarmee te maken heeft). <\/li>\n<li>Ontwikkelaars leren werken met infrastructuur. <\/li>\n<li>Ontwikkelaars voorbereiden op dienstroosters.<\/li>\n<\/ul>\n<p><\/p>\n<h2>We introduceren het concept van Infrastructure as code.<\/h2>\n<p>\nIn het gewone wereldmodel (klassiek beheer) bevinden de kennis over de infrastructuur zich op twee plekken:<\/p>\n<ol>\n<li>Of als kennis in de hoofden van experts.<img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Of deze informatie bevindt zich op bepaalde machines, waarvan een deel door experts bekend is. Maar het is geen feit dat iemand van buitenaf (voor het geval dat ons hele team plotseling komt te overlijden) zal begrijpen wat er gaande is. Op de machine kunnen veel gegevens staan: toegangspunten, cronjobs, opgezette (zie <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk mounting<\/a><\/noindex>) schijven en gewoon een eindeloze lijst van wat er kan gebeuren. Het is moeilijk te begrijpen wat er in werkelijkheid aan de hand is.<img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nIn beide gevallen komen we in de val terecht, afhankelijk van:<\/p>\n<ul>\n<li>ofwel van een persoon, die sterfelijk is, onderhevig aan ziektes, verliefdheden, stemmingswisselingen en gewoon simpelweg ontslagen kan worden;<\/li>\n<li>ofwel van een fysiek werkende machine, die ook kan falen, gestolen kan worden, verrassingen en ongemakken kan meebrengen. <\/li>\n<\/ul>\n<p>\nHet lijkt logisch dat we idealiter alles moeten vertalen naar leesbare, onderhoudbare, kwalitatief goed geschreven code. <\/p>\n<p>Infrastructuur als code (Infrastructure as Code \u2013 IaC) is de beschrijving van de gehele beschikbare infrastructuur in de vorm van code, evenals de bijbehorende middelen om ermee te werken en de realisatie van diezelfde infrastructuur.<\/p>\n<p><b class=\"spoiler_title\">Waarom alles naar code vertalen<\/b>Mensen zijn geen machines. Ze kunnen niet alles onthouden. De reactie van een mens en een machine is verschillend. Alles wat geautomatiseerd is, werkt potentieel sneller dan alles wat een mens doet. Het belangrijkste is dat er \u00e9\u00e9n enkele waarheid is (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">Waar komen nieuwe SRE-ingenieurs vandaan<\/b>Dus, we hebben besloten om nieuwe SRE-ingenieurs aan te trekken, maar waar moeten we ze vandaan halen? Het boek met de juiste antwoorden (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) zegt ons: van ontwikkelaars. Zij werken met code en u bereikt de ideale staat.<\/p>\n<p>We hebben lang en veel naar hen gezocht op de arbeidsmarkt buiten ons bedrijf. Maar we moeten toegeven dat we niemand hebben gevonden die aan onze eisen voldeed. We moesten tussen onze eigen mensen zoeken. <\/p>\n<h2>Problemen met Infrastructure as Code<\/h2>\n<p>\nLaten we nu voorbeelden bekijken van hoe infrastructuur in code kan worden verpakt. De code is goed geschreven, van hoge kwaliteit, met commentaar en inspringingen. <\/p>\n<p>Voorbeeld van code in Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoorbeeld van code in Ansible.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDames en heren, maar als alles zo eenvoudig was! We leven in de echte wereld, en die is altijd bereid om je te verrassen, met verrassingen en problemen. Daar komt het hier ook niet zonder aan.<\/p>\n<p><b>1. Het eerste probleem is dat IaC in de meeste gevallen een soort DSL is.<\/b><\/p>\n<p>Een DSL is op zijn beurt een beschrijving van de structuur. Om precies te zijn, wat je nodig zou moeten hebben: JSON, YAML, modificaties van enkele grote bedrijven die hun eigen DSL hebben bedacht (Terraform gebruikt HCL). <\/p>\n<p>Het probleem is dat er gemakkelijk vertrouwde dingen kunnen ontbreken, zoals:<\/p>\n<ul>\n<li>variabelen;<\/li>\n<li>voorwaarden;<\/li>\n<li>ergens ontbreken commentaren, bijvoorbeeld in JSON, waar ze standaard niet zijn voorzien;<\/li>\n<li>functies;<\/li>\n<li>en dit is nog niet eens gesproken over zoiets als klassen, overerving en al dat soort zaken.<\/li>\n<\/ul>\n<p>\n <b>2. Het tweede probleem van deze code is dat het vaak een heterogene omgeving is.<\/b>Gewoonlijk werk je met C#, dat wil zeggen met \u00e9\u00e9n taal, \u00e9\u00e9n stack, \u00e9\u00e9n ecosysteem. En hier heb je een enorme verscheidenheid aan technologie\u00ebn. <\/p>\n<p>Een volledig realistische situatie is wanneer een bash-script met Python een proces start waarbij Json erin wordt gestopt. Je analyseert het en daarna genereert een andere generator nog eens 30 bestanden. Voor al deze bestanden komen de invoervariabelen uit Azure Key Vault, die zijn opgehaald door een plugin voor drone.io, geschreven in Go, en deze variabelen gaan door een yaml, die is voortgekomen uit een sjabloon van jsonnet. Het is behoorlijk moeilijk om altijd goed beschreven code te hebben in zo'n diverse omgeving. <\/p>\n<p>Traditionele ontwikkeling binnen \u00e9\u00e9n taak gebeurt met \u00e9\u00e9n taal. Hier werken we met een groot aantal talen. <\/p>\n<p><b>3. Het derde probleem is tooling.<\/b>We zijn gewend aan geweldige editors (Ms Visual Studio, Jetbrains Rider) die alles voor ons doen. En zelfs als we het verkeerd hebben, zullen ze ons vertellen dat we niet goed zitten. Het lijkt normaal en natuurlijk. <\/p>\n<p>Maar nabij is VSCode, met enkele plugins die op een bepaalde manier worden ge\u00efnstalleerd, ondersteund of niet ondersteund. Nieuwe versies komen uit en worden niet ondersteund. Een eenvoudige overgang naar de implementatie van een functie (zelfs als deze aanwezig is) wordt een complexe en niet-triviale uitdaging. Een eenvoudige hernoeming van een variabele is een vervangingen in een project van tientallen bestanden. Het is geluk als het datgene vervangt wat nodig is. Natuurlijk is er hier en daar syntax-highlighting, autocompletion, en ergens is er formatting (hoewel het bij mij in Terraform op Windows niet werkt). <\/p>\n<p>Op het moment van schrijven wordt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">vscode-terraform plugin<\/a><\/noindex> is nog niet uitgebracht ter ondersteuning van versie 0.12, hoewel deze al drie maanden geleden is uitgebracht.<\/p>\n<h2>Het is tijd om te vergeten...<\/h2>\n<p><\/p>\n<ol>\n<li>Debugging.<\/li>\n<li>Refactoring tool.<\/li>\n<li>Auto completion.<\/li>\n<li>Het opsporen van fouten tijdens compilatie.<\/li>\n<\/ol>\n<p>\nGrappig, maar dit verhoogt de ontwikkeltijd en het aantal fouten dat onvermijdelijk voorkomt. <\/p>\n<p>Het engste is dat we gedwongen zijn om niet na te denken over hoe we het ontwerp, de bestanden in mappen kunnen indelen, de code kunnen decomponeren, onderhouden en leesbaar maken, maar over hoe ik dit commando correct kan schrijven omdat ik het op de een of andere manier verkeerd heb geschreven. <\/p>\n<p>Als beginner probeer je Terraform te leren, maar de IDE helpt je daar absoluut niet mee. Wanneer er documentatie is \u2013 ga je erheen, kijk je. Maar als je een nieuwe programmeertaal leert, zou de IDE je laten weten dat er zo'n type is en dat zo'n type er niet is. Tenminste, op het niveau van int of string. Dit kan vaak nuttig zijn. <\/p>\n<h2>En wat met tests?<\/h2>\n<p>\nJe zou kunnen vragen: \u201eHoe zit het met de tests, beste programmeurs?\u201d Serieuze jongens testen alles op productie, en dat is streng. Hier is een voorbeeld van een unittest voor een Terraform-module van de site. <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: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHun documentatie is goed. Microsoft heeft me altijd aangesproken met hun aanpak van documentatie en onderwijs. Maar je hoeft geen oom Bob te zijn om te begrijpen dat de code hier niet ideaal is. Let op de validatie, die naar rechts is verplaatst. <\/p>\n<p>Het probleem met de unittest is dat we de correctheid van de Json-output kunnen controleren. Ik voerde 5 parameters in en ik kreeg een Json-uitvoer van 2000 regels. Ik kan analyseren wat hier gebeurt, validatie van het testresultaat\u2026 <\/p>\n<p>Het is moeilijk om Json in Go te analyseren. Maar je moet in Go schrijven, omdat Terraform in Go - dat is een goede praktijk van testen in de taal waarin je schrijft. De organisatie van de code is erg zwak. Desondanks is dit de beste bibliotheek voor testen. <\/p>\n<p>Zelf Microsoft schrijft zijn modules en test ze op deze manier. Natuurlijk is dit open source. Alles waar ik het over heb kun je komen en repareren. Ik kan gaan zitten en binnen een week alles fixen, plugins voor VS Code en Terraform open source maken, een plugin voor Rider maken. Misschien kan ik een paar analyzers schrijven, linters aansluiten, bijdragen aan de testbibliotheek. Ik kan het allemaal doen. Maar dit is niet wat ik zou moeten doen. <\/p>\n<h2>Beste praktijken voor Infrastructure as Code<\/h2>\n<p>\nLaten we verder gaan. Als er geen tests zijn in IaC, is het slecht met IDE en tooling, dan moeten er tenminste beste praktijken zijn. Ik heb gewoon Google Analytics geopend en een vergelijking gemaakt van twee zoekopdrachten: Terraform beste praktijken en C# beste praktijken. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWat zien we? Onbarmhartige statistieken die niet in ons voordeel zijn. Wat betreft de hoeveelheid materiaal - hetzelfde verhaal. In de C# ontwikkeling zwemmen we gewoon in materiaal, we hebben superieure praktijken, er zijn boeken geschreven door experts, en ook boeken geschreven door andere experts die die boeken bekritiseren. Een zee van offici\u00eble documentatie, artikelen, cursusmateriaal, en nu ook open source ontwikkeling.<\/p>\n<p>Wat betreft de zoekopdracht voor IaC: hier probeer je schouder aan schouder informatie te verzamelen van presentaties van highload of HashiConf, van de offici\u00eble documentatie en talloze issues op GitHub. Hoe kun je deze modules \u00fcberhaupt verspreiden, wat moet je ermee doen? Het lijkt een echt probleem\u2026 Er is trouwens een community, beste mensen, waar je op elke vraag 10 reacties op GitHub zult krijgen. Maar dat is niet zeker. <\/p>\n<p>Helaas beginnen experts momenteel pas op te duiken. Er zijn er nog te weinig. En de gemeenschap verkeert nog in een pril stadium. <\/p>\n<h2>Waar gaat dit allemaal naartoe en wat te doen?<\/h2>\n<p>\nJe kunt alles opgeven en teruggaan naar C#, naar de wereld van de rider. Maar nee. Waarom zou je dit \u00fcberhaupt doen als je geen oplossing kunt vinden? Hieronder geef ik mijn subjectieve conclusies. Je kunt met me discussi\u00ebren in de opmerkingen, dat zou interessant zijn. <\/p>\n<p>Persoonlijk zet ik in op een paar dingen:<\/p>\n<ol>\n<li>De ontwikkeling in dit gebied gaat zeer snel. Ik geef een grafiek van zoekopdrachten over DevOps.\n<p><img decoding=\"async\" alt=\"Infrastructure as code: een eerste kennismaking\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMisschien is het een trendy onderwerp, maar het feit dat het veld groeit geeft enige hoop. <\/p>\n<p>Als iets zo snel groeit, zullen er zeker slimme mensen zijn die zeggen hoe het moet en hoe het niet moet. Toenemende populariteit betekent dat iemand misschien eindelijk de tijd heeft om een plugin voor jsonnet voor vscode te schrijven, die je in staat stelt om naar de functie-implementatie te gaan, in plaats van deze te zoeken via ctrl+shift+f. Wanneer alles zich ontwikkelt, komen er meer materialen beschikbaar. De release van het boek van Google over SRE is een goed voorbeeld daarvan.<\/li>\n<li>Er zijn methoden en praktijken in gewone ontwikkeling die we hier succesvol kunnen toepassen. Ja, er zijn nuances met testen en een heterogene omgeving, onvoldoende tooling, maar er is een enorme hoeveelheid praktijken verzameld die nuttig kunnen zijn en kunnen helpen.\n<p>Een banaal voorbeeld: samenwerking via pair programming. Het helpt enorm om het beter te begrijpen. Wanneer je naast een collega zit die ook iets probeert te begrijpen, samen begrijp je het beter.<\/p>\n<p> Inzicht in hoe refactoring wordt gedaan helpt zelfs in een dergelijke situatie om het uit te voeren. Dat betekent dat je niet alles in \u00e9\u00e9n keer kunt veranderen, maar eerst de naamgeving kunt wijzigen, vervolgens de locatie kunt veranderen, dan misschien een deel kunt isoleren, oh, en hier missen we commentaar. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Conclusie<\/h2>\n<p>\nHoewel mijn overpeinzingen pessimistisch kunnen lijken, kijk ik met hoop naar de toekomst en hoop oprecht dat het ons (en jullie) zal lukken.<\/p>\n<blockquote><p>Er wordt gewerkt aan het tweede deel van het artikel. Daarin vertel ik hoe we geprobeerd hebben agile ontwikkelingspraktijken toe te passen om ons leerproces en onze infrastructuurwerking te verbeteren.<\/p><\/blockquote>\n<p>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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: eerste kennismaking | ProHoster","description":"Bij ons bedrijf vindt er momenteel een onboarding plaats van het SRE-team. Ik ben deze kwestie vanuit de ontwikkelingszijde benaderd. Tijdens het proces zijn er gedachten en inzichten ontstaan die ik graag met andere ontwikkelaars wil delen.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/37586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}