{"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\/it\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastructure as code: prima introduzione","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nella nostra azienda \u00e8 in corso il processo di onboarding del team SRE. Sono entrato in questa storia dal punto di vista dello sviluppo. Durante il processo, ho avuto delle idee e degli spunti che voglio condividere con altri sviluppatori. In questo articolo di riflessione parlo di cosa sta succedendo, come sta accadendo e come tutti noi possiamo convivere con tutto ci\u00f2. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" 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>Continuazione di una serie di articoli scritti ispirati agli interventi del nostro evento interno <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. Il gatto di Schr\u00f6dinger senza scatola: il problema del consenso nei sistemi distribuiti.<\/a><\/noindex><br \/>\n2. L'infrastruttura come codice. (Sei qui)<br \/>\n3. Generazione di contratti Typescript dai modelli C#. (In corso&#8230;)<br \/>\n4. Introduzione all'algoritmo di consenso Raft. (In corso&#8230;)<br \/>\n&#8230;<\/p><\/blockquote>\n<p>\nAbbiamo deciso di formare un team SRE, concretizzando le idee <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Abbiamo selezionato programmatori tra i nostri sviluppatori e li abbiamo inviati a formarsi per alcuni mesi. <\/p>\n<p>La squadra aveva i seguenti obiettivi formativi:<\/p>\n<ul>\n<li>Descrivere la nostra infrastruttura, che si trova principalmente su Microsoft Azure, sotto forma di codice (Terraform e tutto ci\u00f2 che ne concerne). <\/li>\n<li>Insegnare agli sviluppatori a lavorare con l'infrastruttura. <\/li>\n<li>Preparare gli sviluppatori per i turni di guardia.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Introduciamo il concetto di Infrastructure as code<\/h2>\n<p>\nNella normale visione del mondo (amministrazione classica), le conoscenze relative all'infrastruttura si trovano in due posti:<\/p>\n<ol>\n<li>O in forma di conoscenze nelle teste degli esperti.<img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Oppure queste informazioni sono su alcune macchine, parte delle quali sono conosciute dagli esperti. Ma non \u00e8 detto che una persona esterna (nel caso in cui tutto il nostro team dovesse improvvisamente scomparire) possa capire cosa e come funziona. sulla macchina possono esserci molte informazioni: accessi, cronjob, disco montato (vedi <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk mounting<\/a><\/noindex>) e semplicemente un elenco infinito di ci\u00f2 che pu\u00f2 accadere. \u00c8 difficile capire cosa accade realmente.<img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\nIn entrambi i casi ci troviamo intrappolati, diventando dipendenti:<\/p>\n<ul>\n<li>o da una persona, che \u00e8 mortale, soggetta a malattie, innamoramenti, sbalzi d'umore e semplici licenziamenti;<\/li>\n<li>o da una macchina fisicamente funzionante, che altrimenti pu\u00f2 guastarsi, essere rubata, presentare sorprese e inconvenienti. <\/li>\n<\/ul>\n<p>\n\u00c8 naturale chiedersi che, idealmente, tutto debba essere tradotto in codice leggibile dall'uomo, mantenibile e ben scritto. <\/p>\n<p>In questo modo, l'infrastruttura come codice (Infrastructure as Code \u2013 IaC) \u00e8 la descrizione di tutta l'infrastruttura esistente sotto forma di codice, insieme agli strumenti associati per lavorarci e per trasformarlo in infrastruttura reale.<\/p>\n<p><b class=\"spoiler_title\">Perch\u00e9 tradurre tutto in codice<\/b>Le persone non sono macchine. Non possono ricordare tutto. La reazione di un essere umano \u00e8 diversa da quella di una macchina. Tutto ci\u00f2 che \u00e8 automatizzato potenzialmente funziona pi\u00f9 velocemente di tutto ci\u00f2 che fa una persona. La cosa pi\u00f9 importante \u00e8 avere un'unica fonte di verit\u00e0 (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">Da dove vengono nuovi ingegneri SRE<\/b>Allora, abbiamo deciso di coinvolgere nuovi ingegneri SRE, ma da dove trovarli? Un libro con le risposte corrette (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) ci dice: dagli sviluppatori. Infatti, loro lavorano con il codice e tu raggiungi uno stato ideale.<\/p>\n<p>Abbiamo cercato a lungo e intensamente nel mercato del lavoro al di fuori della nostra azienda. Ma dobbiamo ammettere di non aver trovato nessuno in linea con le nostre richieste. \u00c8 stato necessario setacciare tra i nostri. <\/p>\n<h2>Problemi dell'Infrastructure as Code<\/h2>\n<p>\nOra diamo un'occhiata ad alcuni esempi di come l'infrastruttura pu\u00f2 essere incorporata nel codice. Il codice \u00e8 ben scritto, di qualit\u00e0, con commenti e indentazioni. <\/p>\n<p>Esempio di codice da Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsempio di codice da Ansible.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGentili signori, ma se solo tutto fosse cos\u00ec semplice! Siamo nel mondo reale, e questo \u00e8 sempre pronto a sorprendervi, portandovi sorprese e problemi. Non mancano neanche qui.<\/p>\n<p><b>1. Il primo problema \u00e8 che nella maggior parte dei casi IaC \u00e8 un qualche tipo di DSL.<\/b><\/p>\n<p>E un DSL, a sua volta, \u00e8 una descrizione della struttura. Pi\u00f9 precisamente, di ci\u00f2 che devi avere: Json, Yaml, modifiche fatte da alcune grandi aziende che hanno inventato il proprio DSL (in Terraform si usa HCL). <\/p>\n<p>Il problema \u00e8 che potrebbe facilmente non contenere quelle cose familiari, come:<\/p>\n<ul>\n<li>variabili;<\/li>\n<li>condizioni;<\/li>\n<li>in alcuni casi mancano i commenti, ad esempio in Json, che per impostazione predefinita non li prevede;<\/li>\n<li>funzioni;<\/li>\n<li>e non parlo ancora di cose ad alto livello come classi, ereditariet\u00e0 e simili.<\/li>\n<\/ul>\n<p>\n <b>2. Il secondo problema di quel codice \u00e8 che molto spesso si tratta di un ambiente eterogeneo<\/b>. Di solito lavori e ti occupi di C#, cio\u00e8 con un solo linguaggio, un unico stack, un'unica ecosistema. E qui hai una grande variet\u00e0 di tecnologie. <\/p>\n<p>Una situazione del tutto reale in cui un bash con Python avvia un qualche processo, nel quale viene introdotto Json. Lo analizzi, poi qualche altro generatore produce altri 30 file. Tutto ci\u00f2 riceve variabili in ingresso da Azure Key Vault, che vengono estratte tramite un plugin per drone.io, scritto in Go, e queste variabili passano attraverso un yaml, generato da un motore di template jsonnet. \u00c8 piuttosto complicato avere un codice ben definito quando hai un ambiente cos\u00ec variegato. <\/p>\n<p>Nello sviluppo tradizionale, ci si occupa di un compito alla volta con un'unica lingua. Qui lavoriamo con un gran numero di lingue. <\/p>\n<p><b>3. Il terzo problema \u00e8 il tooling<\/b>. Siamo abituati a editor avanzati (Ms Visual Studio, Jetbrains Rider), che fanno tutto per noi. E anche se commettiamo un errore, ci dicono che non abbiamo ragione. Sembra che sia normale e naturale. <\/p>\n<p>Ma accanto c'\u00e8 VSCode, che ha alcuni plugin, che vengono installati e supportati oppure no. Sono uscite nuove versioni che non sono state supportate. Un banale passaggio all'implementazione di una funzione (anche se esiste) diventa un problema complesso e non banale. Un semplice rinominare una variabile richiede una sostituzione nel progetto di una decina di file. Sar\u00e0 fortunato se sostituisce ci\u00f2 che serve. Certo, in certi casi c'\u00e8 evidenziazione, c'\u00e8 completamento automatico, in alcuni casi c'\u00e8 formattazione (anche se su Terraform non funziona su Windows). <\/p>\n<p>Al momento della scrittura di questo articolo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">plugin vscode-terraform<\/a><\/noindex> non hanno ancora rilasciato il supporto per la versione 0.12, anche se \u00e8 stata rilasciata gi\u00e0 da 3 mesi.<\/p>\n<h2>\u00c8 tempo di dimenticare&#8230;<\/h2>\n<p><\/p>\n<ol>\n<li>Il debugging.<\/li>\n<li>Strumento di refactoring.<\/li>\n<li>Completamento automatico.<\/li>\n<li>Rilevamento di errori in fase di compilazione.<\/li>\n<\/ol>\n<p>\n\u00c8 ridicolo, ma questo aumenta il tempo di sviluppo e il numero di errori che inevitabilmente si verificano. <\/p>\n<p>La cosa pi\u00f9 spaventosa \u00e8 che siamo costretti a non pensare a come progettare, organizzare i file, decomporre, rendere il codice manutenibile, leggibile e cos\u00ec via, bens\u00ec a come scrivere correttamente questo comando, perch\u00e9 l'ho scritto in modo sbagliato. <\/p>\n<p>Come principiante stai cercando di comprendere Terraform, ma l'IDE non ti aiuta affatto. Quando c'\u00e8 documentazione, ci vai e dai un'occhiata. Ma se stai entrando in un nuovo linguaggio di programmazione, l'IDE suggerirebbe che esiste un certo tipo, mentre un altro no. Almeno a livello di int o string. Questo pu\u00f2 rivelarsi utile. <\/p>\n<h2>E i test?<\/h2>\n<p>\nChiederete: \u00abE i test, gentili programmatori?\u00bb I ragazzi seri testano tutto in produzione, ed \u00e8 un approccio rigoroso. Ecco un esempio di unit test per un modulo Terraform dal sito <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: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHanno una buona documentazione. A Microsoft \u00e8 sempre piaciuto il loro approccio alla documentazione e alla formazione. Ma non \u00e8 necessario essere zio Bob per capire che qui non c'\u00e8 codice ideale. Fate attenzione alla validazione spostata a destra. <\/p>\n<p>Il problema dell'unit test \u00e8 che possiamo verificare la correttezza del JSON in uscita. Ho lanciato 5 parametri, e ho ricevuto una risposta JSON di 2000 righe. Posso analizzare cosa sta succedendo, convalidare il risultato del test\u2026 <\/p>\n<p>\u00c8 difficile analizzare il JSON in Go. Ma bisogna scrivere in Go, perch\u00e9 Terraform in Go \u00e8 una buona pratica, testare nella lingua in cui si scrive. L'organizzazione del codice \u00e8 molto debole. Tuttavia, \u00e8 la miglior libreria per i test. <\/p>\n<p>La stessa Microsoft scrive i suoi moduli, testandoli in questo modo. Certo, \u00e8 Open Source. Tutto ci\u00f2 di cui parlo puoi venire e sistemarlo. Posso sedermi e sistemare tutto in una settimana, rendere open source i plugin di VS Code, Terraform, fare un plugin per Rider. Magari scrivere un paio di analizzatori, aggiungere i linter, contribuire a una libreria per i test. Posso fare tutto questo. Ma non \u00e8 ci\u00f2 che devo fare. <\/p>\n<h2>Le migliori pratiche per l'Infrastructure as Code<\/h2>\n<p>\nAndiamo avanti. Se nell'IaC non ci sono test, c'\u00e8 poca integrazione con IDE e strumenti, allora dovrebbero esserci almeno le migliori pratiche. Sono semplicemente andato su Google Analytics e ho confrontato due query di ricerca: Terraform best practices e c# best practices. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCosa vediamo? Una statistica impietosa non a nostro favore. Per quantit\u00e0 di materiale \u00e8 la stessa cosa. Nello sviluppo C# siamo semplicemente sopraffatti dai materiali, abbiamo pratiche eccezionali, ci sono libri scritti da esperti, e anche libri scritti da altri esperti che criticano quei libri. Un mare di documentazione ufficiale, articoli, corsi di formazione, ora c'\u00e8 anche lo sviluppo open source.<\/p>\n<p>Per quanto riguarda la query sull'IaC: qui stai cercando di raccogliere informazioni da relazioni di eventi come HashiConf, dalla documentazione ufficiale e numerosi issue su GitHub. Come distribuire questi moduli, cosa farne? Sembra un problema reale\u2026 C'\u00e8 una community, signori, dove per ogni domanda ti daranno 10 commenti su GitHub. Ma non \u00e8 detto. <\/p>\n<p>Purtroppo, al momento gli esperti stanno appena iniziando a comparire. Ce ne sono ancora troppo pochi. E la comunit\u00e0 stessa \u00e8 a un livello embrionale. <\/p>\n<h2>Dove sta andando tutto questo e cosa fare<\/h2>\n<p>\nSi pu\u00f2 abbandonare tutto e tornare a C#, nel mondo del rider. Ma no. Perch\u00e9 dovresti occupartene, se non trovi una soluzione. Di seguito riporto le mie conclusioni soggettive. Puoi discutere con me nei commenti, sar\u00e0 interessante. <\/p>\n<p>Personalmente, scommetto su alcune cose:<\/p>\n<ol>\n<li>Lo sviluppo in questo campo sta avvenendo molto rapidamente. Riporto un grafico delle ricerche su DevOps.\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima introduzione\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPu\u00f2 darsi che sia un tema di moda, ma il fatto che il settore stia crescendo d\u00e0 una certa speranza. <\/p>\n<p>Se qualcosa cresce cos\u00ec rapidamente, ci saranno sicuramente persone intelligenti che diranno come fare e come non fare. L'aumento della popolarit\u00e0 porta al fatto che qualcuno avr\u00e0 il tempo di completare finalmente un plugin per jsonnet per vscode, che permetta di passare all'implementazione della funzione, invece di cercarla tramite ctrl+shift+f. Quando tutto si sviluppa, appare pi\u00f9 materiale. Lo stesso rilascio del libro di Google su SRE \u00e8 un ottimo esempio di ci\u00f2.<\/li>\n<li>Ci sono metodologie e pratiche sviluppate nello sviluppo tradizionale che possiamo applicare con successo qui. S\u00ec, ci sono sfide legate ai test e a un ambiente eterogeneo, strumenti insufficienti, ma abbiamo accumulato un'enorme quantit\u00e0 di pratiche che possono tornare utili e aiutare.\n<p>Un esempio banale: lavoro collaborativo tramite pair programming. Aiuta notevolmente a capire. Quando hai un vicino che sta cercando di capire qualcosa, insieme comprenderete meglio.<\/p>\n<p> La comprensione di come si effettua il refactoring aiuta anche in una situazione del genere. Cio\u00e8, puoi cambiare non tutto in una volta, ma cambiare i nomi, poi cambiare la posizione, poi magari estrarre una parte, oh, ma qui mancano dei commenti. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Conclusione<\/h2>\n<p>\nNonostante le mie riflessioni possano sembrare pessimistiche, guardo al futuro con speranza e spero sinceramente che ce la faremo (e che anche voi ce la farete).<\/p>\n<blockquote><p>A breve verr\u00e0 pubblicata la seconda parte dell'articolo. In essa parler\u00f2 di come abbiamo provato ad applicare pratiche di sviluppo agile per migliorare il nostro processo di apprendimento e il lavoro con l'infrastruttura.<\/p><\/blockquote>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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: prima esperienza | ProHoster","description":"Nella nostra azienda \u00e8 in corso il processo di onboarding del team SRE. Sono entrato in tutta questa storia dal lato dello sviluppo. Durante il percorso ho avuto pensieri e intuizioni che voglio condividere con altri sviluppatori.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/37586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}