{"id":90386,"date":"2020-07-31T13:42:20","date_gmt":"2020-07-31T11:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management"},"modified":"2020-07-31T13:42:20","modified_gmt":"2020-07-31T11:42:20","slug":"triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","title":{"rendered":"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Aproape de Anul Nou. Copiii din \u00eentreaga \u021bar\u0103 \u0219i-au trimis deja scrisori lui Mo\u0219 Cr\u0103ciun sau \u0219i-au dorit cadouri, iar principalul lor executant \u2014 unul dintre marii retailerii \u2014 se preg\u0103tea pentru apogeul v\u00e2nz\u0103rilor. \u00cen luna decembrie, \u00eenc\u0103rc\u0103tura pe data center-ul s\u0103u cre\u0219te de c\u00e2teva ori. De aceea, compania a decis s\u0103 modernizeze centrul de date \u0219i s\u0103 introduc\u0103 \u00een func\u021biune c\u00e2teva zeci de servere noi \u00een locul echipamentului care \u00ee\u0219i dep\u0103\u0219ise termenul de utilizare. Aici se \u00eencheie povestea pe fondul fulgilor de z\u0103pad\u0103 care se \u00eenv\u00e2rte, iar thrillerul \u00eencepe. <\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/ebc2128d73e9a0e7f1e383b4b04ee492.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEchipamentele au sosit pe loca\u021bie cu c\u00e2teva luni \u00eenainte de v\u00e2rful v\u00e2nz\u0103rilor. Serviciul de exploatare, bine\u00een\u021beles, \u0219tie cum \u0219i ce s\u0103 configureze pe servere pentru a le introduce \u00een mediu de produc\u021bie. Dar era necesar s\u0103 automatiz\u0103m acest proces \u0219i s\u0103 elimin\u0103m factorul uman. Mai mult, serverele \u00eenlocuiau un set de sisteme SAP, extrem de importante pentru companie, \u00eenainte de migrare. <\/p>\n<p>Punerea \u00een func\u021biune a noilor servere era strict legat\u0103 de termenul limit\u0103. \u0218i mutarea acestuia ar fi amenin\u021bat at\u00e2t livrarea a miliardului de cadouri, c\u00e2t \u0219i migrarea sistemelor. Data nu ar fi putut fi schimbat\u0103 nici m\u0103car de o echip\u0103 \u00een care s\u0103 se afle Mo\u0219 Cr\u0103ciun sau Sf. Nicolae \u2014 mutarea sistemului SAP pentru gestionarea stocurilor se poate face doar o dat\u0103 pe an. \u00cen noaptea dintre 31 decembrie \u0219i 1 ianuarie, uria\u0219ele depozite ale retailerului, echivalente cu 20 de terenuri de fotbal, \u00ee\u0219i opresc activitatea timp de 15 ore. Iar aceasta este singura fereastr\u0103 de timp pentru migrarea sistemului. Nu aveam voie s\u0103 gre\u0219im la introducerea serverelor. <\/p>\n<p>\u00cemi voi explica imediat: povestea mea reflect\u0103 instrumentele \u0219i procesul de management al configura\u021biilor pe care le folose\u0219te echipa noastr\u0103.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nComplexul de management al configura\u021biilor const\u0103 din mai multe niveluri. Componenta cheie este sistemul CMS. \u00cen exploatarea industrial\u0103, lipsa unuia dintre niveluri ar duce inevitabil la minuni nepl\u0103cute.<\/p>\n<h1>Managementul instal\u0103rii OS<\/h1>\n<p>\nPrimul nivel este sistemul de management al instal\u0103rii sistemelor de operare pe servere fizice \u0219i virtuale. Acesta creeaz\u0103 configura\u021bii de baz\u0103 pentru sistemele de operare, elimin\u00e2nd factorul uman. <\/p>\n<p>Prin aceast\u0103 sistem\u0103, am ob\u021binut instan\u021be standardizate \u0219i preg\u0103tite pentru automatizare a serverelor cu sistem de operare. La \u201edistribuire\u201d, acestea au primit un set minim de utilizatori locali \u0219i chei publice SSH, precum \u0219i o configura\u021bie de sistem de operare coerent\u0103. Am putut gestiona serverele prin intermediul CMS \u0219i eram siguri c\u0103, la nivel de sistem de operare, nu exist\u0103 surprize. <\/p>\n<p>Sarcina \u201emaxim\u0103\u201d pentru sistemul de gestionare a instal\u0103rii este de a configura automat serverele de la nivelul BIOS\/Firmware p\u00e2n\u0103 la sistemul de operare. Multe aici depind de hardware \u0219i de cerin\u021bele de configurare. Pentru hardware heterogen se poate considera <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dmtf.org\/standards\/redfish\">REDFISH API<\/a><\/noindex>. Dac\u0103 tot hardware-ul provine de la un singur furnizor, este adesea mai convenabil s\u0103 folose\u0219ti instrumente de gestionare deja existente (de exemplu, HP ILO Amplifier, DELL OpenManage etc.).<\/p>\n<p>Pentru instalarea sistemului de operare pe servere fizice, am folosit Cobbler, bine cunoscut tuturor, \u00een care este definit un set de profiluri de instalare coerente cu serviciul de operare. Atunci c\u00e2nd se adaug\u0103 un nou server \u00een infrastructur\u0103, inginerul leag\u0103 adresa MAC a serverului de profilul necesar \u00een Cobbler. La prima pornire prin re\u021bea, serverul prime\u0219te o adres\u0103 temporar\u0103 \u0219i un sistem de operare proasp\u0103t. Apoi, este mutat \u00een VLAN\/IP-uri \u021bint\u0103 \u0219i continu\u0103m activitatea acolo. Da, schimbarea VLAN-ului dureaz\u0103 \u0219i necesit\u0103 coordonare, dar aduce o protec\u021bie suplimentar\u0103 \u00eempotriva instal\u0103rii accidentale a serverului \u00een mediu de produc\u021bie.<\/p>\n<p>Serverele virtuale le-am creat pe baza \u0219abloanelor preg\u0103tite cu ajutorul HashiCorp Packer. Motivul a fost acela\u0219i: pentru a preveni posibilele erori umane \u00een instalarea sistemului de operare. Dar, spre deosebire de serverele fizice, Packer permite s\u0103 nu folosim PXE, bootare re\u021bea \u0219i schimbare de VLAN. Acest lucru a simplificat \u0219i u\u0219urat crearea serverelor virtuale. <\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/8cde23a4ad2ba1573bc88ec174bfe6b5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1. Gestionarea instal\u0103rii sistemelor de operare.<\/i><\/p>\n<h1>Gestionarea secretelor<\/h1>\n<p>\nOrice sistem de gestionare a configura\u021biilor con\u021bine date care trebuie s\u0103 fie ascunse de utilizatorii de r\u00e2nd, dar sunt necesare pentru preg\u0103tirea sistemelor. Acestea includ parolele utilizatorilor locali \u0219i conturilor de serviciu, cheile certificatelor, diverse API Tokens etc. De obicei, acestea sunt numite \u201esecrete\u201d.<\/p>\n<p>Dac\u0103 de la \u00eenceput nu se determin\u0103 unde \u0219i cum s\u0103 fie stocate aceste secrete, atunci, \u00een func\u021bie de stricte\u021bea cerin\u021belor de securitate a informa\u021biei, sunt posibile urm\u0103toarele metode de stocare:<\/p>\n<ul>\n<li>directly in the configuration management code or in files in the repository;<\/li>\n<li>in specialized configuration management tools (e.g., Ansible Vault);<\/li>\n<li>in CI\/CD systems (Jenkins\/TeamCity\/GitLab\/etc.) or in configuration management systems (Ansible Tower\/Ansible AWX);<\/li>\n<li>also secrets can be passed on 'manual management'. For example, placing them in an agreed location, which are then used by configuration management systems;<\/li>\n<li>various combinations of the above.<\/li>\n<\/ul>\n<p>\nEach method has its downsides. The main one is the lack of access policies for secrets: it's impossible or difficult to determine who can use which secrets. Another disadvantage is the absence of access audit and a full lifecycle. How quickly can we replace a public key, for instance, that is hard-coded and used across several related systems?<\/p>\n<p>We used the centralized secrets storage HashiCorp Vault. This allowed us to: <\/p>\n<ul>\n<li>store secrets securely. They are encrypted, and even if someone gains access to the Vault storage database (for instance, by restoring it from a backup), they won\u2019t be able to read the secrets stored there; <\/li>\n<li>organize access policies for secrets. Users and applications can only access the 'dedicated' secrets assigned to them;<\/li>\n<li>perform access audits for secrets. Any actions taken with secrets are logged in the Vault audit log;<\/li>\n<li>organize a full 'lifecycle' for working with secrets. They can be created, revoked, set with expiration dates, etc.<\/li>\n<li>easily integrate with other systems needing access to secrets;<\/li>\n<li>and also apply end-to-end encryption, one-time passwords for OS and DB, certificates from authorized centers, etc. <\/li>\n<\/ul>\n<p>\nNow let's move on to the central authentication and authorization system. It could have been done without it, but managing users across numerous related systems is too non-trivial. We set up authentication and authorization through the LDAP service. Otherwise, in the same Vault, we would have to constantly issue and track authentication tokens for users. Adding and removing users would turn into the quest: 'did I create\/delete this user everywhere?' <\/p>\n<p>We add another level to our system: secret management and central authentication\/authorization:<\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/993e863417898c39940fe0bc9ee55b1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2. Secret management.<\/i><\/p>\n<h1>Gestionarea configura\u021biilor<\/h1>\n<p>\nAm ajuns la esen\u021ba sistemului CMS. \u00cen cazul nostru, este vorba despre combina\u021bia Ansible \u0219i Red Hat Ansible AWX. <\/p>\n<p>\u00cen loc de Ansible, pot fi folosite Chef, Puppet, SaltStack. Am ales Ansible pe baza mai multor criterii. <\/p>\n<ul>\n<li>\u00cen primul r\u00e2nd, este versatilitate. Setul de module gata preg\u0103tite pentru gestionare <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/modules_by_category.html\">este impresionant<\/a><\/noindex>. Iar dac\u0103 nu este suficient, po\u021bi c\u0103uta pe GitHub \u0219i Galaxy. <\/li>\n<li>\u00cen al doilea r\u00e2nd, nu este necesar s\u0103 instalezi \u0219i s\u0103 \u00eentre\u021bii agen\u021bi pe echipamentele gestionate, s\u0103 demonstrezi c\u0103 nu afecteaz\u0103 \u00eenc\u0103rc\u0103tura \u0219i s\u0103 confirmi absen\u021ba \"backdoor-urilor\". <\/li>\n<li>\u00cen al treilea r\u00e2nd, Ansible are un prag de acces sc\u0103zut. Un inginer competent poate scrie un playbook func\u021bional \u00een prima zi de utilizare a produsului.<\/li>\n<\/ul>\n<p>\n\u00cens\u0103, doar Ansible \u00een medii industriale nu era suficient pentru noi. Alte probleme legate de restric\u021bionarea accesului \u0219i auditul ac\u021biunilor administratorilor ar fi ap\u0103rut. Cum s\u0103 delimit\u0103m accesul? Fiindc\u0103 era necesar ca fiecare departament s\u0103 gestioneze (adic\u0103 \u2013 s\u0103 ruleze playbook-uri Ansible) un set propriu de servere. Cum s\u0103 permit\u0103 execu\u021bia unor playbook-uri Ansible doar anumitor angaja\u021bi? Sau cum s\u0103 urm\u0103reasc\u0103 cine a rulat un playbook, f\u0103r\u0103 a crea multe conturi locale pe servere \u0219i echipamente gestionate prin Ansible?<\/p>\n<p>Majoritatea acestor \u00eentreb\u0103ri sunt rezolvate de Red Hat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/products\/tower\">Ansible Tower<\/a><\/noindex>, sau proiectul s\u0103u open-source upstream <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ansible\/awx\">Ansible AWX<\/a><\/noindex>. De aceea l-am preferat pentru client. <\/p>\n<p>\u0218i un alt detaliu despre portretul sistemului nostru CMS. Playbook-ul Ansible trebuie s\u0103 fie p\u0103strat \u00een sistemele de gestionare a repository-ului de cod. La noi, acest lucru este realizat cu ajutorul <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/\">GitLab CE<\/a><\/noindex>.<\/p>\n<p>Deci, configura\u021biile sunt gestionate de combina\u021bia Ansible\/Ansible AWX\/GitLab (vezi Fig. 3). Desigur, AWX\/GitLab sunt integrate cu un sistem unic de autentificare, iar playbook-ul Ansible este integrat cu HashiCorp Vault. Configura\u021biile ajung \u00een medii de produc\u021bie doar prin Ansible AWX, \u00een care sunt stabilite toate \"regulile jocului\": cine \u0219i ce poate configura, de unde s\u0103 ob\u021bin\u0103 codul pentru gestionarea configura\u021biilor pentru CMS etc.<\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/f4f5b3904a2145d7283cd52f921bca89.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3. Gestionarea configura\u021biilor.<\/i><\/p>\n<h1>Gestionarea test\u0103rii<\/h1>\n<p>\nConfigura\u021bia noastr\u0103 este prezentat\u0103 sub form\u0103 de cod. Prin urmare, trebuie s\u0103 respect\u0103m acelea\u0219i reguli ca dezvoltatorii de software. A fost necesar s\u0103 organiz\u0103m procesele de dezvoltare, testare continu\u0103, livrare \u0219i aplicare a codului de configura\u021bie pe serverele de produc\u021bie.<\/p>\n<p>Dac\u0103 acest lucru nu este realizat imediat, atunci rolurile scrise pentru configura\u021bie ar \u00eenceta s\u0103 fie suportate \u0219i actualizate sau nu ar mai rula \u00een produc\u021bie. Remediul pentru aceast\u0103 problem\u0103 este cunoscut \u0219i s-a dovedit eficient \u00een acest proiect:<\/p>\n<ul>\n<li>fiecare rol este acoperit de teste modulare;<\/li>\n<li>teste sunt rulate automat la fiecare modificare a codului care gestioneaz\u0103 configura\u021biile;<\/li>\n<li>modific\u0103rile din codul de gestionare a configura\u021biilor ajung \u00een mediu de produc\u021bie doar dup\u0103 ce toate testele au fost trecute cu succes \u0219i dup\u0103 revizuirea codului.<\/li>\n<\/ul>\n<p>\nDezvoltarea codului \u0219i gestionarea configura\u021biilor au devenit mai calme \u0219i previzibile. Pentru a organiza testarea continu\u0103, am folosit instrumentul GitLab CI\/CD, iar framework-ul pentru organizarea testelor a fost <noindex><a rel=\"nofollow\" href=\"https:\/\/molecule.readthedocs.io\/en\/latest\/\">Ansible Molecule<\/a><\/noindex>.<\/p>\n<p>La orice modificare \u00een codul de gestionare a configura\u021biilor, GitLab CI\/CD apeleaz\u0103 Molecule: <\/p>\n<ul>\n<li>care verific\u0103 sintaxa codului, <\/li>\n<li>lanceaz\u0103 un container Docker, <\/li>\n<li>aplic\u0103 codul modificat \u00een containerul creat, <\/li>\n<li>verific\u0103 rolul pentru idempotent\u0103 \u0219i ruleaz\u0103 teste pentru acest cod (granularitatea aici este la nivelul rolului ansible, vezi Fig. 4).<\/li>\n<\/ul>\n<p>\nConfigur\u0103rile \u00een mediu de produc\u021bie erau livrate cu ajutorul Ansible AWX. Inginerii responsabili de exploatare aplicau modific\u0103rile din configura\u021bie prin \u0219abloane predefinite. AWX cerea de fiecare dat\u0103, la aplicare, cea mai recent\u0103 versiune a codului din ramura principal\u0103 GitLab. Astfel, am exclus utilizarea codului nevalidat sau \u00eenvechit \u00een mediu de produc\u021bie. Este evident c\u0103 codul ajungea \u00een ramura principal\u0103 doar dup\u0103 testare, revizuire \u0219i aprobat.<\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/aa8f6205f05792a6a1120ad7360ab102.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 4. Testarea automat\u0103 a rolurilor \u00een GitLab CI\/CD.<\/i><\/p>\n<p>Este o alt\u0103 problem\u0103 legat\u0103 de exploatarea sistemelor de produc\u021bie. \u00cen via\u021ba real\u0103, este foarte dificil s\u0103 faci modific\u0103ri \u00een configura\u021bie doar prin codul CMS. Apar situa\u021bii neprev\u0103zute, c\u00e2nd inginerul trebuie s\u0103 schimbe configura\u021bia \u201eaici \u0219i acum\u201d, f\u0103r\u0103 a a\u0219tepta corectarea codului, testarea, aprobatul etc.<\/p>\n<p>Ca urmare, din cauza modific\u0103rilor manuale apar discrepan\u021be \u00een configura\u021biile pe echipamente similare (de exemplu, pe noduri HA, configura\u021bia set\u0103rilor sysctl este diferit\u0103). Sau configura\u021bia real\u0103 de pe echipament difer\u0103 de cea specificat\u0103 \u00een codul CMS. <\/p>\n<p>Prin urmare, pe l\u00e2ng\u0103 testarea continu\u0103, verific\u0103m mediile de produc\u021bie pentru discrepan\u021bele \u00een configura\u021bii. Am ales cea mai simpl\u0103 op\u021biune: rularea codului de configurare CMS \u00een modul \u201edry run\u201d, adic\u0103 f\u0103r\u0103 aplicarea modific\u0103rilor, dar cu notificarea tuturor discrepan\u021belor dintre configura\u021bia planificat\u0103 \u0219i cea real\u0103. Am realizat acest lucru prin rularea periodic\u0103 a tuturor playbook-urilor Ansible cu op\u021biunea \u201e--check\u201d pe serverele de produc\u021bie. Pentru execu\u021bia \u0219i actualitatea playbook-urilor, ca de obicei, se ocup\u0103 Ansible AWX (vezi Fig. 5):<\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/108a5a473f60ab76ee15f9334ebcbab7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5. Verific\u0103ri pentru abateri de configura\u021bie \u00een Ansible AWX.<\/i><\/p>\n<p>Dup\u0103 verific\u0103rile AWX, se trimite un raport despre abateri administratorilor. Ace\u0219tia analizeaz\u0103 configura\u021bia problematic\u0103 \u0219i apoi o corecteaz\u0103 prin playbook-uri ajustate. Astfel, men\u021binem configura\u021bia \u00een mediul de produc\u021bie, iar CMS este \u00eentotdeauna actualizat \u0219i sincronizat. Aceasta ne scute\u0219te de nepl\u0103cerile \u201eminunilor\u201d care apar atunci c\u00e2nd codul CMS este aplicat pe servere \u201ede produc\u021bie\u201d.<\/p>\n<p>Acum avem un nivel important de testare, format din Ansible AWX\/GitLab\/Molecule (Fig. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Un thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei\" src=\"\/wp-content\/uploads\/2020\/07\/f487f5603e90b0c753fb9decf9018b11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Managementul test\u0103rii.<\/i><\/p>\n<p>Difficult? I don't dispute it. However, this comprehensive configuration management system has become an exhaustive answer to many questions related to server configuration automation. Now, the retailer's standard servers always have a strictly defined configuration. The CMS, unlike an engineer, will not forget to add the necessary settings, create users, and perform dozens or hundreds of required configurations.<\/p>\n<p>\u00cen set\u0103rile serverelor \u0219i medii nu exist\u0103 ast\u0103zi \u201ecuno\u0219tin\u021be secrete\u201d. Toate caracteristicile necesare sunt reflectate \u00een playbook. Nu mai exist\u0103 creativitate \u0219i instruc\u021biuni vagi: \u201e<i>instaleaz\u0103 ca un Oracle obi\u0219nuit, dar trebuie s\u0103 scrii c\u00e2teva set\u0103ri sysctl \u0219i s\u0103 adaugi utilizatorii cu UID-ul corect. \u00centreab\u0103-i pe cei din exploatare, ei \u0219tiu.<\/i>\u00bb. <\/p>\n<p>Posibilitatea de a detecta abaterile de configura\u021bie \u0219i de a le corecta anticipat ofer\u0103 lini\u0219te. F\u0103r\u0103 un sistem de management al configura\u021biilor, acest proces ar\u0103ta de obicei diferit. Problemele se acumuleaz\u0103 p\u00e2n\u0103 c\u00e2nd, \u00eentr-o zi, \u201eexplodeaz\u0103\u201d \u00een produc\u021bie. Apoi are loc o analiz\u0103 a incidentelor, se verific\u0103 \u0219i se corecteaz\u0103 configura\u021biile. \u0218i ciclul se repet\u0103 din nou. <\/p>\n<p>\u0218i, desigur, am redus timpul de punere \u00een func\u021biune a serverelor de la c\u00e2teva zile la c\u00e2teva ore.<\/p>\n<p>\u00cen noaptea de Anul Nou, c\u00e2nd copiii deschideau ferici\u021bi cadourile iar adul\u021bii \u00ee\u0219i puneau dorin\u021be sub sunetul clopotelor, inginerii no\u0219tri au migrat sistemul SAP pe servere noi. Chiar \u0219i Mo\u0219 Cr\u0103ciun va spune c\u0103 cele mai frumoase minuni sunt cele bine preg\u0103tite. <\/p>\n<p>P.S. Echipa noastr\u0103 se confrunt\u0103 adesea cu clien\u021bi care doresc s\u0103 rezolve c\u00e2t mai simplu sarcina de gestionare a configura\u021biilor. Ideal ar fi s\u0103 fie ca prin magie \u2014 cu un singur instrument. Dar \u00een realitate, lucrurile sunt mai complicate (da, din nou nu au adus gloan\u021be de argint): trebuie s\u0103 cre\u0103m un \u00eentreg proces folosind instrumente convenabile pentru echipa clientului.<\/p>\n<p><i>Autor: Serghei Artiomov, arhitect al departamentului <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/portal.jet.su\/about\/company\/structure\/?set_filter_structure=Y&amp;structure_UF_DEPARTMENT=56656\"><i>solu\u021biilor DevOps<\/i><\/a><\/noindex><i> \u00abInfosisteme Jet\u00bb<\/i><br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/jetinfosystems\/blog\/513132\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436. \u0412 \u0434\u0435\u043a\u0430\u0431\u0440\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0435\u0433\u043e \u0426\u041e\u0414 \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u0442\u0440\u043e\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":90387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-90386","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=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\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\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\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\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\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=\"2020-07-31T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-31T11:42:20+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\udd47Thriller despre configurarea serverelor f\u0103r\u0103 minuni cu Managementul Configura\u021biei | ProHoster","description":"Se apropia Anul Nou. Copiii din \u00eentreaga \u021bar\u0103 \u00ee\u0219i trimiseser\u0103 deja scrisorile lui Mo\u0219 Cr\u0103ciun sau \u00ee\u0219i f\u0103cuser\u0103 dorin\u021be, iar principalul lor executor \u2014 unul dintre marii distribuitori \u2014 se preg\u0103tea pentru apogeul v\u00e2nz\u0103rilor.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","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\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster","og:description":"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","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":"2020-07-31T11:42:20+00:00","article:modified_time":"2020-07-31T11:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90386","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:52:34","updated":"2022-09-28 09:47:54","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\/90386","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=90386"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/90386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/90387"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=90386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=90386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=90386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}