{"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\/de\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","title":{"rendered":"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dies ist die Abschrift des Vortrags bei <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/meetups#2331050\">DevopsConf 2019-10-01<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"http:\/\/spblug.org\/\">SPbLUG 2019-09-25<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Dies ist die Geschichte eines Projekts, in dem ein eigenes Konfigurationsmanagement-System verwendet wurde und warum der Umstieg auf Ansible sich \u00fcber 18 Monate hinzog.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"den---hhh-before-the-beginning\">Tag \u2116 -XXX: Vor Beginn<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/22ebc514d85df93237e7f7d262a393a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Urspr\u00fcnglich bestand die Infrastruktur aus einer Vielzahl von einzelnen Hosts, die von Hyper-V verwaltet wurden. Die Erstellung einer virtuellen Maschine erforderte viele Schritte: Festplatten an den richtigen Ort legen, DNS eintragen, DHCP reservieren und die VM-Konfiguration in ein Git-Repository einf\u00fcgen. Dieser Prozess war teilweise automatisiert, jedoch wurden beispielsweise die VMs manuell auf die Hosts verteilt. Entwickler konnten die VM-Konfiguration in Git anpassen und sie durch einen Neustart der VM anwenden.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Eingehendes Konfigurationsmanagement-L\u00f6sung<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ich vermute, die urspr\u00fcngliche Idee war als IaC gedacht: viele stateless VMs, die bei einem Neustart ihren Zustand zur\u00fccksetzten. Wie sah das Management von VM-Konfigurationen aus? Schemenhaft sieht es einfach aus:<\/p>\n<p><\/p>\n<ol>\n<li>F\u00fcr die VMs wurde eine statische MAC-Adresse vergeben.<\/li>\n<li>Eine ISO mit CoreOS und ein Bootlaufwerk wurden an die VMs angeschlossen.<\/li>\n<li>CoreOS startet ein Anpassungsskript, indem es dieses basierend auf seiner IP von einem WEB-Server herunterl\u00e4dt.<\/li>\n<li>Das Skript l\u00e4dt \u00fcber SCP die Konfiguration der VM basierend auf der IP-Adresse herunter.<\/li>\n<li>Es wird eine Reihe von systemd-Diensteinheiten und eine Reihe von Bash-Skripten gestartet.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/6baa343ddc2b8df8812f2ed282e5bc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Diese L\u00f6sung hatte viele offensichtliche Probleme:<\/p>\n<p><\/p>\n<ol>\n<li>ISO in CoreOS wurde als veraltet markiert.<\/li>\n<li>Viele schwer automatisierbare Aktionen und Magie bei der Migration\/Erstellung von VMs.<\/li>\n<li>Es gab Schwierigkeiten beim Update und wenn eine bestimmten Softwareversion ben\u00f6tigt wurde. Es wird noch komplizierter bei den Kernel-Modulen.<\/li>\n<li>Die VMs waren nicht so ganz ohne Daten, d.h. es erschienen VMs, bei denen eine Festplatte mit Benutzerdaten zus\u00e4tzlich gemountet war.<\/li>\n<li>St\u00e4ndig gab es Probleme mit den Abh\u00e4ngigkeiten der systemd-Diensteinheiten, und beim Neustart hing CoreOS. Mit den vorhandenen Mitteln in CoreOS war es schwierig, dies zu erkennen.<\/li>\n<li>Geheimnisverwaltung.<\/li>\n<li>Es gab quasi kein Configuration Management. Es gab Bash und YML-Konfigurationen f\u00fcr CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>Um die Konfiguration der VM anzuwenden, musste sie neu gestartet werden, aber sie konnte sich m\u00f6glicherweise nicht neu starten. Es scheint ein offensichtliches Problem zu sein, aber es gibt keine persistenten Festplatten \u2013 es gibt keinen Ort, um Logs zu speichern. Na gut, versuchen wir, Kernel-Startoptionen hinzuzuf\u00fcgen, um die Logs zu \u00fcbermitteln. Aber nein, das alles ist so kompliziert.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">Tag Nr. 0: Problemerkennung<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das war eine typische Entwicklungsinfrastruktur: Jenkins, Testumgebungen, Monitoring, Registry. CoreOS war f\u00fcr das Hosting von k8s-Clustern gedacht, das Problem lag also in der Nutzung von CoreOS. Der erste Schritt war die Auswahl des Stacks. Wir entschieden uns f\u00fcr:<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> als Basisdistribution, da sie der Produktionsumgebung am n\u00e4chsten kommt.<\/li>\n<li><strong>Ansible<\/strong> f\u00fcr das Management von Konfigurationen, da es umfangreiche Expertise in diesem Bereich gab.<\/li>\n<li><strong>Jenkins<\/strong> als Framework zur Automatisierung bestehender Prozesse, da es bereits aktiv f\u00fcr Entwicklungsprozesse verwendet wurde.<\/li>\n<li><strong>Hyper-V<\/strong> als Virtualisierungsplattform. Es gibt eine Reihe von Gr\u00fcnden, die \u00fcber den Rahmen dieser Erz\u00e4hlung hinausgehen, aber kurz gesagt \u2013 wir k\u00f6nnen keine Cloud nutzen, wir m\u00fcssen unsere eigene Hardware verwenden.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-30-fiksiruem-suschestvuyuschie-dogovorennosti---agreements-as-code\">Tag Nr. 30: Festlegung bestehender Vereinbarungen \u2013 Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/47a8cc980940b5080e195267d686df25.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Als der Stack klar war, begann die Vorbereitung auf den Umzug. Die Festlegung bestehender Vereinbarungen in Form von Code (<strong>Agreements as Code<\/strong>!). Der \u00dcbergang <em>manuelle Arbeit<\/em> -&gt; <em>Mechanisierung<\/em> -&gt; <em>Automatisierung<\/em>.<\/p>\n<p><\/p>\n<h4 id=\"1-configure-vms\">1. VMs konfigurieren<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible \u00fcbernimmt diese Aufgabe hervorragend. Mit minimalem Aufwand k\u00f6nnen die VM-Konfigurationen verwaltet werden:<\/p>\n<p><\/p>\n<ol>\n<li>Erstellen eines Git-Repositorys.<\/li>\n<li>Die Liste der VMs im Inventory ablegen, Konfigurationen in Playbooks und Rollen organisieren.<\/li>\n<li>Wir richten einen speziellen Jenkins-Slave ein, von dem aus Ansible gestartet werden kann.<\/li>\n<li>Wir erstellen einen Job und konfigurieren Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Der erste Prozess ist abgeschlossen. Vereinbarungen sind festgehalten.<\/p>\n<p><\/p>\n<h4 id=\"2-create-new-vm\">2. Neue VM erstellen<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/3f6a02b170e28fd34e8f5fa65d1606c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier war es nicht sehr bequem. Es war schwierig, eine VM auf Hyper-V aus Linux zu erstellen. Ein Versuch, diesen Prozess zu automatisieren, war:<\/p>\n<p><\/p>\n<ol>\n<li>Ansible verbindet sich \u00fcber WinRM mit dem Windows-Host.<\/li>\n<li>Ansible f\u00fchrt ein PowerShell-Skript aus.<\/li>\n<li>Das PowerShell-Skript erstellt eine neue VM.<\/li>\n<li>Mit Hyper-V\/ScVMM wird beim Erstellen der VM im Gastbetriebssystem der Hostname konfiguriert.<\/li>\n<li>Die VM sendet ihren Hostname bei der DHCP-Lease-Aktualisierung.<\/li>\n<li>Die Standardintegration von DDNS &amp; DHCP auf der Seite des Dom\u00e4nencontrollers konfiguriert den DNS-Eintrag.<\/li>\n<li>VMs k\u00f6nnen im Inventar hinzugef\u00fcgt und mit Ansible konfiguriert werden.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"3-create-vm-template\">3. VM-Vorlage erstellen<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier haben wir nichts erfunden \u2013 wir haben Packer verwendet.<\/p>\n<p><\/p>\n<ol>\n<li>Wir speichern die Packer-Konfiguration und Kickstart im Git-Repository.<\/li>\n<li>Wir richten einen speziellen Jenkins-Slave mit Hyper-V und Packer ein.<\/li>\n<li>Wir erstellen einen Job und konfigurieren Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>So funktioniert dieses Setup:<\/p>\n<p><\/p>\n<ol>\n<li>Packer erstellt eine leere VM und bindet das ISO ein.<\/li>\n<li>Die VM wird gestartet, Packer gibt dem Bootloader den Befehl, unser Kickstart-Datei von Diskette oder HTTP zu verwenden.<\/li>\n<li>Anaconda wird mit unserer Konfiguration gestartet, die grundlegende OS-Konfiguration wird durchgef\u00fchrt.<\/li>\n<li>Packer wartet auf die Verf\u00fcgbarkeit der VM.<\/li>\n<li>Packer startet Ansible im lokalen Modus innerhalb der VM.<\/li>\n<li>Ansible verwendet genau dieselben Rollen wie im Schritt Nr. 1.<\/li>\n<li>Packer exportiert die VM-Vorlage.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-75-refaktorim-dogovorennosti-ne-lomaya--test-ansible--testkitchen\">Tag Nr. 75: Refactoring der Vereinbarungen ohne Br\u00fcche = Test ansible + Testkitchen<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Festlegung von Vereinbarungen im Code k\u00f6nnte nicht ausreichend sein. Wenn du im laufenden Prozess etwas \u00e4ndern m\u00f6chtest, k\u00f6nntest du etwas kaputt machen. Deshalb wird in der Infrastruktur das Testen dieser gleichen Infrastruktur eingef\u00fchrt. Um das Wissen innerhalb des Teams zu synchronisieren, haben wir begonnen, Ansible-Rollen zu testen. Ich werde nicht n\u00e4her darauf eingehen, da es einen Artikel gibt, der die Ereignisse zu diesem Zeitpunkt beschreibt. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Teste mich, wenn du kannst, oder tr\u00e4umen YML-Programmierer von Ansible-Tests?<\/a><\/noindex>(Spoiler: Es war nicht die endg\u00fcltige Version, und sp\u00e4ter wurde alles komplizierter.) <noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/ansible-testing-ru.html\">Wie man Ansible testet, ein Projekt in einem Jahr refakturiert und nicht den Verstand verliert<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">Tag Nr. 130: Brauchen wir vielleicht CentOS + Ansible? Vielleicht OpenShift?<\/h3>\n<p><\/p>\n<p>Es ist wichtig zu verstehen, dass der Prozess der Einf\u00fchrung der Infrastruktur nicht der einzige war und es Nebenprojekte gab. Zum Beispiel gab es eine Anfrage, unsere Anwendung in OpenShift zu starten, was in mehrw\u00f6chige Recherchen m\u00fcndete. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Wir starten die Anwendung in OpenShift und vergleichen die vorhandenen Werkzeuge.<\/a><\/noindex> Was den Umzugsprozess verz\u00f6gert hat. Am Ende stellte sich heraus, dass OpenShift nicht alle Bed\u00fcrfnisse abdeckt; es wird tats\u00e4chliche Hardware oder zumindest die M\u00f6glichkeit ben\u00f6tigt, mit dem Kernel zu experimentieren.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">Tag Nr. 170: Openshift ist ungeeignet, wagen wir es mit Windows Azure Pack?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V ist nicht besonders benutzerfreundlich, SCVMM verbessert es nicht wesentlich. Aber es gibt diese Sache namens Windows Azure Pack, das eine Erweiterung von SCVMM ist und sich wie Azure tarnt. In Wirklichkeit wirkt das Produkt jedoch vernachl\u00e4ssigt: die Dokumentation hat defekte Links und ist ziemlich mager. Im Rahmen der Pr\u00fcfung von Optionen zur Vereinfachung unseres Cloud-Lebens haben wir auch einen Blick darauf geworfen.<\/p>\n<p><\/p>\n<h3 id=\"den-250-windows-azure-pack-ne-ochen-ostaemsya-na-scvmm\">Tag Nr. 250: Windows Azure Pack ist nicht besonders. Wir bleiben bei SCVMM.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/8753b3da72adfb035d1a2f23ad28809b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Windows Azure Pack sah vielversprechend aus, aber es wurde beschlossen, WAP mit seinen Schwierigkeiten nicht in das System zu integrieren, um unn\u00f6tige Features zu vermeiden, und wir bleiben bei SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">Tag Nr. 360: Wir essen den Elefanten in Portionen.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Erst ein Jahr sp\u00e4ter war die Plattform bereit, auf die wir umziehen konnten, und der Migrationsprozess begann. Daf\u00fcr wurde eine S.M.A.R.T.-Aufgabe gesetzt. Wir haben alle VMs aufgelistet und sind nacheinander die Konfiguration durchgegangen, haben sie in Ansible dokumentiert und Tests abgedeckt.<\/p>\n<p><\/p>\n<h3 id=\"den-450-kakaya-sistema-poluchilas\">Tag Nr. 450: Was f\u00fcr ein System ist entstanden?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Der Prozess selbst ist nicht interessant. Er ist routinem\u00e4\u00dfig und man kann feststellen, dass die meisten Konfigurationen relativ einfach oder isomorph waren. Nach dem Pareto-Prinzip ben\u00f6tigten 80% der Konfigurationen 20% der Zeit. Ebenso gingen 80% der Zeit f\u00fcr die Vorbereitung des Umzugs drauf, und nur 20% f\u00fcr den Umzug selbst. <\/p>\n<p><\/p>\n<h2 id=\"den-540-final\">Tag Nr. 540: Finale<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS nach CentOS in 18 Monaten\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was ist in den 18 Monaten passiert?<\/p>\n<p><\/p>\n<ol>\n<li>Die Vereinbarungen wurden zum Code.<\/li>\n<li><em>Manuelle Arbeit<\/em> -&gt; <em>Mechanisierung<\/em> -&gt; <em>Automatisierung<\/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\/\">Englische Version<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/coreos2centos-ru.html\">Cross-Post aus dem pers\u00f6nlichen 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\/\">Wie man Ansible testet, ein Projekt in einem Jahr refakturiert und nicht den Verstand verliert<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">Lektionen aus dem Testen von \u00fcber 200.000 Zeilen Infrastruktur-Code<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Lass uns zu OpenShift deployen<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">So testest du deine eigene OS-Distribution<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Teste mich, wenn du kannst. Tr\u00e4umen YML-Entwickler von der Testung von Ansible?<\/a><\/noindex><\/li>\n<\/ul>\n<p>Quelle: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/de\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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: Migration von 120 VMs mit CoreOS auf CentOS in 18 Monaten | ProHoster","description":"Dies ist eine Abschrift des Vortrags auf der DevOpsConf am 01.10.2019 und SPbLUG am 25.09.2019. Dies ist die Geschichte eines Projekts, das ein selbstgeschriebenes Konfigurationsmanagement-System verwendete und warum der Umzug zu Ansible sich \u00fcber 18 Monate hinzog. Tag Nr. -XXX: Vor dem Beginn. Urspr\u00fcnglich bestand die Infrastruktur aus einer Vielzahl von isolierten Hosts, die von Hyper-V verwaltet wurden. Die Erstellung einer virtuellen Maschine erforderte viele Schritte: die Festplatten an den richtigen Ort zu legen.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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 \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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/80289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=80289"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/80289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/80290"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=80289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=80289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=80289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}