{"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\/ro\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","title":{"rendered":"Infrastructure as code: prima \u00eent\u00e2lnire","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00cen compania noastr\u0103 se desf\u0103\u0219oar\u0103 procesul de integrare a echipei SRE. Am \u00eenceput toat\u0103 aceast\u0103 poveste din perspectiva dezvolt\u0103rii. Pe parcurs, am avut g\u00e2nduri \u0219i insight-uri pe care vreau s\u0103 le \u00eemp\u0103rt\u0103\u0219esc cu al\u021bi dezvoltatori. \u00cen acest articol-reflec\u021bie, discut despre ce se \u00eent\u00e2mpl\u0103, cum se \u00eent\u00e2mpl\u0103 \u0219i cum putem tr\u0103i cu asta mai departe. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" 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>Continuarea seriei de articole scrise pe baza prezent\u0103rilor de la evenimentul nostru intern <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. Pisica lui Schr\u00f6dinger f\u0103r\u0103 cutie: problema consensului \u00een sistemele distribuite.<\/a><\/noindex><br \/>\n2. Infrastructure as code. (E\u0219ti aici)<br \/>\n3. Generarea contractelor Typescript pe baza modelelor C#. (\u00cen curs de desf\u0103\u0219urare...)<br \/>\n4. Introducere \u00een algoritmul de consens Raft. (\u00cen curs de desf\u0103\u0219urare...)<br \/>\n\u2026<\/p><\/blockquote>\n<p>\nAm decis s\u0103 form\u0103m o echip\u0103 SRE, realiz\u00e2nd ideile de <noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">google sre<\/a><\/noindex>. Am selectat programatori din r\u00e2ndul dezvoltatorilor no\u0219tri \u0219i i-am trimis s\u0103 se instruiasc\u0103 timp de c\u00e2teva luni. <\/p>\n<p>Echipa avea urm\u0103toarele obiective de \u00eenv\u0103\u021bare:<\/p>\n<ul>\n<li>S\u0103 descrie infrastructura noastr\u0103, care este \u00een mare parte \u00een Microsoft Azure, sub form\u0103 de cod (Terraform \u0219i tot ce este \u00een jur). <\/li>\n<li>S\u0103 \u00eenve\u021be dezvoltatorii s\u0103 lucreze cu infrastructura. <\/li>\n<li>S\u0103 preg\u0103teasc\u0103 dezvoltatorii pentru ture de supraveghere.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Introducem conceptul de Infrastructure as code<\/h2>\n<p>\n\u00cen modelul obi\u0219nuit (administrare clasic\u0103), cuno\u0219tin\u021bele despre infrastructur\u0103 se afl\u0103 \u00een dou\u0103 locuri:<\/p>\n<ol>\n<li>Fie \u00een min\u021bile exper\u021bilor.<img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/2400dea0a90c24b05c275b709bbd2057.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Fie aceste informa\u021bii se g\u0103sesc pe anumite ma\u0219ini, parte dintre ele fiind cunoscute de exper\u021bi. Dar nu este garantat c\u0103 o persoan\u0103 din exterior (\u00een cazul \u00een care \u00eentreaga noastr\u0103 echip\u0103 moare brusc) va putea s\u0103 \u00een\u021beleag\u0103 ce \u0219i cum func\u021bioneaz\u0103. Pe o ma\u0219in\u0103 pot exista multe informa\u021bii: accesuri, cronuri, un disc montat (vezi <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mount_(computing)\">disk mounting<\/a><\/noindex>) \u0219i o list\u0103 infinit\u0103 a tot ce poate s\u0103 se \u00eent\u00e2mple. Este greu de \u00een\u021beles ce se petrece cu adev\u0103rat.<img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/37bafea85a641c48683c35975f67f24d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\n\u00cen ambele cazuri ne afl\u0103m \u00eentr-o capcan\u0103, devenind dependen\u021bi:<\/p>\n<ul>\n<li>Fie de o persoan\u0103 care este muritoare, supus\u0103 bolilor, \u00eendr\u0103gostelilor, schimb\u0103rilor de dispozi\u021bie \u0219i pur \u0219i simplu concedierilor;<\/li>\n<li>Fie de o ma\u0219in\u0103 care func\u021bioneaz\u0103 fizic, care, de asemenea, cedeaz\u0103, poate fi furat\u0103, aduce surprize \u0219i nepl\u0103ceri. <\/li>\n<\/ul>\n<p>\n\u00cenc\u0103 o dat\u0103, se impune solu\u021bia ideal\u0103: totul ar trebui s\u0103 fie transformat \u00een cod u\u0219or de citit, \u00eentre\u021binut, \u0219i bine scris. <\/p>\n<p>Astfel, infrastructura ca \u0219i cod (Infrastructure as Code \u2013 IaC) este descrierea \u00eentregii infrastructuri existente sub form\u0103 de cod, precum \u0219i instrumentele \u00eenso\u021bitoare pentru a lucra cu acesta \u0219i a crea o infrastructur\u0103 real\u0103 din acela\u0219i cod.<\/p>\n<p><b class=\"spoiler_title\">De ce s\u0103 traduci totul \u00een cod<\/b>Oamenii nu sunt ma\u0219ini. Ei nu pot re\u021bine tot. Reac\u021bia unei persoane \u0219i a unei ma\u0219ini este diferit\u0103. Tot ceea ce este automatizat func\u021bioneaz\u0103 poten\u021bial mai repede dec\u00e2t tot ce face omul. Cel mai important este s\u0103 existe o singur\u0103 surs\u0103 de adev\u0103r (single source of truth). <\/p>\n<p><b class=\"spoiler_title\">De unde provin noii ingineri SRE<\/b>Deci, am decis s\u0103 angaj\u0103m noi ingineri SRE, dar de unde s\u0103-i lu\u0103m? O carte cu r\u0103spunsuri corecte (<noindex><a rel=\"nofollow\" href=\"https:\/\/landing.google.com\/sre\/books\/\">Google SRE Book<\/a><\/noindex>) ne spune: din r\u00e2ndul dezvoltatorilor. Ace\u0219tia lucreaz\u0103 cu cod, iar tu atingi starea ideal\u0103.<\/p>\n<p>Am c\u0103utat mult \u0219i bine pe pia\u021ba muncii din afara companiei noastre. Dar suntem nevoi\u021bi s\u0103 recunoa\u0219tem c\u0103 nu am g\u0103sit nicio persoan\u0103 conform cerin\u021belor noastre. A trebuit s\u0103 ne uit\u0103m printre cei din interior. <\/p>\n<h2>Problemele infrastructurii ca \u0219i cod<\/h2>\n<p>\nAcum s\u0103 ne uit\u0103m la exemplele de cum infrastructura poate fi codificat\u0103. Codul este bine scris, de calitate, cu comentarii \u0219i indentare. <\/p>\n<p>Exemplu de cod din Terraform.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/1a0bbca47e88fb12e97c0f270efba177.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExemplu de cod din Ansible.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/358fad8f5944bca1b97b2d6e37b2ee5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDomnilor, dar dac\u0103 totul ar fi fost at\u00e2t de simplu! Noi suntem \u00een lumea real\u0103, care este preg\u0103tit\u0103 \u00eentotdeauna s\u0103 te surprind\u0103 cu probleme \u0219i dificult\u0103\u021bi. Nu lipsesc nici aici.<\/p>\n<p><b>1. Prima problem\u0103 este c\u0103, \u00een cele mai multe cazuri, IaC este un fel de DSL.<\/b><\/p>\n<p>Iar DSL, la r\u00e2ndul s\u0103u, este o descriere a structurii. Mai exact, ceea ce ar trebui s\u0103 ai: Json, Yaml, modific\u0103ri de la anumite companii mari care au creat propriul DSL (\u00een Terraform se folose\u0219te HCL). <\/p>\n<p>Problema este c\u0103 \u00een acesta pot lipsi cu u\u0219urin\u021b\u0103 lucruri at\u00e2t de obi\u0219nuite pentru noi, cum ar fi:<\/p>\n<ul>\n<li>variabile;<\/li>\n<li>condi\u021bii;<\/li>\n<li>undeva nu sunt comentarii, de exemplu, \u00een Json, nu sunt prev\u0103zute \u00een mod implicit;<\/li>\n<li>func\u021bii;<\/li>\n<li>\u0219i aici nici nu am men\u021bionat lucruri de nivel \u00eenalt, cum ar fi clasele, mo\u0219tenirea \u0219i toate celelalte.<\/li>\n<\/ul>\n<p>\n <b>2. A doua problem\u0103 a acestui cod este c\u0103, cel mai adesea, este un mediu heterogen<\/b>. De obicei, stai \u0219i lucrezi cu C#, adic\u0103 cu un singur limbaj, un singur stack, un singur ecosistem. Dar aici ai o varietate imens\u0103 de tehnologii. <\/p>\n<p>O situa\u021bie destul de real\u0103 este c\u00e2nd un bash cu Python lanseaz\u0103 un proces, \u00een care se introduce un Json. \u00cel analizezi, apoi un alt generator emite \u00eenc\u0103 30 de fi\u0219iere. Toate aceste variabile de intrare vin din Azure Key Vault, care sunt ob\u021binute printr-un plugin pentru drone.io, scris \u00een Go, iar aceste variabile trec printr-un yaml, care a rezultat din generarea dintr-un motor de \u0219ablonizare jsonnet. Este destul de greu s\u0103 ai un cod bine descris atunci c\u00e2nd mediul t\u0103u este at\u00e2t de diversificat. <\/p>\n<p>Dezvoltarea tradi\u021bional\u0103 \u00eentr-o singur\u0103 sarcin\u0103 folose\u0219te un singur limbaj. Aici, \u00eens\u0103, lucr\u0103m cu un num\u0103r mare de limbaje. <\/p>\n<p><b>3. A treia problem\u0103 este uneltele.<\/b>. Ne-am obi\u0219nuit cu editoare grozave (Ms Visual Studio, Jetbrains Rider), care fac totul pentru noi. \u0218i chiar dac\u0103 ne bloca, ele ne vor spune c\u0103 nu avem dreptate. Pare c\u0103 aceasta este normal \u0219i firesc. <\/p>\n<p>Dar undeva aproape este VSCode, \u00een care sunt unele plugin-uri, care sunt instalate, \u00eentre\u021binute sau nu \u00eentre\u021binute. Au ap\u0103rut versiuni noi, \u0219i nu au fost suportate. O trecere banal\u0103 la implementarea unei func\u021bii (chiar dac\u0103 exist\u0103) devine o problem\u0103 complicat\u0103 \u0219i netradi\u021bional\u0103. O simpl\u0103 redenumire a unei variabile implic\u0103 un \u00eenlocuit \u00een proiect din zeci de fi\u0219iere. Norocul t\u0103u s\u0103 fie acela care \u00eenlocuie\u0219te ceea ce trebuie. Exist\u0103, desigur, ceva eviden\u021biere, exist\u0103 autocompletare, undeva exist\u0103 formatare (adev\u0103rat c\u0103 \u00een terrafom pe Windows nu a func\u021bionat). <\/p>\n<p>La momentul redact\u0103rii articolului <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mauve\/vscode-terraform\">plugin vscode-terraform<\/a><\/noindex> \u00eenc\u0103 nu a fost lansat pentru suportul versiunii 0.12, de\u0219i a fost lansat\u0103 acum 3 luni.<\/p>\n<h2>A venit timpul s\u0103 uit\u0103m de...<\/h2>\n<p><\/p>\n<ol>\n<li>Debugging.<\/li>\n<li>Instrument de refactoring.<\/li>\n<li>Auto completare.<\/li>\n<li>Detectarea erorilor la compilare.<\/li>\n<\/ol>\n<p>\nAmuzant, dar aceasta cre\u0219te timpul de dezvoltare \u0219i cre\u0219te num\u0103rul de erori, care apar inevitabil. <\/p>\n<p>Cel mai \u00eenfrico\u0219\u0103tor este c\u0103 suntem nevoi\u021bi s\u0103 ne g\u00e2ndim nu la cum s\u0103 proiect\u0103m, s\u0103 aranj\u0103m fi\u0219ierele \u00een foldere, s\u0103 decompunem, s\u0103 facem codul \u00eentre\u021binut, citit \u0219i a\u0219a mai departe, ci la cum s\u0103 scriu corect acest\u0103 comand\u0103, pentru c\u0103 am scris-o oarecum gre\u0219it. <\/p>\n<p>Ca \u00eencep\u0103tor, \u00eencerci s\u0103 \u00eenve\u021bi Terraform, iar IDE-ul t\u0103u nu te ajut\u0103 deloc \u00een acest sens. C\u00e2nd exist\u0103 documenta\u021bie \u2013 intri, te ui\u021bi. Dar dac\u0103 ai intra \u00eentr-un nou limbaj de programare, IDE-ul \u021bi-ar sugera c\u0103 exist\u0103 un tip, iar altul nu. Cel pu\u021bin, la nivelul int sau string. Aceasta poate fi adesea util. <\/p>\n<h2>Dar ce se \u00eent\u00e2mpl\u0103 cu testele?<\/h2>\n<p>\nVe\u021bi \u00eentreba: \u201eCum r\u0103m\u00e2ne cu testele, domnilor programatori?\u201d Tipii serio\u0219i testeaz\u0103 totul \u00een produc\u021bie, \u0219i este sever. Iat\u0103 un exemplu de test unitar pentru un modul Terraform de pe site. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/azure\/terraform\/terratest-in-terraform-modules\">de Microsoft<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/b9391409941e14f7e3cf6f8d964a2668.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAu o documenta\u021bie bun\u0103. Microsoft mi-a pl\u0103cut \u00eentotdeauna pentru abordarea lor fa\u021b\u0103 de documenta\u021bie \u0219i \u00eenv\u0103\u021bare. Dar nu trebuie s\u0103 fii un unchi Bob pentru a \u00een\u021belege c\u0103 aici nu este codul ideal. Observa\u021bi validarea, care este desf\u0103\u0219urat\u0103 \u00een dreapta. <\/p>\n<p>Problema testului unitar este c\u0103 noi putem verifica corectitudinea JSON-ului la ie\u0219ire. Am introdus 5 parametrii, \u0219i am ob\u021binut un \u0219ir de JSON de 2000 de linii. Pot analiza ce se \u00eent\u00e2mpl\u0103 aici, valida rezultatul testului... <\/p>\n<p>Este dificil s\u0103 analizezi JSON \u00een Go. Dar trebuie s\u0103 scrii \u00een Go, pentru c\u0103 Terraform pe Go este o practic\u0103 bun\u0103, test\u00e2nd \u00een limbajul \u00een care scrii. Organiza\u021bia codului este foarte slab\u0103. Totu\u0219i, aceasta este cea mai bun\u0103 bibliotec\u0103 pentru testare. <\/p>\n<p>Microsoft \u00eensu\u0219i scrie module sale, test\u00e2ndu-le \u00een acest mod. Desigur, este Open Source. Tot ce spun pute\u021bi veni \u0219i corecta. Pot s\u0103 m\u0103 a\u0219ez \u0219i \u00een o s\u0103pt\u0103m\u00e2n\u0103 s\u0103 rezolv totul, s\u0103 open-sourcific pluginuri pentru VS Code, Terraform, s\u0103 fac un plugin pentru Rider. Poate s\u0103 scriu c\u00e2\u021biva analizatori, s\u0103 integrez linteri, s\u0103 contribui la biblioteca de testare. Pot face totul. Dar nu despre asta ar trebui s\u0103 m\u0103 ocup. <\/p>\n<h2>Cele mai bune practici Infrastructure as Code<\/h2>\n<p>\nS\u0103 continu\u0103m. Dac\u0103 \u00een IaC nu sunt teste, dac\u0103 IDE-ul \u0219i uneltele sunt slabe, atunci ar trebui s\u0103 existe m\u0103car cele mai bune practici. Am mers \u00een Google Analytics \u0219i am f\u0103cut o compara\u021bie \u00eentre dou\u0103 interog\u0103ri de c\u0103utare: Cele mai bune practici Terraform \u0219i cele mai bune practici C#. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/3d0e8cd626596deea99324285321a0ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe vedem? Statistici nemiloase, nu \u00een favoarea noastr\u0103. \u00cen ceea ce prive\u0219te cantitatea de material \u2013 e aceea\u0219i poveste. \u00cen dezvoltarea C# ne scufund\u0103m \u00een materiale, avem cele mai bune practici, avem c\u0103r\u021bi scrise de exper\u021bi, \u0219i, de asemenea, c\u0103r\u021bi scrise pe c\u0103r\u021bi de al\u021bi exper\u021bi care critic\u0103 acele c\u0103r\u021bi. O multitudine de documenta\u021bie oficial\u0103, articole, cursuri de formare, iar acum \u0219i dezvoltare open source.<\/p>\n<p>C\u00e2t despre interogarea IaC: aici aduna\u021bi informa\u021bii cu greu din prezent\u0103rile hi-load-ului sau HashiConf, din documenta\u021bia oficial\u0103 \u0219i numeroasele probleme de pe GitHub. Cum s\u0103 distribuim aceste module, ce s\u0103 facem cu ele? Pare c\u0103 aceasta este o problem\u0103 real\u0103... Exist\u0103 o comunitate, domnilor, unde pentru orice \u00eentrebare ve\u021bi primi 10 comentarii pe GitHub. Dar nu este sigur. <\/p>\n<p>Din p\u0103cate, \u00een acest moment, exper\u021bii abia \u00eencep s\u0103 apar\u0103. \u00cenc\u0103 sunt prea pu\u021bini. Comunitatea este la un nivel incipient. <\/p>\n<h2>\u00cencotro se \u00eendreapt\u0103 totul \u0219i ce trebuie s\u0103 facem<\/h2>\n<p>\nPo\u021bi renun\u021ba la tot \u0219i s\u0103 te \u00eentorci la C#, \u00een lumea Rider. Dar nu. De ce ai face asta, dac\u0103 nu pentru a g\u0103si o solu\u021bie? Mai departe, voi prezenta concluziile mele subiective. Pute\u021bi s\u0103 contesta\u021bi \u00een comentarii, ar fi interesant. <\/p>\n<p>Personal, mizez pe c\u00e2teva lucruri:<\/p>\n<ol>\n<li>Dezvoltarea \u00een acest domeniu are loc foarte rapid. Iat\u0103 un grafic al solicit\u0103rilor legate de DevOps.\n<p><img decoding=\"async\" alt=\"Infrastructure as code: prima \u00eent\u00e2lnire\" src=\"\/wp-content\/uploads\/2019\/08\/068276f040f17c84a4c7eb9e11703c5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoate c\u0103 tema este una popular\u0103, dar faptul c\u0103 domeniul cre\u0219te aduce o oarecare speran\u021b\u0103. <\/p>\n<p>Dac\u0103 ceva cre\u0219te at\u00e2t de repede, cu siguran\u021b\u0103 vor ap\u0103rea oameni inteligen\u021bi care vor spune cum trebuie s\u0103 facem, \u0219i cum nu. Cre\u0219terea popularit\u0103\u021bii conduce la faptul c\u0103 poate cineva va avea \u00een sf\u00e2r\u0219it timp s\u0103 completeze un plugin pentru jsonnet pentru vscode, care va permite s\u0103 treci la implementarea unei func\u021bii, \u00een loc s\u0103 o cau\u021bi prin ctrl+shift+f. Pe m\u0103sur\u0103 ce totul se dezvolt\u0103, apar mai multe materiale. Lansarea acelei c\u0103r\u021bi de la Google despre SRE este un exemplu excelent.<\/li>\n<li>Exist\u0103 metode \u0219i practici dezvoltate \u00een programarea obi\u0219nuit\u0103, pe care le putem aplica cu succes aici. Da, sunt nuan\u021be cu testarea \u0219i medii heterogene, instrumenta\u021bia insuficient\u0103, dar s-au acumulat o mul\u021bime de practici care pot fi utile \u0219i de ajutor.\n<p>Un exemplu banal: colaborarea prin programare \u00een pereche. Aceasta ajut\u0103 enorm la clarificarea conceptelor. C\u00e2nd ai un coleg l\u00e2ng\u0103 tine care \u00eencearc\u0103, de asemenea, s\u0103 \u00een\u021beleag\u0103 ceva, \u00eempreun\u0103 ve\u021bi \u00een\u021belege mai bine.<\/p>\n<p> \u00cen\u021belegerea modului \u00een care se face refactorizarea ajut\u0103 chiar \u0219i \u00een astfel de situa\u021bii. Adic\u0103, po\u021bi s\u0103 nu schimbi totul deodat\u0103, ci s\u0103 schimbi denumirile, apoi s\u0103 schimbi pozi\u021bionarea, apoi poate s\u0103 eviden\u021biezi o parte, oh, \u0219i aici lipsesc comentariile. <\/li>\n<\/ol>\n<p><\/p>\n<h2>Concluzie<\/h2>\n<p>\nDe\u0219i ra\u021bionamentele mele pot p\u0103rea pesimiste, privesc cu speran\u021b\u0103 c\u0103tre viitor \u0219i sper sincer c\u0103 noi (\u0219i voi) vom reu\u0219i.<\/p>\n<blockquote><p>Urm\u0103toarea parte a articolului este \u00een preg\u0103tire. \u00cen aceasta voi povesti despre cum am \u00eencercat s\u0103 aplic\u0103m practici de dezvoltare agil\u0103 pentru a \u00eembun\u0103t\u0103\u021bi procesul nostru de \u00eenv\u0103\u021bare \u0219i munca cu infrastructura.<\/p><\/blockquote>\n<p>Sursa: <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.2.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\/ro\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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 \u00eent\u00e2lnire | ProHoster","description":"\u00cen compania noastr\u0103 are loc procesul de integrare a echipei SRE. Am intrat \u00een aceast\u0103 poveste din perspectiva dezvolt\u0103rii. Pe parcurs, am avut c\u00e2teva g\u00e2nduri \u0219i insight-uri pe care doresc s\u0103 le \u00eemp\u0103rt\u0103\u0219esc cu al\u021bi dezvoltatori.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/infrastructure-as-code-pervoe-znakomstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/37586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=37586"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/28211"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=37586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=37586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=37586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}