{"id":90386,"date":"2020-07-31T13:42:20","date_gmt":"2020-07-31T11:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management"},"modified":"2020-07-31T13:42:20","modified_gmt":"2020-07-31T11:42:20","slug":"triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","title":{"rendered":"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se acercaba el A\u00f1o Nuevo. Los ni\u00f1os de todo el pa\u00eds ya hab\u00edan enviado cartas a Pap\u00e1 Noel o se hab\u00edan pedido regalos, y el principal ejecutor \u2014 uno de los grandes minoristas \u2014 se preparaba para el apogeo de las ventas. En diciembre, la carga en su centro de datos se multiplica por varias veces. Por lo tanto, la empresa decidi\u00f3 modernizar el centro de datos y poner en funcionamiento varias docenas de nuevos servidores para reemplazar el equipo cuyo tiempo de vida hab\u00eda terminado. As\u00ed termina la introducci\u00f3n en medio de los copos de nieve, y comienza el thriller. <\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/ebc2128d73e9a0e7f1e383b4b04ee492.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEl equipo lleg\u00f3 al sitio varios meses antes del pico de ventas. El servicio de operaciones, por supuesto, sabe c\u00f3mo y qu\u00e9 ajustar en los servidores para ponerlos en el entorno de producci\u00f3n. Pero necesit\u00e1bamos automatizar esto y eliminar el factor humano. Adem\u00e1s, los servidores reemplazaban un conjunto de sistemas SAP, cr\u00edticamente importantes para la empresa, antes de la migraci\u00f3n. <\/p>\n<p>La puesta en funcionamiento de los nuevos servidores estaba estrictamente ligada a un plazo. Y moverlo significaba poner en peligro tanto la entrega de mil millones de regalos como la migraci\u00f3n de los sistemas. Ni siquiera el equipo del propio Pap\u00e1 Noel, Santa Claus, podr\u00eda cambiar la fecha \u2014 la migraci\u00f3n del sistema SAP para la gesti\u00f3n del almac\u00e9n solo se puede hacer una vez al a\u00f1o. Desde el 31 de diciembre al 1 de enero, enormes almacenes del minorista, sumando el tama\u00f1o de 20 campos de f\u00fatbol, detienen su trabajo durante 15 horas. Y ese es el \u00fanico intervalo de tiempo para trasladar el sistema. No ten\u00edamos margen de error en la puesta en marcha de los servidores. <\/p>\n<p>Aclaro de inmediato: mi relato refleja las herramientas y procesos de gesti\u00f3n de configuraciones que utiliza nuestro equipo.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEl sistema de gesti\u00f3n de configuraciones consta de varios niveles. El componente clave es el sistema CMS. En un entorno industrial, la falta de uno de los niveles inevitablemente llevar\u00eda a sorpresas desagradables.<\/p>\n<h1>Gesti\u00f3n de la instalaci\u00f3n del sistema operativo<\/h1>\n<p>\nEl primer nivel es el sistema de gesti\u00f3n de la instalaci\u00f3n de sistemas operativos en servidores f\u00edsicos y virtuales. Crea configuraciones b\u00e1sicas del sistema operativo, eliminando el factor humano. <\/p>\n<p>Con este sistema, logramos obtener instancias est\u00e1ndar y listas para una futura automatizaci\u00f3n de servidores con sistema operativo. Durante el \"despliegue\", recibieron un conjunto m\u00ednimo de usuarios locales y claves p\u00fablicas SSH, as\u00ed como una configuraci\u00f3n coherente del sistema operativo. Pod\u00edamos gestionar los servidores a trav\u00e9s de CMS de manera garantizada y est\u00e1bamos seguros de que, en el nivel del sistema operativo, no hab\u00eda sorpresas. <\/p>\n<p>La tarea 'm\u00e1xima' para el sistema de gesti\u00f3n de instalaci\u00f3n es configurar autom\u00e1ticamente los servidores desde el nivel BIOS\/Firmware hasta el sistema operativo. Mucho depende aqu\u00ed del hardware y de las tareas de configuraci\u00f3n. Para hardware heterog\u00e9neo, se puede considerar <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dmtf.org\/standards\/redfish\">REDFISH API<\/a><\/noindex>. Si todo el 'hardware' proviene de un mismo proveedor, a menudo es m\u00e1s conveniente utilizar herramientas de gesti\u00f3n listas (por ejemplo, HP ILO Amplifier, DELL OpenManage, etc.).<\/p>\n<p>Para la instalaci\u00f3n del sistema operativo en servidores f\u00edsicos, utilizamos el bien conocido Cobbler, que tiene un conjunto de perfiles de instalaci\u00f3n acordados con el servicio de explotaci\u00f3n. Al a\u00f1adir un nuevo servidor a la infraestructura, el ingeniero vinculaba la direcci\u00f3n MAC del servidor al perfil requerido en Cobbler. Al primer arranque por red, el servidor obten\u00eda una direcci\u00f3n temporal y un sistema operativo actualizado. Luego se trasladaba a la VLAN\/ direccionamiento IP objetivo y continuaba operando all\u00ed. S\u00ed, cambiar la VLAN ocupa tiempo y requiere coordinaci\u00f3n, pero proporciona una protecci\u00f3n adicional contra la instalaci\u00f3n accidental del servidor en un entorno de producci\u00f3n.<\/p>\n<p>Creamos servidores virtuales basados en plantillas preparadas con HashiCorp Packer. La raz\u00f3n era la misma: prevenir posibles errores humanos durante la instalaci\u00f3n del sistema operativo. Pero, a diferencia de los servidores f\u00edsicos, Packer permite no utilizar PXE, arranque por red y cambio de VLAN. Esto facilit\u00f3 y simplific\u00f3 la creaci\u00f3n de servidores virtuales. <\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/8cde23a4ad2ba1573bc88ec174bfe6b5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1. Gesti\u00f3n de la instalaci\u00f3n de sistemas operativos.<\/i><\/p>\n<h1>Gesti\u00f3n de secretos<\/h1>\n<p>\nCualquier sistema de gesti\u00f3n de configuraciones contiene datos que deben estar ocultos de los usuarios regulares, pero son necesarios para la preparaci\u00f3n de los sistemas. Son contrase\u00f1as de usuarios locales y cuentas de servicio, claves de certificados, diversos API Tokens, etc. Normalmente se les llama \"secretos\".<\/p>\n<p>Si desde el principio no se determina d\u00f3nde y c\u00f3mo almacenar estos secretos, dependiendo de la rigurosidad de los requisitos de seguridad de la informaci\u00f3n, es probable que se utilicen tales m\u00e9todos de almacenamiento:<\/p>\n<ul>\n<li>directamente en el c\u00f3digo de gesti\u00f3n de configuraci\u00f3n o en archivos del repositorio;<\/li>\n<li>en herramientas especializadas de gesti\u00f3n de configuraciones (por ejemplo, Ansible Vault);<\/li>\n<li>en sistemas CI\/CD (Jenkins\/TeamCity\/GitLab\/etc.) o en sistemas de gesti\u00f3n de configuraciones (Ansible Tower\/Ansible AWX);<\/li>\n<li>tambi\u00e9n los secretos pueden ser manejados manualmente. Por ejemplo, se colocan en un lugar acordado y luego son utilizados por los sistemas de gesti\u00f3n de configuraciones;<\/li>\n<li>diferentes combinaciones de lo anteriormente mencionado.<\/li>\n<\/ul>\n<p>\nCada m\u00e9todo tiene sus desventajas. La principal es la falta de pol\u00edticas de acceso a los secretos: no se puede o es dif\u00edcil determinar qui\u00e9n puede usar ciertos secretos. Otro inconveniente es la falta de auditor\u00eda de acceso y un ciclo de vida completo. \u00bfC\u00f3mo reemplazar r\u00e1pidamente, por ejemplo, una clave p\u00fablica que est\u00e1 codificada y en varios sistemas relacionados?<\/p>\n<p>Hemos utilizado un almac\u00e9n centralizado de secretos, HashiCorp Vault. Esto nos permiti\u00f3: <\/p>\n<ul>\n<li>guardar secretos de forma segura. Est\u00e1n cifrados, y aunque alguien obtenga acceso a la base de datos del almac\u00e9n Vault (por ejemplo, restaur\u00e1ndola de una copia de seguridad), no podr\u00e1 leer los secretos almacenados all\u00ed; <\/li>\n<li>organizar pol\u00edticas de acceso a los secretos. Los usuarios y aplicaciones solo tienen acceso a los secretos \u2018designados\u2019 para ellos;<\/li>\n<li>realizar auditor\u00eda de acceso a los secretos. Cualquier acci\u00f3n con los secretos se registra en el registro de auditor\u00eda de Vault;<\/li>\n<li>organizar un \u2018ciclo de vida\u2019 completo para trabajar con secretos. Se pueden crear, revocar, establecer plazos, etc.<\/li>\n<li>integrarse f\u00e1cilmente con otros sistemas que necesitan acceso a los secretos;<\/li>\n<li>y aplicar tambi\u00e9n cifrado de extremo a extremo, contrase\u00f1as de un solo uso para sistemas operativos y bases de datos, certificados de autoridades acreditadas, etc. <\/li>\n<\/ul>\n<p>\nAhora pasemos al sistema central de autenticaci\u00f3n y autorizaci\u00f3n. Se podr\u00eda haber prescindido de \u00e9l, pero administrar usuarios en m\u00faltiples sistemas relacionados es demasiado complicado. Configuramos la autenticaci\u00f3n y autorizaci\u00f3n a trav\u00e9s del servicio LDAP. De lo contrario, en el mismo Vault tendr\u00edamos que estar emitiendo continuamente y contabilizando los tokens de autenticaci\u00f3n para los usuarios. Y agregar o eliminar usuarios se convertir\u00eda en una b\u00fasqueda del tesoro: '\u00bfHe creado\/eliminado esta cuenta en todas partes?' <\/p>\n<p>Agregamos un nivel m\u00e1s a nuestro sistema: gesti\u00f3n de secretos y autenticaci\u00f3n\/autorizaci\u00f3n central;<\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/993e863417898c39940fe0bc9ee55b1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2. Gesti\u00f3n de secretos.<\/i><\/p>\n<h1>Gesti\u00f3n de configuraciones<\/h1>\n<p>\nHemos llegado al n\u00facleo: al sistema CMS. En nuestro caso, esto es una combinaci\u00f3n de Ansible y Red Hat Ansible AWX. <\/p>\n<p>En lugar de Ansible, se puede usar Chef, Puppet, SaltStack. Elegimos Ansible por varios criterios. <\/p>\n<ul>\n<li>Primero, su versatilidad. El conjunto de m\u00f3dulos disponibles para la gesti\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/modules_by_category.html\">impresiona<\/a><\/noindex>. Y si no es suficiente, se puede buscar en GitHub y Galaxy. <\/li>\n<li>En segundo lugar, no es necesario instalar ni mantener agentes en el equipo gestionado, demostrar que no interrumpen la carga y confirmar la ausencia de \"backdoors\". <\/li>\n<li>En tercer lugar, Ansible tiene una baja barrera de entrada. Un ingeniero competente puede escribir un playbook funcional literalmente en su primer d\u00eda con el producto.<\/li>\n<\/ul>\n<p>\nPero solo Ansible en un entorno industrial no es suficiente. De lo contrario, surgir\u00edan muchos problemas con la restricci\u00f3n de acceso y la auditor\u00eda de las acciones de los administradores. \u00bfC\u00f3mo limitar el acceso? Era necesario que cada unidad gestionara (l\u00e9ase: ejecutara playbook de Ansible) su propio conjunto de servidores. \u00bfC\u00f3mo permitir la ejecuci\u00f3n de ciertos playbooks de Ansible solo a empleados espec\u00edficos? \u00bfO c\u00f3mo rastrear qui\u00e9n ejecut\u00f3 un playbook sin crear m\u00faltiples cuentas locales en los servidores y equipos que gestiona Ansible?<\/p>\n<p>La mayor parte de tales preguntas son resueltas por Red Hat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/products\/tower\">Ansible Tower<\/a><\/noindex>, o su proyecto upstream de c\u00f3digo abierto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ansible\/awx\">Ansible AWX<\/a><\/noindex>. Por eso lo preferimos para el cliente. <\/p>\n<p>Y un detalle m\u00e1s sobre nuestro sistema CMS. El playbook de Ansible debe almacenarse en sistemas de gesti\u00f3n de repositorios de c\u00f3digo. En nuestro caso, es <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/\">GitLab CE<\/a><\/noindex>.<\/p>\n<p>As\u00ed que las configuraciones son gestionadas por la combinaci\u00f3n de Ansible\/Ansible AWX\/GitLab (ver Fig. 3). Por supuesto, AWX\/GitLab est\u00e1n integrados con un sistema de autenticaci\u00f3n unificado, y el playbook de Ansible con HashiCorp Vault. Las configuraciones solo llegan al entorno de producci\u00f3n a trav\u00e9s de Ansible AWX, donde se establecen todas las \"reglas del juego\": qui\u00e9n y qu\u00e9 puede configurar, de d\u00f3nde obtener el c\u00f3digo para gestionar las configuraciones para el CMS, etc.<\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/f4f5b3904a2145d7283cd52f921bca89.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3. Gesti\u00f3n de configuraciones.<\/i><\/p>\n<h1>Gesti\u00f3n de pruebas<\/h1>\n<p>\nNuestra configuraci\u00f3n se presenta en forma de c\u00f3digo. Por lo tanto, debemos jugar bajo las mismas reglas que los desarrolladores de software. Necesitamos organizar los procesos de desarrollo, pruebas continuas, entrega y aplicaci\u00f3n de c\u00f3digo de configuraci\u00f3n en los servidores de producci\u00f3n.<\/p>\n<p>Si no se hace de inmediato, los roles escritos para la configuraci\u00f3n dejar\u00edan de ser compatibles y actualizables, o dejar\u00edan de ejecutarse en producci\u00f3n. La soluci\u00f3n a este problema es conocida y se ha implementado en este proyecto:<\/p>\n<ul>\n<li>cada rol est\u00e1 cubierto por pruebas modulares;<\/li>\n<li>las pruebas se ejecutan autom\u00e1ticamente con cualquier cambio en el c\u00f3digo que gestiona las configuraciones;<\/li>\n<li>los cambios en el c\u00f3digo de gesti\u00f3n de configuraciones solo se implementan en el entorno de producci\u00f3n tras pasar exitosamente todas las pruebas y la revisi\u00f3n del c\u00f3digo.<\/li>\n<\/ul>\n<p>\nEl desarrollo de c\u00f3digo y la gesti\u00f3n de configuraciones se volvieron m\u00e1s tranquilos y predecibles. Para organizar pruebas continuas, utilizamos la herramienta GitLab CI\/CD, y como marco para organizar las pruebas optamos por <noindex><a rel=\"nofollow\" href=\"https:\/\/molecule.readthedocs.io\/en\/latest\/\">Ansible Molecule<\/a><\/noindex>.<\/p>\n<p>Con cualquier cambio en el c\u00f3digo de gesti\u00f3n de configuraciones, GitLab CI\/CD invoca a Molecule: <\/p>\n<ul>\n<li>este verifica la sintaxis del c\u00f3digo, <\/li>\n<li>levanta un contenedor Docker, <\/li>\n<li>aplica el c\u00f3digo modificado en el contenedor creado, <\/li>\n<li>verifica la idempotencia del rol y ejecuta las pruebas para este c\u00f3digo (la granularidad aqu\u00ed est\u00e1 a nivel de rol de ansible, v\u00e9ase la Fig. 4).<\/li>\n<\/ul>\n<p>\nLas configuraciones en el entorno de producci\u00f3n se entregaron mediante Ansible AWX. Los ingenieros responsables de la operaci\u00f3n aplicaron los cambios en la configuraci\u00f3n a trav\u00e9s de plantillas predefinidas. AWX solicitaba autom\u00e1ticamente la \u00faltima versi\u00f3n del c\u00f3digo de la rama principal de GitLab en cada aplicaci\u00f3n. As\u00ed, evitamos el uso de c\u00f3digo no verificado o desactualizado en el entorno de producci\u00f3n. Por supuesto, el c\u00f3digo en la rama principal solo se incorporaba despu\u00e9s de pruebas, revisi\u00f3n y aprobaci\u00f3n.<\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/aa8f6205f05792a6a1120ad7360ab102.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 4. Pruebas autom\u00e1ticas de roles en GitLab CI\/CD.<\/i><\/p>\n<p>Tambi\u00e9n hay otro problema relacionado con la operaci\u00f3n de sistemas en producci\u00f3n. En la vida real, es muy dif\u00edcil realizar cambios en la configuraci\u00f3n solo a trav\u00e9s del c\u00f3digo de CMS. Surgen situaciones excepcionales donde un ingeniero debe modificar la configuraci\u00f3n \"aqu\u00ed y ahora\", sin esperar la correcci\u00f3n del c\u00f3digo, pruebas, aprobaciones, etc.<\/p>\n<p>Como resultado, debido a cambios manuales, aparecen discrepancias en la configuraci\u00f3n en equipos homog\u00e9neos (por ejemplo, en nodos de un cl\u00faster HA, la configuraci\u00f3n de sysctl puede ser diferente). O la configuraci\u00f3n real en el hardware difiere de aquella que est\u00e1 definida en el c\u00f3digo del CMS. <\/p>\n<p>Por lo tanto, adem\u00e1s de las pruebas continuas, verificamos los entornos de producci\u00f3n en busca de discrepancias en las configuraciones. Elegimos la opci\u00f3n m\u00e1s sencilla: ejecutar el c\u00f3digo de configuraci\u00f3n del CMS en modo \"dry run\", es decir, sin aplicar cambios, pero notificando sobre todas las discrepancias entre la configuraci\u00f3n planificada y la real. Implementamos esto mediante ejecuciones peri\u00f3dicas de todos los playbooks de Ansible con la opci\u00f3n \"--check\" en los servidores de producci\u00f3n. Como siempre, Ansible AWX es responsable de la ejecuci\u00f3n y la vigencia del playbook (ver Fig. 5):<\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/108a5a473f60ab76ee15f9334ebcbab7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5. Verificaciones de discrepancias en configuraciones en Ansible AWX.<\/i><\/p>\n<p>Despu\u00e9s de las verificaciones, AWX env\u00eda un informe de discrepancias a los administradores. Ellos estudian la configuraci\u00f3n problem\u00e1tica y luego la corrigen mediante un playbook corregido. As\u00ed mantenemos la configuraci\u00f3n en el entorno de producci\u00f3n y el CMS siempre est\u00e1 en un estado actual y sincronizado. Esto evita las desagradables 'sorpresas' cuando el c\u00f3digo del CMS se aplica en servidores 'en producci\u00f3n'.<\/p>\n<p>Ahora tenemos un nivel importante de pruebas que consiste en Ansible AWX\/GitLab\/Molecule (Ver Fig. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Thriller sobre la configuraci\u00f3n de servidores sin maravillas con Configuration Management\" src=\"\/wp-content\/uploads\/2020\/07\/f487f5603e90b0c753fb9decf9018b11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Gesti\u00f3n de pruebas.<\/i><\/p>\n<p>\u00bfDif\u00edcil? No lo discuto. Pero este complejo de gesti\u00f3n de configuraciones se ha convertido en una respuesta exhaustiva a muchas preguntas relacionadas con la automatizaci\u00f3n de la configuraci\u00f3n de servidores. Ahora, el minorista siempre tiene una configuraci\u00f3n estrictamente definida para los servidores est\u00e1ndar. El CMS, a diferencia del ingeniero, no olvidar\u00e1 agregar las configuraciones necesarias, crear usuarios y realizar decenas o cientos de configuraciones requeridas.<\/p>\n<p>Hoy en d\u00eda, en la configuraci\u00f3n de servidores y entornos no hay 'conocimientos ocultos'. Todas las caracter\u00edsticas necesarias est\u00e1n reflejadas en el playbook. Ya no hay creatividad ni instrucciones ambiguas: '<i>config\u00faralo como un Oracle normal, pero all\u00ed necesitas definir un par de configuraciones de sysctl y agregar usuarios con el UID correcto. Pregunta a los chicos de operaciones, ellos lo saben.<\/i>\u00bb. <\/p>\n<p>La capacidad de detectar discrepancias en las configuraciones y corregirlas con anticipaci\u00f3n brinda tranquilidad. Sin un sistema de gesti\u00f3n de configuraciones, esto normalmente se ve de otra manera. Los problemas se acumulan hasta que en alg\u00fan momento 'estallan' en producci\u00f3n. Luego, se realiza un an\u00e1lisis, se verifican y corrigen las configuraciones. Y el ciclo se repite nuevamente. <\/p>\n<p>Y, por supuesto, hemos acelerado la puesta en marcha de los servidores de varios d\u00edas a horas.<\/p>\n<p>Y en la misma noche de A\u00f1o Nuevo, cuando los ni\u00f1os abr\u00edan alegremente sus regalos y los adultos ped\u00edan deseos al sonar de las campanas, nuestros ingenieros migraron el sistema SAP a nuevos servidores. Incluso Pap\u00e1 Noel dir\u00eda que los mejores milagros son los que est\u00e1n bien preparados. <\/p>\n<p>P.D. Nuestro equipo a menudo se encuentra con que los clientes desean resolver la tarea de gesti\u00f3n de configuraciones de la manera m\u00e1s simple posible. Idealmente, como por arte de magia, con una sola herramienta. Pero en la vida, todo es m\u00e1s complicado (s\u00ed, otra vez no llegaron las balas de plata): hay que crear todo un proceso utilizando herramientas que sean convenientes para el equipo del cliente.<\/p>\n<p><i>Autor: Sergey Artemov, arquitecto del departamento <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/portal.jet.su\/about\/company\/structure\/?set_filter_structure=Y&amp;structure_UF_DEPARTMENT=56656\"><i>Soluciones DevOps<\/i><\/a><\/noindex><i> \u00abInfosishtemy Jet\u00bb<\/i><br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/jetinfosystems\/blog\/513132\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436. \u0412 \u0434\u0435\u043a\u0430\u0431\u0440\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0435\u0433\u043e \u0426\u041e\u0414 \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u0442\u0440\u043e\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":90387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-90386","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\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\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-31T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-31T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Thriller sobre la configuraci\u00f3n de servidores sin milagros con Gesti\u00f3n de Configuraci\u00f3n | ProHoster","description":"El a\u00f1o nuevo se acercaba. Los ni\u00f1os de todo el pa\u00eds ya hab\u00edan enviado cartas a Pap\u00e1 Noel o hab\u00edan pedido regalos, y su principal ejecutor, uno de los grandes minoristas, se preparaba para el apogeo de las ventas.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","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\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster","og:description":"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-31T11:42:20+00:00","article:modified_time":"2020-07-31T11:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90386","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:52:34","updated":"2022-09-28 09:47:54","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/90386","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=90386"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/90386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/90387"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=90386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=90386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=90386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}