{"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 auf CentOS \u00fcber 18 Monate","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dies ist die Transkription des Vortrags auf <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 selbst entwickeltes Konfigurationsmanagementsystem verwendet wurde und warum der Wechsel zu 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 Nr. -XXX: Kurz vor dem Beginn<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" 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 vielen eigenst\u00e4ndigen Hosts, die von Hyper-V verwaltet wurden. Das Erstellen einer virtuellen Maschine erforderte viele Schritte: Festplatten an den richtigen Ort legen, DNS eintragen, DHCP reservieren, VM-Konfiguration in ein Git-Repository ablegen. Dieser Prozess war teilweise automatisiert, aber beispielsweise wurden die VMs manuell auf die Hosts verteilt. Aber die Entwickler konnten die VM-Konfiguration in Git \u00e4ndern und sie auf die VM anwenden, indem sie sie neu starteten.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Benutzerdefinierte L\u00f6sung f\u00fcr das Konfigurationsmanagement<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die urspr\u00fcngliche Idee, vermute ich, wurde als IaC (Infrastructure as Code) konzipiert: viele stateless VMs, die ihren Zustand beim Neustart zur\u00fccksetzten. Wie sah das Konfigurationsmanagement f\u00fcr VMs aus? Schemenhaft sieht es einfach aus:<\/p>\n<p><\/p>\n<ol>\n<li>F\u00fcr VMs wurde eine statische MAC-Adresse festgelegt.<\/li>\n<li>Eine ISO mit CoreOS und einem Bootlaufwerk wurde an die VM angeschlossen.<\/li>\n<li>CoreOS f\u00fchrt ein Anpassungsskript aus, das es basierend auf seiner IP von einem WEB-Server herunterl\u00e4dt.<\/li>\n<li>Das Skript l\u00e4dt die VM-Konfiguration \u00fcber SCP herunter, basierend auf der IP-Adresse.<\/li>\n<li>Eine Liste von systemd-Unit-Dateien und Bash-Skripten wird gestartet.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" 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>Die ISO in CoreOS war veraltet.<\/li>\n<li>Viele komplex automatisierte Schritte und Magie bei der Migration\/Erstellung von VMs.<\/li>\n<li>Schwierigkeiten beim Update und wenn eine bestimmte Softwareversion ben\u00f6tigt wird. Besonders hektisch mit Kernelmodulen.<\/li>\n<li>Die VMs waren nicht ganz datenlos, d.h. es gab VMs, die zus\u00e4tzlich eine mit Benutzerdaten montierte Festplatte hatten.<\/li>\n<li>St\u00e4ndig hatte jemand Probleme mit den Abh\u00e4ngigkeiten der systemd-Units, und beim Neustart hing CoreOS. Mit den vorhandenen Mitteln in CoreOS war es schwierig, das zu erfassen.<\/li>\n<li>Verwaltung von Geheimnissen.<\/li>\n<li>Es gab im Grunde kein CM. Es gab Bash und YML-Konfigurationen f\u00fcr CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>Um die VM-Konfiguration anzuwenden, muss sie neu gestartet werden, aber sie k\u00f6nnte sich weigern, neu zu starten. Das scheint ein offensichtliches Problem zu sein, aber es gibt keine persistenten Festplatten \u2013 es gibt keinen Ort, um Logs zu speichern. Nun gut, lassen Sie uns versuchen, Kernel-Boot-Optionen hinzuzuf\u00fcgen, um die Logs zu versenden. Aber es ist alles so kompliziert.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">Tag Nr. 0: Probleme erkennen<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das war eine gew\u00f6hnliche Entwicklungsinfrastruktur: Jenkins, Testumgebungen, Monitorings, Registry. CoreOS war f\u00fcr das Hosting von k8s-Clustern gedacht, d.h. das Problem lag darin, wie CoreOS verwendet wurde. Der erste Schritt war die Auswahl des Tech-Stacks. Wir entschieden uns f\u00fcr:<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> als Basis-Distro, da es am n\u00e4chsten an Produktionsumgebungen ist.<\/li>\n<li><strong>Ansible<\/strong> zur Konfigurationsverwaltung, da es dar\u00fcber umfangreiche Expertise gab.<\/li>\n<li><strong>Jenkins<\/strong> als Automatisierungsframework bestehender Prozesse, da es bereits aktiv f\u00fcr Entwicklungsprozesse verwendet wurde.<\/li>\n<li><strong>Hyper-V<\/strong> als Virtualisierungsplattform. Es gibt einige Gr\u00fcnde, die \u00fcber den Rahmen dieser Erz\u00e4hlung hinausgehen, aber kurz gesagt \u2014 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 \u2014 Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" 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 f\u00fcr 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 auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible erledigt diese Aufgabe hervorragend. Mit minimalem Aufwand k\u00f6nnen die Konfigurationen der VMs verwaltet werden:<\/p>\n<p><\/p>\n<ol>\n<li>Wir erstellen ein Git-Repository.<\/li>\n<li>Wir legen die Liste der VMs im Inventory ab, die Konfigurationen in Playbooks und Rollen.<\/li>\n<li>Wir richten einen speziellen Jenkins-Slave ein, von dem aus Ansible gestartet werden kann.<\/li>\n<li>Wir erstellen einen Job, konfigurieren Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Der erste Prozess ist fertig. Die 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 auf CentOS \u00fcber 18 Monate\" 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. Aus Linux war es nicht sehr einfach, VMs auf Hyper-V 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 startet das PowerShell-Skript.<\/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 beim Aktualisieren des DHCP-Leases ihren Hostnamen.<\/li>\n<li>Die eingebaute Integration von DDNS &amp; DHCP auf der Seite des Domain Controllers konfiguriert den DNS-Eintrag.<\/li>\n<li>Man kann die VMs ins Inventory aufnehmen und sie mit Ansible konfigurieren.<\/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 auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier haben wir nichts Neues erfunden \u2013 wir haben Packer verwendet.<\/p>\n<p><\/p>\n<ol>\n<li>Wir legen die Konfiguration von Packer und Kickstart ins Git-Repository.<\/li>\n<li>Wir richten einen speziellen Jenkins-Slave mit Hyper-V und Packer ein.<\/li>\n<li>Wir erstellen einen Job, konfigurieren Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>So funktioniert dieses Zusammenspiel:<\/p>\n<p><\/p>\n<ol>\n<li>Packer erstellt eine leere VM und mountet die ISO.<\/li>\n<li>Die VM bootet, Packer gibt dem Bootloader den Befehl, unsere Kickstart-Datei von Diskette oder http zu verwenden.<\/li>\n<li>Anaconda wird mit unserer Konfiguration gestartet, die grundlegende OS-Einstellungen werden vorgenommen.<\/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 die gleichen Rollen wie in 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: Den Vertrag umstrukturieren, ohne ihn zu brechen = Test ansible + Testkitchen.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es kann unzureichend sein, die Vereinbarungen im Code festzuhalten. Denn wenn du im Verlauf des Prozesses etwas \u00e4ndern m\u00f6chtest, k\u00f6nntest du etwas kaputtmachen. Daher kommt das Testen der Infrastruktur ins Spiel. Um das Wissen innerhalb des Teams zu synchronisieren, haben wir begonnen, Ansible-Rollen zu testen. Ich werde nicht weiter ins Detail gehen, 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: das 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 anf\u00e4ngt, Ansible zu testen, das Projekt innerhalb eines Jahres umstrukturieren kann, ohne den Verstand zu verlieren.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">Tag Nr. 130: Brauchen wir CentOS+ansible \u00fcberhaupt? Vielleicht openshift?<\/h3>\n<p><\/p>\n<p>Es ist wichtig zu verstehen, dass der Prozess der Einf\u00fchrung von Infrastruktur nicht der einzige war und es Nebenprojekte gab. Zum Beispiel gab es eine Anfrage f\u00fcr den Start unserer Anwendung in Openshift, was zu mehrw\u00f6chigen Untersuchungen f\u00fchrte. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Wir starten die Anwendung in Openshift und vergleichen sie mit dem bestehenden Werkzeug.<\/a><\/noindex> was den Umzug verz\u00f6gert hat. Am Ende stellte sich heraus, dass Openshift nicht alle Bed\u00fcrfnisse erf\u00fcllt, man ben\u00f6tigt echte Hardware oder zumindest die M\u00f6glichkeit, mit dem Kern zu experimentieren.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">Tag Nr. 170: Openshift ist nicht geeignet, 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 auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V ist nicht sehr benutzerfreundlich, SCVMM macht es nicht viel besser. Aber es gibt so etwas wie Windows Azure Pack, das eine Erweiterung von SCVMM ist und Azure imitiert. Tats\u00e4chlich sieht das Produkt jedoch vernachl\u00e4ssigt aus: die Dokumentation enth\u00e4lt nicht funktionierende Links und ist ziemlich sp\u00e4rlich. Im Rahmen der Untersuchung von Vereinfachungen unseres Clouds haben wir uns auch das angeschaut.<\/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 sehr gut. Wir bleiben bei SCVMM.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" 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 Komplexit\u00e4ten nicht in das System einzuf\u00fchren, um unn\u00f6tige Funktionen zu vermeiden, und wir blieben bei SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">Tag Nr. 360: Wir essen den Elefanten St\u00fcck f\u00fcr St\u00fcck.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migration der Konfiguration von 120 VMs von CoreOS auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Erst nach einem Jahr war die Plattform bereit, zu der wir umziehen konnten, und der Umzugsprozess begann. F\u00fcr diesen Zweck wurde eine S.M.A.R.T.-Aufgabe formuliert. Wir haben alle VMs aufgeschrieben und angefangen, sie eine nach der anderen durchzugehen, ihre Konfiguration in Ansible zu beschreiben und sie mit Tests abzudecken.<\/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 auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Der gesamte Prozess ist uninteressant. Er ist routiniert und es l\u00e4sst sich feststellen, dass die meisten Konfigurationen relativ einfach oder isomorph waren und nach dem Pareto-Prinzip 80 % der Konfigurationen 20 % der Zeit ben\u00f6tigten. Nach demselben Prinzip ben\u00f6tigten 80 % der Zeit die Vorbereitung des Umzugs 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 auf CentOS \u00fcber 18 Monate\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Was ist in 18 Monaten passiert?<\/p>\n<p><\/p>\n<ol>\n<li>Die Vereinbarungen sind zum Code geworden.<\/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 anf\u00e4ngt, Ansible zu testen, das Projekt innerhalb eines Jahres umstrukturieren kann, ohne den Verstand zu verlieren.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">Lehren aus dem Test von \u00fcber 200.000 Zeilen Infrastruktur-Code<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Lassen Sie uns zu Openshift bereitstellen<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">So testen Sie Ihre 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 Tests mit 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 5.0.1.1 - 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\/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) 5.0.1.1\" \/>\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.\" \/>\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 der Konfiguration von 120 VMs von CoreOS auf CentOS in 18 Monaten | ProHoster","description":"Das.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}