{"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\/da\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","title":{"rendered":"En thriller om at konfigurere servere uden mirakler med Configuration Management","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00c5ret n\u00e6rmede sig nyt\u00e5r. B\u00f8rnene i hele landet havde allerede sendt breve til Julemanden eller \u00f8nsket sig gaver, og hovedpersonen bag dem \u2014 en af de store detailhandlere \u2014 gjorde sig klar til salgets kulmination. I december stiger belastningen p\u00e5 deres datacenter flere gange. Derfor besluttede virksomheden at opgradere datacentret og s\u00e6tte flere dusin nye servere i drift i stedet for udstyr, hvis levetid var udl\u00f8bet. Her ender fort\u00e6llingen, mens snefnuggene sv\u00e6ver omkring, og thrillerens begyndelse tager fat. <\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/ebc2128d73e9a0e7f1e383b4b04ee492.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nUdstyret ankom til lokationen flere m\u00e5neder f\u00f8r salgstoppen. Driftsafdelingen ved selvf\u00f8lgelig, hvordan man konfigurerer serverne for at f\u00e5 dem i produktion. Men vi havde brug for at automatisere dette og eliminere den menneskelige faktor. Derudover erstattede serverne et system af SAP, som var kritisk vigtigt for virksomheden, inden migrationen. <\/p>\n<p>Aktiveringen af de nye servere var strengt knyttet til en deadline. At flytte d\u00e9n ville have sat b\u00e5de udleveringen af milliarder gaver og systemmigreringen i fare. Selv Julemandens og Santa Claus' team kunne ikke \u00e6ndre datoen \u2014 SAP-systemet til lagerstyring kan kun flyttes \u00e9n gang om \u00e5ret. Fra den 31. december til den 1. januar stopper de enorme lagre hos detailhandleren, til sammen p\u00e5 st\u00f8rrelse med 20 fodboldbaner, deres arbejde i 15 timer. Og det er den eneste tidsramme til at flytte systemet. Vi havde ikke r\u00e5d til fejl med aktiveringen af serverne. <\/p>\n<p>Lad mig straks forklare: Min fort\u00e6lling afspejler det v\u00e6rkt\u00f8j og den proces til konfiguration management, som vores team anvender.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKonfiguration management-systemet best\u00e5r af flere lag. Den centrale komponent er CMS-systemet. I industriel drift ville frav\u00e6ret af et af lagene uundg\u00e5eligt f\u00f8re til ubehagelige overraskelser.<\/p>\n<h1>H\u00e5ndtering af OS-installation<\/h1>\n<p>\nDet f\u00f8rste niveau er systemet til h\u00e5ndtering af installation af operativsystemer p\u00e5 fysiske og virtuelle servere. Det skaber grundl\u00e6ggende OS-konfigurationer, hvilket eliminerer den menneskelige faktor. <\/p>\n<p>Med dette system kunne vi opn\u00e5 standardiserede og automatiserbare eksemplarer af servere med OS. Ved 'udrulning' modtog de et minimum af lokale brugere og offentlige SSH-n\u00f8gler samt en enhedskonfiguration af OS. Vi kunne garanteret styre serverne via CMS og var sikre p\u00e5, at der ikke var nogen overraskelser 'dernede', p\u00e5 OS-niveau. <\/p>\n<p>Maksimal opgave for installationsstyringssystemet er automatisk at konfigurere servere fra BIOS\/Firmware til OS. Meget afh\u00e6nger af hardwaren og konfigurationsopgaverne. For heterogen hardware kan man overveje <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dmtf.org\/standards\/redfish\">REDFISH API<\/a><\/noindex>. Hvis alt 'hardware' er fra \u00e9n leverand\u00f8r, er det ofte lettere at bruge eksisterende administrationsv\u00e6rkt\u00f8jer (f.eks. HP ILO Amplifier, DELL OpenManage osv.).<\/p>\n<p>Til installation af OS p\u00e5 fysiske servere anvendte vi den velkendte Cobbler, hvor der er defineret en r\u00e6kke profiler for installationen, der er aftalt med driftsafdelingen. Ved tilf\u00f8jelse af en ny server til infrastrukturen knyttede ingeni\u00f8ren MAC-adressen for serveren til den \u00f8nskede profil i Cobbler. Ved f\u00f8rste netboot fik serveren en midlertidig adresse og et friskt OS. Derefter blev den flyttet til den \u00f8nskede VLAN\/IP-adressere og fortsatte arbejdet der. Ja, \u00e6ndringen af VLAN tager tid og kr\u00e6ver koordinering, men det giver ekstra beskyttelse mod utilsigtet installation af serveren i produktionsmilj\u00f8et.<\/p>\n<p>Virtuelle servere blev skabt ud fra skabeloner forberedt med HashiCorp Packer. \u00c5rsagen var den samme: at forhindre mulige menneskelige fejl ved installationen af OS. Men i mods\u00e6tning til fysiske servere tillader Packer ikke brug af PXE, netv\u00e6rksboot og \u00e6ndring af VLAN. Det lettede og forenklede oprettelsen af virtuelle servere. <\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/8cde23a4ad2ba1573bc88ec174bfe6b5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1. Administration af installationen af operativsystemer.<\/i><\/p>\n<h1>H\u00e5ndtering af hemmeligheder<\/h1>\n<p>\nEnhver konfigurationsstyringssystem indeholder data, der skal skjules for almindelige brugere, men som er n\u00f8dvendige for systemforberedelse. Det drejer sig om adgangskoder til lokale brugere og servicekonti, certifikatn\u00f8gler, forskellige API-tokens osv. De kaldes normalt 'hemmeligheder'.<\/p>\n<p>Hvis man ikke fra begyndelsen definerer, hvor og hvordan disse hemmeligheder skal opbevares, afh\u00e6ngigt af hvor strenge informationssikkerhedskravene er, kan de mulige opbevaringsmetoder v\u00e6re:<\/p>\n<ul>\n<li>direkte i konfigurationsstyringskoden eller i filer i depotet;<\/li>\n<li>i specialiserede v\u00e6rkt\u00f8jer til konfigurationsstyring (f.eks. Ansible Vault);<\/li>\n<li>i CI\/CD-systemer (Jenkins\/TeamCity\/GitLab osv.) eller i konfigurationsstyringssystemer (Ansible Tower\/Ansible AWX);<\/li>\n<li>desuden kan hemmeligheder overf\u00f8res via 'manuelle' metoder. For eksempel kan de l\u00e6gges p\u00e5 et aftalt sted, hvorefter de bruges af konfigurationsstyringssystemer;<\/li>\n<li>forskellige kombinationer af de ovenst\u00e5ende metoder.<\/li>\n<\/ul>\n<p>\nHver metode har sine ulemper. Den vigtigste er manglen p\u00e5 adgangspolitikker til hemmeligheder: det er ikke muligt eller sv\u00e6rt at bestemme, hvem der kan bruge hvilke hemmeligheder. En anden ulempe er manglen p\u00e5 adgangsaudit og en fuld livscyklus. Hvordan kan man hurtigt skifte et eksempelvis offentligt n\u00f8gle, som er angivet i koden og i en r\u00e6kke tilknyttede systemer?<\/p>\n<p>Vi har brugt et centralt hemmelighedslager fra HashiCorp Vault. Det har gjort det muligt for os at: <\/p>\n<ul>\n<li>opbevare hemmeligheder sikkert. De er krypteret, og selv hvis nogen f\u00e5r adgang til databasen i Vault (f.eks. ved at gendanne den fra en sikkerhedskopi), kan de ikke l\u00e6se de hemmeligheder, der opbevares der; <\/li>\n<li>organisere adgangspolitikker til hemmeligheder. Brugere og applikationer har kun adgang til de hemmeligheder, der er 'tildelt' dem;<\/li>\n<li>foretage adgangsaudit til hemmeligheder. Enhver handling med hemmeligheder registreres i Vault's revisionslog;<\/li>\n<li>organisere en fuld 'livscyklus' for arbejde med hemmeligheder. De kan oprettes, tilbagekaldes, have udl\u00f8bsdatoer osv.<\/li>\n<li>let integreres med andre systemer, der har brug for adgang til hemmeligheder;<\/li>\n<li>og endda anvende ende-til-ende kryptering, engangskoder til OS og databaser, certifikater fra bemyndigede myndigheder osv. <\/li>\n<\/ul>\n<p>\nLad os nu g\u00e5 videre til det centrale system for autentifikation og autorisation. Man kunne have klaret sig uden det, men administration af brugere i mange relaterede systemer er alt for komplekst. Vi har konfigureret autentifikation og autorisation gennem LDAP-tjenesten. Ellers ville vi i Vault skulle udstede og holde styr p\u00e5 autentifikationstokener for brugerne kontinuerligt. At tilf\u00f8je og fjerne brugere ville have blevet til et eventyr: 'Har jeg husket at oprette\/fjerne denne bruger overalt?' <\/p>\n<p>Vi tilf\u00f8jer endnu et niveau til vores system: styring af hemmeligheder samt central autentifikation\/autorisation:<\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/993e863417898c39940fe0bc9ee55b1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2. Styring af hemmeligheder.<\/i><\/p>\n<h1>Konfigurationsstyring<\/h1>\n<p>\nVi er kommet til kernen \u2014 til CMS-systemet. I vores tilf\u00e6lde er det kombinationen af Ansible og Red Hat Ansible AWX. <\/p>\n<p>Alternativt kan Chef, Puppet eller SaltStack anvendes i stedet for Ansible. Vi valgte Ansible af flere grunde. <\/p>\n<ul>\n<li>For det f\u00f8rste er det alsidighed. S\u00e6ttet af f\u00e6rdige moduler til administration <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/modules_by_category.html\">giver et imponerende indtryk<\/a><\/noindex>. Og hvis det ikke er tilstr\u00e6kkeligt, kan man finde mere p\u00e5 GitHub og Galaxy. <\/li>\n<li>For det andet er der ingen behov for at installere og vedligeholde agenter p\u00e5 den administrerede hardware, overbevise om, at de ikke forstyrrer belastningen, og bekr\u00e6fte frav\u00e6ret af \"bagd\u00f8re\". <\/li>\n<li>For det tredje har Ansible en lav indgangsbarriere. En dygtig ingeni\u00f8r kan skrive en fungerende playbook bogstaveligt talt den f\u00f8rste dag med produktet.<\/li>\n<\/ul>\n<p>\nMen Ansible alene var ikke tilstr\u00e6kkeligt i et produktionsmilj\u00f8. Ellers ville der opst\u00e5 mange problemer med adgangskontrol og revision af administratorers handlinger. Hvordan kan man begr\u00e6nse adgangen? For det var n\u00f8dvendigt at hvert team skulle styre (l\u00e6s: k\u00f8re Ansible playbook) deres eget s\u00e6t servere. Hvordan kan man tillade udf\u00f8relse af bestemte Ansible playbooks kun til bestemte medarbejdere? Eller hvordan kan man spore, hvem der har k\u00f8rt en playbook uden at oprette mange lokale brugerkonti p\u00e5 serverne og udstyret, der styres af Ansible?<\/p>\n<p>De fleste af disse sp\u00f8rgsm\u00e5l l\u00f8ses af Red Hat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/products\/tower\">Ansible Tower<\/a><\/noindex>, eller dets open-source upstream projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ansible\/awx\">Ansible AWX<\/a><\/noindex>. Derfor valgte vi det til kunden. <\/p>\n<p>Og endnu et aspekt af vores CMS-system. Ansible playbooks skal opbevares i systemer til kodeopbevaring. Vi bruger <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/\">GitLab CE<\/a><\/noindex>.<\/p>\n<p>S\u00e5 konfigurationerne styres af kombinationen af Ansible\/Ansible AWX\/GitLab (se Fig. 3). Selvf\u00f8lgelig er AWX\/GitLab integreret med et f\u00e6lles autentifikationssystem, og Ansible playbook er integreret med HashiCorp Vault. Konfigurationer g\u00e5r kun i produktion via Ansible AWX, hvor alle \"spileregler\" er fastsat: hvem og hvad kan konfigurere, hvor der hentes kode til konfigurationsstyring til CMS osv.<\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/f4f5b3904a2145d7283cd52f921bca89.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3. Konfigurationsstyring.<\/i><\/p>\n<h1>Teststyring<\/h1>\n<p>\nVores konfiguration pr\u00e6senteres i form af kode. Derfor er vi tvunget til at spille efter de samme regler som softwareudviklere. Vi var n\u00f8dt til at organisere processerne for udvikling, kontinuerlig test, levering og anvendelse af konfigurationskoden p\u00e5 produktionsservere.<\/p>\n<p>Hvis dette ikke g\u00f8res straks, ville de skrevne roller til konfigurationen enten holde op med at underst\u00f8tte og \u00e6ndre eller stoppe med at k\u00f8re i produktion. L\u00f8sningen p\u00e5 denne smerte er kendt og har vist sig at v\u00e6re effektiv i dette projekt:<\/p>\n<ul>\n<li>hver rolle er d\u00e6kket af modul\u00e6re tests;<\/li>\n<li>testene k\u00f8res automatisk ved enhver \u00e6ndring i koden, der styrer konfigurationerne;<\/li>\n<li>\u00e6ndringer i koden, der styrer konfigurationerne, kommer kun i produktion, efter at alle tests og code review er best\u00e5et.<\/li>\n<\/ul>\n<p>\nUdviklingen af koden og forvaltningen af konfigurationerne er blevet mere rolig og forudsigelig. For at sikre kontinuerlig testning brugte vi GitLab CI\/CD-v\u00e6rkt\u00f8jet, og som framework til at organisere testene valgte vi <noindex><a rel=\"nofollow\" href=\"https:\/\/molecule.readthedocs.io\/en\/latest\/\">Ansible Molecule<\/a><\/noindex>.<\/p>\n<p>Ved enhver \u00e6ndring i koden, der styrer konfigurationerne, kalder GitLab CI\/CD Molecule: <\/p>\n<ul>\n<li>den kontrollerer syntaksen af koden, <\/li>\n<li>starter en Docker-container, <\/li>\n<li>anvender den \u00e6ndrede kode i den oprettede container, <\/li>\n<li>kontrollerer rollen for idempotens og k\u00f8rer tests for denne kode (granulariteten her er p\u00e5 niveauet ansible role, se Fig. 4).<\/li>\n<\/ul>\n<p>\nVi leverede konfigurationer til produktionsmilj\u00f8et ved hj\u00e6lp af Ansible AWX. Ingeni\u00f8rer, der er ansvarlige for driften, anvendte \u00e6ndringerne i konfigurationen gennem foruddefinerede skabeloner. AWX anmodede automatisk om den seneste version af koden fra master-grenen i GitLab ved hvert anvendelse. Dette eliminerede brugen af uafpr\u00f8vet eller for\u00e6ldet kode i produktionsmilj\u00f8et. Selvf\u00f8lgelig kom koden i master-grenen f\u00f8rst efter test, gennemgang og godkendelse.<\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/aa8f6205f05792a6a1120ad7360ab102.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 4. Automatisk test af roller i GitLab CI\/CD.<\/i><\/p>\n<p>Der er ogs\u00e5 et problem relateret til drift af produktionssystemer. I virkeligheden er det meget sv\u00e6rt at foretage \u00e6ndringer i konfigurationen kun gennem CMS-koden. Der opst\u00e5r n\u00f8dsituationer, hvor en ingeni\u00f8r skal \u00e6ndre konfigurationen 'her og nu', uden at vente p\u00e5 koderevision, testning, godkendelse osv.<\/p>\n<p>Som et resultat af manuelle \u00e6ndringer opst\u00e5r der forskelle i konfigurationen p\u00e5 ensartet udstyr (for eksempel har noderne i HA-klyngen forskellige sysctl-indstillingskonfigurationer). Eller den reelle konfiguration p\u00e5 udstyret adskiller sig fra den, der er angivet i CMS-koden. <\/p>\n<p>Derfor kontrollerer vi udover kontinuerlig testning produktionsmilj\u00f8erne for konfigurationsafvigelser. Vi valgte den enkleste metode: at k\u00f8re CMS-konfigurationskoden i \"dry run\"-tilstand, det vil sige uden at anvende \u00e6ndringer, men med meddelelse om alle afvigelser mellem den planlagte og den faktiske konfiguration. Dette implementerede vi med hj\u00e6lp fra periodiske eksekveringer af alle Ansible playbooks med optionen \"--check\" p\u00e5 produktionsserverne. Som altid er det Ansible AWX, der har ansvar for eksekveringen og aktuel status for playbook (se Fig. 5):<\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/108a5a473f60ab76ee15f9334ebcbab7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5. Kontrol af konfigurationsforskelle i Ansible AWX.<\/i><\/p>\n<p>Efter kontrollerne sender AWX en rapport om forskellene til administratorerne. De analyserer den problematiske konfiguration og retter derefter op p\u00e5 den gennem korrigerede playbooks. S\u00e5dan opretholder vi konfigurationen i produktionsmilj\u00f8et, og CMS er altid i en aktuel og synkroniseret tilstand. Det forhindrer ubehagelige \"mirakler\", hvor CMS-koden anvendes p\u00e5 \"live\" servere.<\/p>\n<p>Nu har vi f\u00e5et et vigtigt testniveau best\u00e5ende af Ansible AWX\/GitLab\/Molecule (Fig. 6).<\/p>\n<p><img decoding=\"async\" alt=\"En thriller om at konfigurere servere uden mirakler med Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/f487f5603e90b0c753fb9decf9018b11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Styring af testning.<\/i><\/p>\n<p>Sv\u00e6rt? Jeg vil ikke bestride det. Men s\u00e5dan en kompleks styring af konfigurationer er blevet et udt\u00f8mmende svar p\u00e5 mange sp\u00f8rgsm\u00e5l relateret til automatiseringen af serverops\u00e6tning. Nu har detailhandleren altid en strengt defineret konfiguration for typiske servere. CMS vil, i mods\u00e6tning til ingeni\u00f8ren, ikke glemme at tilf\u00f8je de n\u00f8dvendige indstillinger, oprette brugere og udf\u00f8re titusinder eller hundreder af n\u00f8dvendige indstillinger.<\/p>\n<p>I ops\u00e6tningerne af servere og milj\u00f8er i dag findes der ikke \"hemmelig viden\". Alle n\u00f8dvendige funktioner er afspejlet i playbooks. Ingen mere kreativitet og tvetydige instrukser: \"<i>s\u00e6t det op som en almindelig Oracle, men der skal skrives et par sysctl-indstillinger, og brugere med den n\u00f8dvendige UID skal tilf\u00f8jes. Sp\u00f8rg drengene fra driftsafdelingen, de ved besked.<\/i>\u00bb. <\/p>\n<p>Muligheden for at opdetectere konfigurationsforskelle og rette dem p\u00e5 forh\u00e5nd giver en f\u00f8lelse af ro. Uden et konfigurationstyringssystem ser det normalt anderledes ud. Problemer ophobes indtil de en dag \"exploderer\" i produktionen. Derefter foretages der en efterf\u00f8lgende analyse, kontrolleres og rettes konfigurationerne. Og cyklussen gentages igen. <\/p>\n<p>Og selvf\u00f8lgelig har vi reduceret ops\u00e6tningstiden for servere fra flere dage til timer.<\/p>\n<p>Men p\u00e5 selve nyt\u00e5rsaften, da b\u00f8rnene gladeligt \u00e5bnede gaverne og de voksne stillede \u00f8nsker under klokkenes slag, migrerede vores ingeni\u00f8rer SAP-systemet til nye servere. Selv Julemanden ville sige, at de bedste mirakler er godt forberedte. <\/p>\n<p>P.S. Vores team m\u00f8der ofte, at kunderne \u00f8nsker at l\u00f8se opgaven med konfigurationstyring s\u00e5 enkelt som muligt. Ideelt set som ved et trylleslag \u2014 med \u00e9t v\u00e6rkt\u00f8j. Men i virkeligheden er alt mere komplekst (ja, igen er s\u00f8lvkuglerne ikke ankommet): vi m\u00e5 skabe en hel proces ved hj\u00e6lp af de v\u00e6rkt\u00f8jer, der er behagelige for kundens team.<\/p>\n<p><i>Forfatter: Sergey Artemov, afdelingens arkitekt <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/portal.jet.su\/about\/company\/structure\/?set_filter_structure=Y&amp;structure_UF_DEPARTMENT=56656\"><i>DevOps-l\u00f8sninger<\/i><\/a><\/noindex><i> \u00abInfosystemer Jet\u00bb<\/i><br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 om ops\u00e6tning af servere uden mirakler med Configuration Management | ProHoster","description":"\u00c5ret n\u00e6rmede sig nyt\u00e5r. B\u00f8rnene i hele landet havde allerede sendt breve til Julemanden eller \u00f8nsket sig gaver, og den vigtigste udbyder \u2014 en af de store detailhandlere \u2014 forberedte sig til salgets apoteose.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/90386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=90386"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/90386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/90387"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=90386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=90386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=90386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}