{"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\/es\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","title":{"rendered":"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Esta es una transcripci\u00f3n de la presentaci\u00f3n en <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/meetups#2331050\">DevopsConf 2019-10-01<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"http:\/\/spblug.org\/\">SPbLUG 2019-09-25<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Esta es la historia de un proyecto que utilizaba un sistema de gesti\u00f3n de configuraciones hecho a medida y por qu\u00e9 la migraci\u00f3n a Ansible se prolong\u00f3 durante 18 meses.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"den---hhh-before-the-beginning\">D\u00eda \u2116 -XXX: Antes de comenzar<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/22ebc514d85df93237e7f7d262a393a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Inicialmente, la infraestructura consist\u00eda en numerosos hosts independientes gestionados por Hyper-V. La creaci\u00f3n de una m\u00e1quina virtual requer\u00eda m\u00faltiples acciones: colocar los discos en el lugar correcto, configurar DNS, reservar DHCP, y almacenar la configuraci\u00f3n de la MV en un repositorio git. Este proceso estaba parcialmente automatizado, pero por ejemplo, las MV se distribu\u00edan entre los hosts manualmente. Sin embargo, los desarrolladores pod\u00edan modificar la configuraci\u00f3n de la MV en git y aplicarla reiniciando la MV.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Soluci\u00f3n de Gesti\u00f3n de Configuraciones Personalizada<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La idea inicial, sospecho, se pens\u00f3 como IaC: numerosas MV sin estado, que al reiniciarse restablec\u00edan su estado. \u00bfC\u00f3mo se ve\u00eda la gesti\u00f3n de configuraciones de las MV? Es esquem\u00e1ticamente simple:<\/p>\n<p><\/p>\n<ol>\n<li>Se asignaban direcciones MAC est\u00e1ticas a las MV.<\/li>\n<li>Se conectaba una ISO con CoreOS y un disco de arranque a la MV.<\/li>\n<li>CoreOS ejecuta un script de personalizaci\u00f3n descarg\u00e1ndolo de un servidor WEB en funci\u00f3n de su IP.<\/li>\n<li>El script extrae la configuraci\u00f3n de la MV a trav\u00e9s de SCP bas\u00e1ndose en la direcci\u00f3n IP.<\/li>\n<li>Se inicia una serie de archivos de unidad systemd y una serie de scripts bash.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/6baa343ddc2b8df8812f2ed282e5bc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Esta soluci\u00f3n ten\u00eda muchos problemas evidentes:<\/p>\n<p><\/p>\n<ol>\n<li>La ISO en CoreOS estaba en desuso.<\/li>\n<li>Una multitud de acciones y magia dif\u00edciles de automatizar al migrar\/crear MV.<\/li>\n<li>Dificultades con las actualizaciones y cuando se necesitaba un software de cierta versi\u00f3n. A\u00fan m\u00e1s complicado con los m\u00f3dulos del n\u00facleo.<\/li>\n<li>Las MV no estaban completamente vac\u00edas de datos, es decir, hab\u00eda MV que ten\u00edan un disco montado con datos del usuario adicionalmente.<\/li>\n<li>Constantemente hab\u00eda alguien que comet\u00eda errores con las dependencias de las unidades systemd, y al reiniciar, CoreOS se colgaba. Era problem\u00e1tico detectar esto con los medios disponibles en CoreOS.<\/li>\n<li>Gesti\u00f3n de secretos.<\/li>\n<li>No hab\u00eda una gesti\u00f3n de configuraciones, solo hab\u00eda bash y configuraciones YML de CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>Para aplicar la configuraci\u00f3n de la MV, era necesario reiniciarla, pero esta podr\u00eda no reiniciarse. Parec\u00eda un problema obvio, pero no hay discos persistentes, no hab\u00eda lugar para guardar los logs. Bueno, intentemos agregar opciones de arranque del n\u00facleo para enviar los logs. Pero no, todo es tan complicado.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">D\u00eda \u21160: Reconocimiento del problema<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Era una infraestructura de desarrollo com\u00fan: jenkins, entornos de prueba, monitoreos, registry. CoreOS estaba pensado para alojar cl\u00fasteres de k8s, es decir, el problema radicaba en c\u00f3mo se estaba utilizando CoreOS. El primer paso fue elegir la pila.<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> como distribuci\u00f3n base, ya que es la distribuci\u00f3n m\u00e1s cercana a los entornos de producci\u00f3n.<\/li>\n<li><strong>Ansible<\/strong> para la gesti\u00f3n de configuraciones, dado que hab\u00eda una amplia experiencia en ello.<\/li>\n<li><strong>Jenkins<\/strong> como un marco para la automatizaci\u00f3n de procesos existentes, ya que ya se utilizaba activamente para procesos de desarrollo.<\/li>\n<li><strong>Hyper-V<\/strong> como plataforma de virtualizaci\u00f3n. Hay varias razones, m\u00e1s all\u00e1 de lo que se puede contar, pero en resumen: no podemos utilizar la nube, debemos usar nuestro propio hardware.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-30-fiksiruem-suschestvuyuschie-dogovorennosti---agreements-as-code\">D\u00eda N\u00ba30: Formalizando los acuerdos existentes \u2014 Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/47a8cc980940b5080e195267d686df25.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cuando se entendi\u00f3 la pila, comenz\u00f3 la preparaci\u00f3n para la migraci\u00f3n. Formalizando los acuerdos existentes en forma de c\u00f3digo (<strong>Agreements as Code<\/strong>!). Transici\u00f3n <em>trabajo manual<\/em> -&gt; <em>mecanizaci\u00f3n<\/em> -&gt; <em>automatizaci\u00f3n<\/em>.<\/p>\n<p><\/p>\n<h4 id=\"1-configure-vms\">1. Configurar VMs<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible se desempe\u00f1a excelentemente en esta tarea. Con m\u00ednimas acciones, se puede gestionar las configuraciones de las VMs:<\/p>\n<p><\/p>\n<ol>\n<li>Creamos un repositorio git.<\/li>\n<li>Almacenamos la lista de VMs en el inventario, las configuraciones en playbooks y roles.<\/li>\n<li>Configuramos un slave de jenkins especial desde el que se podr\u00e1 ejecutar ansible.<\/li>\n<li>Creamos un job, configuramos Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>El primer proceso est\u00e1 listo. Los acuerdos est\u00e1n formalizados.<\/p>\n<p><\/p>\n<h4 id=\"2-create-new-vm\">2. Crear nueva VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/3f6a02b170e28fd34e8f5fa65d1606c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aqu\u00ed no era muy conveniente. Desde Linux no es muy f\u00e1cil crear VMs en Hyper-V. Uno de los intentos de mecanizar este proceso fue:<\/p>\n<p><\/p>\n<ol>\n<li>Ansible se conecta al host de Windows a trav\u00e9s de WinRM.<\/li>\n<li>Ansible ejecuta un script de PowerShell.<\/li>\n<li>El script de PowerShell crea una nueva VM.<\/li>\n<li>Con Hyper-V\/ScVMM, al crear una VM se configura el hostname en el sistema operativo invitado.<\/li>\n<li>La VM al actualizar el lease de DHCP env\u00eda su hostname.<\/li>\n<li>La integraci\u00f3n est\u00e1ndar de ddns &amp; dhcp en el controlador de dominio configura la entrada DNS.<\/li>\n<li>Se pueden a\u00f1adir VMs al inventario y configurarlas con Ansible.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"3-create-vm-template\">3. Crear plantilla de VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aqu\u00ed no se invent\u00f3 nada; utilizamos packer.<\/p>\n<p><\/p>\n<ol>\n<li>En el repositorio git almacenamos la configuraci\u00f3n de packer, kickstart.<\/li>\n<li>Configuramos un slave de jenkins especial con hyper-v y Packer.<\/li>\n<li>Creamos un job, configuramos Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>C\u00f3mo funciona esta conexi\u00f3n:<\/p>\n<p><\/p>\n<ol>\n<li>Packer crea una VM vac\u00eda, conecta el ISO.<\/li>\n<li>La VM arranca, Packer introduce en el cargador el comando para usar nuestro archivo kickstart desde un disquete o http.<\/li>\n<li>Se inicia anaconda con nuestra configuraci\u00f3n, se hace la configuraci\u00f3n inicial del sistema operativo.<\/li>\n<li>Packer espera la disponibilidad de la VM.<\/li>\n<li>Packer dentro de la VM ejecuta ansible en modo local.<\/li>\n<li>Ansible utiliza exactamente los mismos roles que en el paso n\u00ba 1.<\/li>\n<li>Packer exporta la plantilla de la VM.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-75-refaktorim-dogovorennosti-ne-lomaya--test-ansible--testkitchen\">D\u00eda n\u00ba 75: Refactorizamos los acuerdos sin romper = Prueba de ansible + Testkitchen<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fijar acuerdos en el c\u00f3digo puede no ser suficiente. A veces, si deseas cambiar algo durante el proceso, podr\u00edas romper algo. Por eso en la infraestructura tambi\u00e9n aparece la necesidad de probarla. Para sincronizar el conocimiento dentro del equipo, comenzamos a probar los roles de Ansible. No profundizar\u00e9, ya que hay un art\u00edculo que describe los eventos de ese momento. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Pruebame si puedes o sue\u00f1an los programadores de YML con probar ansible?<\/a><\/noindex>(spoiler: esta no fue la versi\u00f3n final y despu\u00e9s todo se volvi\u00f3 m\u00e1s complicado) <noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/ansible-testing-ru.html\">C\u00f3mo empezar a probar Ansible, refactorizar el proyecto en un a\u00f1o y no perder la cabeza.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">D\u00eda n\u00ba 130: \u00bfY si CentOS+ansible no es necesario? \u00bfQuiz\u00e1s openshift?<\/h3>\n<p><\/p>\n<p>Hay que entender que el proceso de incorporaci\u00f3n de infraestructura no fue el \u00fanico y hab\u00eda subproyectos paralelos. Por ejemplo, recibimos una solicitud para ejecutar nuestra aplicaci\u00f3n en openshift y esto result\u00f3 en investigaciones que tomaron m\u00e1s de una semana. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Ejecutamos la aplicaci\u00f3n en Openshift y comparamos las herramientas existentes.<\/a><\/noindex> \u00bfQu\u00e9 ralentiz\u00f3 el proceso de migraci\u00f3n? Al final, result\u00f3 que openshift no cubr\u00eda todas las necesidades; necesit\u00e1bamos hardware real, o al menos la posibilidad de jugar con el n\u00facleo.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">D\u00eda n\u00ba 170: Openshift no es adecuado, \u00bfnos arriesgamos con Windows Azure Pack?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V no es muy amigable, SCVMM no lo mejora mucho. Pero existe Windows Azure Pack, que es una capa sobre SCVMM y mimetiza Azure. Sin embargo, en realidad, el producto parece abandonado: la documentaci\u00f3n est\u00e1 llena de enlaces rotos y es bastante escasa. Pero como parte de la investigaci\u00f3n de opciones para simplificar la vida de nuestra nube, tambi\u00e9n lo consideramos.<\/p>\n<p><\/p>\n<h3 id=\"den-250-windows-azure-pack-ne-ochen-ostaemsya-na-scvmm\">D\u00eda n\u00ba 250: Windows Azure Pack no es muy bueno. Nos quedamos en SCVMM.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/8753b3da72adfb035d1a2f23ad28809b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Windows Azure Pack parec\u00eda prometedor, pero se decidi\u00f3 no introducir WAP con sus complicaciones en el sistema por caracter\u00edsticas innecesarias y nos quedamos en SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">D\u00eda n\u00ba 360: Comemos al elefante en partes.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Solo despu\u00e9s de un a\u00f1o la plataforma estaba lista para migrar y comenz\u00f3 el proceso de traslado. Para esto, se estableci\u00f3 una tarea S.M.A.R.T. Enumeramos todas las VMs y comenzamos a revisar una por una junto con su configuraci\u00f3n, descripciones en Ansible y pruebas.<\/p>\n<p><\/p>\n<h3 id=\"den-450-kakaya-sistema-poluchilas\">D\u00eda n\u00ba 450: \u00bfQu\u00e9 sistema se obtuvo?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El proceso en s\u00ed no es interesante. Es rutinario; se puede se\u00f1alar que la mayor\u00eda de las configuraciones eran relativamente simples o isom\u00f3rficas y, siguiendo el principio de Pareto, el 80% de las configuraciones requiri\u00f3 el 20% del tiempo. Del mismo modo, el 80% del tiempo se dedic\u00f3 a la preparaci\u00f3n de la mudanza y solo el 20% al propio traslado. <\/p>\n<p><\/p>\n<h2 id=\"den-540-final\">D\u00eda n\u00ba 540: Final<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migraci\u00f3n de la configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00bfQu\u00e9 ha pasado en 18 meses?<\/p>\n<p><\/p>\n<ol>\n<li>Los acuerdos se convirtieron en c\u00f3digo.<\/li>\n<li><em>Trabajo manual<\/em> -&gt; <em>Mecanizaci\u00f3n<\/em> -&gt; <em>Automatizaci\u00f3n<\/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\/\">Versi\u00f3n en ingl\u00e9s<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/coreos2centos-ru.html\">Publicaci\u00f3n cruzada desde el blog personal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.mail.ru\/public\/UDCZ\/WM4Y9Qv3j\">presentaciones<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500058\/\">C\u00f3mo empezar a probar Ansible, refactorizar el proyecto en un a\u00f1o y no perder la cabeza.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">Lecciones aprendidas de probar m\u00e1s de 200,000 l\u00edneas de c\u00f3digo de infraestructura<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Despleguemos en OpenShift<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">C\u00f3mo probar tu propia distribuci\u00f3n de OS<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Pru\u00e9bame si puedes. \u00bfSue\u00f1an los desarrolladores de YML con probar Ansible?<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fuente: <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.2 - 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\/es\/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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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: Migraci\u00f3n de configuraci\u00f3n de 120 VM de CoreOS a CentOS en 18 meses | ProHoster","description":"Esto.","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/80289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=80289"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/80289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/80290"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=80289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=80289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=80289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}