{"id":80289,"date":"2020-05-05T01:42:36","date_gmt":"2020-05-04T23:42:36","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev"},"modified":"2020-05-05T01:42:36","modified_gmt":"2020-05-04T23:42:36","slug":"ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","title":{"rendered":"Ansible: Migratie van de configuratie van 120 VM's van CoreOS naar CentOS in 18 maanden","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dit is een transcriptie van de presentatie op <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/meetups#2331050\">DevopsConf 2019-10-01<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"http:\/\/spblug.org\/\">SPbLUG 2019-09-25<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Dit is het verhaal van een project waarbij een zelfgebouwd configuratiemanagementsysteem werd gebruikt en waarom de overstap naar Ansible 18 maanden in beslag nam.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"den---hhh-before-the-beginning\">Dag \u2116 -XXX: Voor het begin<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/22ebc514d85df93237e7f7d262a393a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oorspronkelijk was de infrastructuur opgebouwd uit een aantal afzonderlijke hosts die werden beheerd door Hyper-V. Het cre\u00ebren van een virtuele machine vereiste veel stappen: schijven op de juiste plaats leggen, DNS registreren, DHCP reserveren, de VM-configuratie in een git-repository plaatsen. Dit proces was gedeeltelijk geautomatiseerd, maar bijvoorbeeld de VM's werden handmatig tussen hosts verdeeld. Ontwikkelaars konden echter de VM-configuratie in git aanpassen en deze toepassen door de VM opnieuw op te starten.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Aangepaste oplossing voor configuratiemanagement<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ik vermoed dat het oorspronkelijke idee bedoeld was als IaC: veel stateless VM's die hun status bij een herstart opnieuw instelden. Wat hield het configuratiemanagement van de VM's in? Schema's zagen er eenvoudig uit:<\/p>\n<p><\/p>\n<ol>\n<li>Voor de VM's werd een statisch MAC-adres toegewezen.<\/li>\n<li>Er werd een ISO met CoreOS op de VM's aangesloten en een opstartschijf.<\/li>\n<li>CoreOS start een aanpassingsscript door deze te downloaden van een WEB-server op basis van zijn IP.<\/li>\n<li>Het script downloadt via SCP de configuratie van de VM op basis van het IP-adres.<\/li>\n<li>Een reeks systemd eenheidsbestanden en een reeks bash-scripts worden gestart.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/6baa343ddc2b8df8812f2ed282e5bc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Deze oplossing had veel voor de hand liggende problemen:<\/p>\n<p><\/p>\n<ol>\n<li>ISO in CoreOS was deprecated.<\/li>\n<li>Een groot aantal moeilijk te automatiseren acties en magie bij de migratie\/creatie van VM's.<\/li>\n<li>Moeilijkheden met updates en wanneer een bepaald versie van de software nodig was. Het werd nog lastiger met kernelmodules.<\/li>\n<li>De VM's bleken niet helemaal stateless te zijn, dat wil zeggen, er verschenen VM's met een gemonteerd schijf voor gebruikersdata.<\/li>\n<li>Er was altijd wel iemand die problemen had met de afhankelijkheden van de systemd-eenheid, en bij het opnieuw opstarten hing CoreOS. Het was problematisch om dit met de bestaande middelen in CoreOS op te sporen.<\/li>\n<li>Secret management.<\/li>\n<li>Er was praktisch geen CM. Er waren bash- en YML-configuraties van CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>Om de configuratie van de VM toe te passen, moest deze opnieuw worden opgestart, maar soms startte deze niet opnieuw op. Het lijkt een voor de hand liggend probleem, maar er zijn geen persistente schijven \u2014 er is geen plek om logs op te slaan. Ok\u00e9, laten we proberen opties voor de opstartkernel toe te voegen zodat de logs worden verzonden. Maar nee, het is allemaal zo ingewikkeld.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">Dag \u21160: Probleemherkenning<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dit was een typische ontwikkelingsinfrastructuur: Jenkins, testomgevingen, monitoring, registry. CoreOS was bedoeld voor het hosten van k8s-clusters, dus het probleem lag in hoe CoreOS werd gebruikt. De eerste stap was het kiezen van de stack. We kozen voor:<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> als basisdistributie, aangezien dit de dichtstbijzijnde distributie is voor productieomgevingen.<\/li>\n<li><strong>Ansible<\/strong> voor configuratiebeheer, aangezien er uitgebreide expertise op dit gebied was.<\/li>\n<li><strong>Jenkins<\/strong> als een kader voor het automatiseren van bestaande processen, aangezien het al actief werd gebruikt voor ontwikkelingsprocessen.<\/li>\n<li><strong>Hyper-V<\/strong> als platform voor virtualisatie. Er zijn een aantal redenen waarom dit het geval is, maar in het kort \u2014 we kunnen geen cloudgebruik maken, we moeten onze eigen hardware gebruiken.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-30-fiksiruem-suschestvuyuschie-dogovorennosti---agreements-as-code\">Dag \u211630: Vaste afspraken vastleggen \u2014 Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/47a8cc980940b5080e195267d686df25.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toen de stack duidelijk was, begonnen we met de voorbereiding voor de verhuizing. Het vastleggen van bestaande afspraken in de vorm van code (<strong>Agreements as Code<\/strong>!). Overgang <em>handmatig werk<\/em> -&gt; <em>mechanisatie<\/em> -&gt; <em>die het mogelijk maakt om veel sneller nieuwe functionaliteit te testen, in te zetten en aan gebruikers te leveren. Bijvoorbeeld, in al onze projecten wordt bij elke commit automatisch een CI-pijplijn aangemaakt. Hierin wordt een beeld opgebouwd, getest, uitgerold in verschillende Kubernetes-omgevingen voor debugging en resterende controles, en als alles goed is \u2014 komen de wijzigingen bij de eindgebruiker aan. En dit is al lang geen rocket science meer, maar dagelijkse kost voor velen \u2014 waarschijnlijk ook voor u, aangezien u dit artikel leest.<\/em>.<\/p>\n<p><\/p>\n<h4 id=\"1-configure-vms\">1. Configureer VMs<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible doet deze taak uitstekend. Met minimaal gedoe kun je de configuraties van VMs onder controle krijgen:<\/p>\n<p><\/p>\n<ol>\n<li>We maken een git-repository aan.<\/li>\n<li>We plaatsen de lijst van VMs in de inventory, configuraties in playbooks en rollen.<\/li>\n<li>We zetten een speciale Jenkins-slaaf op van waaruit we Ansible kunnen uitvoeren.<\/li>\n<li>We maken een job en configureren Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Het eerste proces is klaar. Afspraken zijn vastgelegd.<\/p>\n<p><\/p>\n<h4 id=\"2-create-new-vm\">2. Maak nieuwe VM aan<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/3f6a02b170e28fd34e8f5fa65d1606c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier was het niet erg handig. Vanuit Linux was het moeilijk om VMs op Hyper-V aan te maken. Een van de pogingen om dit proces te mechaniseren was:<\/p>\n<p><\/p>\n<ol>\n<li>Ansible maakt verbinding met de Windows-host via WinRM.<\/li>\n<li>Ansible voert een PowerShell-script uit.<\/li>\n<li>Het PowerShell-script maakt een nieuwe VM aan.<\/li>\n<li>Met Hyper-V\/ScVMM wordt bij het aanmaken van de VM in het gastOS de hostname ingesteld.<\/li>\n<li>De VM stuurt haar hostname bij het vernieuwen van de DHCP-lease.<\/li>\n<li>De standaardintegratie van ddns &amp; DHCP aan de kant van de Domain Controller stelt de DNS-records in.<\/li>\n<li>VMs kunnen aan de inventory worden toegevoegd en Ansible kan worden geconfigureerd.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"3-create-vm-template\">3. Maak VM-template aan<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier hebben we niets uitgevonden \u2014 we hebben Packer gebruikt.<\/p>\n<p><\/p>\n<ol>\n<li>We plaatsen de Packer-configuratie en kickstart in de git-repository.<\/li>\n<li>We zetten een speciale Jenkins-slaaf met Hyper-V en Packer op.<\/li>\n<li>We maken een job en configureren Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Hoe deze combinatie werkt:<\/p>\n<p><\/p>\n<ol>\n<li>Packer maakt een lege VM aan en koppelt een ISO.<\/li>\n<li>De VM wordt opgestart, Packer voert het commando uit om ons kickstart-bestand van een floppy of http te gebruiken.<\/li>\n<li>Anaconda wordt gestart met onze configuratie, de initi\u00eble OS-configuratie wordt uitgevoerd.<\/li>\n<li>Packer wacht tot de VM beschikbaar is.<\/li>\n<li>Packer start Ansible in lokale modus binnen de VM.<\/li>\n<li>Ansible werkt met precies dezelfde rollen als in stap \u21161.<\/li>\n<li>Packer exporteert de VM-sjabloon.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-75-refaktorim-dogovorennosti-ne-lomaya--test-ansible--testkitchen\">Dag \u211675: Refactoren van afspraken zonder te breken = Test Ansible + Testkitchen.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Afspraken in de code vastleggen kan onvoldoende zijn. Als je in het proces iets wilt veranderen, kun je iets breken. Daarom komt er bij infrastructuur ook testen van deze infrastructuur kijken. Om de kennis binnen het team te synchroniseren, zijn we Ansible-rollen gaan testen. Ik ga niet dieper ingaan op dit onderwerp, omdat er een artikel is dat de gebeurtenissen van dat moment beschrijft. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Test mij als je kunt, of dromen YML-programmeurs van het testen van Ansible?<\/a><\/noindex>(spoiler: dit was niet de definitieve versie en later werd alles ingewikkelder. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/ansible-testing-ru.html\">Hoe te beginnen met het testen van Ansible, een project refactoren in een jaar en niet gek te worden.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">Dag \u2116130: Heeft CentOS+Ansible misschien geen zin? Misschien OpenShift?<\/h3>\n<p><\/p>\n<p>Je moet begrijpen dat het proces van het inbrengen van infrastructuur niet de enige was en er was een onderliggend subproject. Bijvoorbeeld, er kwam een verzoek om onze applicatie in OpenShift te starten en dat resulteerde in onderzoek dat meer dan een week duurde. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">We starten de applicatie in OpenShift en vergelijken met de bestaande tools.<\/a><\/noindex> Wat het proces van de verhuizing vertraagde. De uitkomst was dat OpenShift niet aan alle behoeften voldeed; er was echt hardware nodig of op zijn minst de mogelijkheid om te spelen met de kernel.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">Dag \u2116170: OpenShift is niet geschikt, durven we het met Windows Azure Pack?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V is niet erg gebruiksvriendelijk, SCVMM maakt het niet veel beter. Maar er is zo'n ding als Windows Azure Pack, dat een bovenlaag vormt op SCVMM en zich voordoet als Azure. Maar in werkelijkheid lijkt het product verwaarloosd: documentatie met dode links en vrij schaars. Maar in het kader van het onderzoeken van manieren om ons cloud leven te vereenvoudigen, hebben we er ook naar gekeken.<\/p>\n<p><\/p>\n<h3 id=\"den-250-windows-azure-pack-ne-ochen-ostaemsya-na-scvmm\">Dag \u2116250: Windows Azure Pack is niet zo geweldig. We blijven bij SCVMM.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/8753b3da72adfb035d1a2f23ad28809b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Windows Azure Pack zag er veelbelovend uit, maar er werd besloten om WAP met zijn complicaties niet in het systeem te introduceren voor onnodige functies en we bleven bij SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">Dag \u2116360: We eten de olifant in stukken.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pas na een jaar was het platform klaar waar we naartoe konden verhuizen en begon het verhuisproces. Hiervoor werd er een S.M.A.R.T. doelstelling opgesteld. We hebben alle VM's opgeschreven en zijn ze \u00e9\u00e9n voor \u00e9\u00e9n gaan onderzoeken, ze beschrijven in Ansible en van tests voorzien.<\/p>\n<p><\/p>\n<h3 id=\"den-450-kakaya-sistema-poluchilas\">Dag \u2116450: Wat voor systeem is er ontstaan?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Het proces zelf is niet interessant. Het is routinematig; het valt op dat de meeste configuraties relatief eenvoudig of isomorf waren, en volgens het Pareto-principe kostten 80% van de configuraties 20% van de tijd. Op dezelfde manier ging 80% van de tijd verloren aan de voorbereiding van de verhuizing en slechts 20% aan de verhuizing zelf. <\/p>\n<p><\/p>\n<h2 id=\"den-540-final\">Dag \u2116540: Finale<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migratie van de configuratie van 120 VM&#039;s van CoreOS naar CentOS in 18 maanden\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wat is er gebeurd in 18 maanden?<\/p>\n<p><\/p>\n<ol>\n<li>De afspraken zijn codificaties geworden.<\/li>\n<li><em>Handmatige arbeid<\/em> -&gt; <em>Mechanisatie<\/em> -&gt; <em>Automatisering<\/em>.<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"links\">Links<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500350\/\">Engelse versie<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/coreos2centos-ru.html\">Cross-post uit mijn persoonlijke blog<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.mail.ru\/public\/UDCZ\/WM4Y9Qv3j\">slides<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500058\/\">Hoe te beginnen met het testen van Ansible, een project refactoren in een jaar en niet gek te worden.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">Lessen geleerd van het testen van meer dan 200.000 lijnen infrastructuurcode<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Laten we implementeren op OpenShift<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">Hoe je je eigen besturingssysteemdistributie test<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Test me als je kunt. Dromen YML-ontwikkelaars van het testen van Ansible?<\/a><\/noindex><\/li>\n<\/ul>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500040\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 DevopsConf 2019-10-01 \u0438 SPbLUG 2019-09-25. \u042d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u043d\u0430 Ansible \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u0441\u044f \u043d\u0430 18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432. \u0414\u0435\u043d\u044c \u2116 -\u0425\u0425\u0425: Before the beginning \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u0441\u043e\u0431\u043e\u0439 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Hyper-V. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439: \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0434\u0438\u0441\u043a\u0438 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80290,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80289","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=\"\u042d\u0442\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Ansible: \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 120 VM c CoreOS \u043d\u0430 CentOS \u0437\u0430 18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev\" \/>\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-05-04T23:42:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-04T23:42:36+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\udd47Ansible: Migratie van configuratie van 120 VM's van CoreOS naar CentOS in 18 maanden | ProHoster","description":"Dit.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Ansible: \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 120 VM c CoreOS \u043d\u0430 CentOS \u0437\u0430 18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 | ProHoster","og:description":"\u042d\u0442\u043e.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","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-05-04T23:42:36+00:00","article:modified_time":"2020-05-04T23:42:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80289","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 16:21:22","updated":"2022-09-30 18:16:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/80289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=80289"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/80289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/80290"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=80289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=80289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=80289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}