{"id":35972,"date":"2019-10-31T22:08:54","date_gmt":"2019-10-31T19:08:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\/"},"modified":"2019-10-31T22:08:54","modified_gmt":"2019-10-31T19:08:54","slug":"avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","title":{"rendered":"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>El SDSM ha terminado, pero el deseo incontrolado de escribir sigue ah\u00ed. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/0\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/2da9a566e92a782cf1205a6da716d4c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Durante muchos a\u00f1os, nuestro hermano sufri\u00f3 al realizar trabajos rutinarios, cruzando los dedos antes del commit y desvel\u00e1ndose por los rollbacks nocturnos.<br \/>\nPero todo tiempo oscuro llega a su fin.<\/p>\n<p>Con este art\u00edculo comenzar\u00e9 una serie sobre c\u00f3mo <i>yo<\/i> veo la automatizaci\u00f3n. <br \/>\nA lo largo del camino, abordaremos las etapas de la automatizaci\u00f3n, el almacenamiento de variables, la formalizaci\u00f3n del dise\u00f1o, con RestAPI, NETCONF, YANG, YDK y programaremos mucho. <br \/>\n<i>Yo<\/i> significa que a) no es una verdad objetiva, b) no es el enfoque m\u00e1s incondicionalmente mejor c) mi perspectiva podr\u00eda cambiar incluso a medida que avance de un art\u00edculo a otro \u2014 sinceramente, desde la etapa de borrador hasta la publicaci\u00f3n, reescrib\u00ed todo completamente dos veces. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Contenido<\/h1>\n<p><\/p>\n<ol>\n<li> <b>Objetivos<\/b>\n<ol>\n<li>La red \u2014 como un organismo \u00fanico<\/li>\n<li>Pruebas de configuraci\u00f3n<\/li>\n<li>Versionado<\/li>\n<li>Monitoreo y autorrecuperaci\u00f3n de servicios<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Herramientas<\/b>\n<ol>\n<li>Sistema de inventario<\/li>\n<li>Sistema de gesti\u00f3n del espacio IP<\/li>\n<li>Sistema de descripci\u00f3n de servicios de red<\/li>\n<li>Mecanismo de inicializaci\u00f3n de dispositivos<\/li>\n<li>Modelo de configuraci\u00f3n independiente del proveedor<\/li>\n<li>Interfaz espec\u00edfica del proveedor de controlador<\/li>\n<li>Mecanismo de entrega de configuraci\u00f3n al dispositivo<\/li>\n<li>CI\/CD<\/li>\n<li>Mecanismo de copia de seguridad y detecci\u00f3n de desviaciones<\/li>\n<li>Sistema de monitoreo<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Conclusi\u00f3n<\/b>\n <\/li>\n<\/ol>\n<p>\nIntentar\u00e9 llevar el ADSM en un formato algo diferente al SDSM. Seguir\u00e1n apareciendo art\u00edculos sustanciales y numerados, y entre ellos publicar\u00e9 peque\u00f1as notas de experiencias cotidianas. Intentar\u00e9 aqu\u00ed luchar contra el perfeccionismo y no pulir cada uno de ellos. <\/p>\n<blockquote><p> Qu\u00e9 curioso que por segunda vez tenga que recorrer el mismo camino.<\/p>\n<p> Al principio, tuve que escribir yo mismo art\u00edculos sobre redes porque no hab\u00eda ninguno en la red rusa.<\/p>\n<p> Ahora no pude encontrar un documento completo que sistematizara los enfoques de automatizaci\u00f3n y desglosara, con ejemplos pr\u00e1cticos sencillos, las tecnolog\u00edas mencionadas anteriormente.<\/p>\n<p> Puede que me equivoque, as\u00ed que env\u00edenme enlaces a buenos recursos. Sin embargo, esto no cambiar\u00e1 mi determinaci\u00f3n de escribir, porque el objetivo principal es aprender algo por m\u00ed mismo, y facilitar la vida de los dem\u00e1s es un bono agradable que acaricia el gen de compartir experiencias.\n<\/p><\/blockquote>\n<p>Intentaremos tomar un centro de datos de tama\u00f1o mediano LAN DC y desarrollar todo el esquema de automatizaci\u00f3n. <br \/>\nAlgunas cosas las har\u00e9 pr\u00e1cticamente por primera vez junto a ustedes. <\/p>\n<blockquote><p> No ser\u00e9 original en las ideas y herramientas que describo aqu\u00ed. Dmitry Figol tiene un excelente <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MLeiShwb7Qo&amp;list=PLSwGHYY8t8JiGI9powOXDHTAXDSs7FZqt\">canal con transmisiones sobre este tema<\/a><\/noindex>. <br \/>\n Los art\u00edculos se cruzar\u00e1n con ellos en muchos aspectos. \n<\/p><\/blockquote>\n<p>En LAN DC hay 4 centros de datos, alrededor de 250 conmutadores, media docena de enrutadores y un par de cortafuegos. <br \/>\nNo es Facebook, pero es suficiente para reflexionar profundamente sobre la automatizaci\u00f3n. <br \/>\nSin embargo, existe la opini\u00f3n de que si tienes m\u00e1s de un dispositivo, ya necesitas automatizaci\u00f3n. <br \/>\nEs dif\u00edcil imaginar que alguien pueda vivir actualmente sin al menos un paquete de scripts de rodilleras. <br \/>\nAunque he o\u00eddo que hay empresas donde el registro de direcciones IP se lleva a cabo en Excel, y cada uno de miles de dispositivos de red se configura manualmente y tiene su propia configuraci\u00f3n \u00fanica. Esto, por supuesto, se puede presentar como arte moderno, pero los sentimientos de un ingeniero estar\u00e1n indudablemente heridos. <\/p>\n<h1>Objetivos<\/h1>\n<p>\nAhora establezcamos objetivos m\u00e1ximamente abstractos:<\/p>\n<ul>\n<li>La red \u2014 como un organismo \u00fanico<\/li>\n<li>Pruebas de configuraci\u00f3n<\/li>\n<li>Versionado del estado de la red<\/li>\n<li>Monitoreo y autorrecuperaci\u00f3n de servicios<\/li>\n<\/ul>\n<p>\nM\u00e1s adelante en este art\u00edculo, analizaremos qu\u00e9 herramientas utilizaremos, y en los siguientes, los objetivos y medios en detalle.<\/p>\n<h2>La red \u2014 como un organismo \u00fanico<\/h2>\n<p>\nLa frase definitoria del ciclo, aunque a primera vista pueda parecer no tan significativa: <b>vamos a configurar la red, no dispositivos individuales<\/b>. <br \/>\nEn los \u00faltimos a\u00f1os hemos estado observando un cambio de enfoque hacia tratar la red como una sola entidad, de ah\u00ed la llegada a nuestras vidas de <i>Software Defined Networking<\/i>, <i>Intent Driven Networks<\/i> y <i>Autonomous Networks<\/i>. <br \/>\nPorque lo que las aplicaciones necesitan globalmente de la red es: conectividad entre puntos A y B (bueno, a veces +B-Y) y aislamiento de otras aplicaciones y usuarios. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/f8b43928ccc6d487722ce7724f5c4829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nY as\u00ed, nuestra tarea en esta serie es <b>construir un sistema<\/b>, que apoye la configuraci\u00f3n actual <b>de toda la red<\/b>, que ya se descompone en la configuraci\u00f3n actual de cada dispositivo seg\u00fan su rol y ubicaci\u00f3n. <br \/>\n<b>Sistema<\/b> La gesti\u00f3n de la red implica que para hacer cambios nos dirigimos a ella, y a su vez calcula el estado necesario para cada dispositivo y lo configura. <br \/>\nDe esta manera, minimizamos casi a cero la necesidad de interactuar con la CLI manualmente: cualquier cambio en la configuraci\u00f3n de los dispositivos o el dise\u00f1o de la red debe estar formalizado y documentado, y solo despu\u00e9s implementarse en los elementos necesarios de la red. <\/p>\n<blockquote><p> Es decir, por ejemplo, si decidimos que a partir de ahora los switches de rack en Kaz\u00e1n deben anunciar dos redes en lugar de una, nosotros<\/p>\n<ol>\n<li>Primero documentamos los cambios en los sistemas<\/li>\n<li>Generamos la configuraci\u00f3n objetivo de todos los dispositivos de la red<\/li>\n<li>Ejecutamos el programa de actualizaci\u00f3n de configuraci\u00f3n de red, que calcula qu\u00e9 se debe eliminar en cada nodo, qu\u00e9 agregar y pone a los nodos en el estado deseado.<\/li>\n<\/ol>\n<p>\n En este proceso, hacemos los cambios a mano solo en el primer paso.\n<\/p><\/blockquote>\n<h2>Pruebas de configuraci\u00f3n<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.wikisummaries.org\/wiki\/Visible_Ops\">Es bien sabido<\/a><\/noindex>, que el 80% de los problemas ocurren durante el cambio de configuraci\u00f3n, prueba de ello es que durante el per\u00edodo de vacaciones de A\u00f1o Nuevo normalmente todo est\u00e1 tranquilo. <br \/>\nYo personalmente he sido testigo de decenas de ca\u00eddas globales debido a errores humanos: comandos incorrectos, ejecutados en la rama de configuraci\u00f3n equivocada, olvidando la comunidad, borrando MPLS globalmente en un enrutador, configurando cinco dispositivos, y en el sexto no notando el error, comitiendo cambios antiguos realizados por otra persona. Hay infinitos escenarios. <\/p>\n<p>La automatizaci\u00f3n nos permitir\u00e1 cometer menos errores, pero a una escala mayor. As\u00ed se puede bloquear no solo un dispositivo, sino toda la red de golpe. <\/p>\n<p>Desde tiempos inmemoriales, nuestros antepasados verificaban la correcci\u00f3n de los cambios realizados con ojo agudo, test\u00edculos de acero y la operatividad de la red despu\u00e9s de su implementaci\u00f3n. <br \/>\nAquellos ancianos cuyas acciones provocaban inactividad y p\u00e9rdidas catastr\u00f3ficas dejaban menos descendencia y deb\u00edan extinguirse con el tiempo, pero la evoluci\u00f3n es un proceso lento, y por eso a\u00fan no todos prueban los cambios anticipadamente en el laboratorio. <br \/>\nSin embargo, a la vanguardia del progreso est\u00e1n aquellos que automatizaron el proceso de prueba de configuraci\u00f3n y su posterior aplicaci\u00f3n en la red. En otras palabras, adoptaron el procedimiento de CI\/CD (<noindex><a rel=\"nofollow\" href=\"https:\/\/img.devrant.com\/devrant\/rant\/r_1535091_ErSUL.jpg\">Integraci\u00f3n Continua, Despliegue Continuo<\/a><\/noindex>) de los desarrolladores.<br \/>\nEn una de las secciones, veremos c\u00f3mo realizar esto utilizando un sistema de control de versiones, probablemente GitHub. <\/p>\n<blockquote><p> Tan pronto como te acostumbres a la idea de CI\/CD en redes, de repente el m\u00e9todo de verificar la configuraci\u00f3n aplic\u00e1ndola en la red de trabajo te parecer\u00e1 una necedad de la edad media temprana. Aproximadamente como golpear con un martillo una cabeza nuclear.\n<\/p><\/blockquote>\n<p>Una continuaci\u00f3n org\u00e1nica de las ideas sobre <b>el sistema<\/b> de gesti\u00f3n de redes y CI\/CD se convierte en un versionado completo de la configuraci\u00f3n. <\/p>\n<h2>Versionado<\/h2>\n<p>\nSupondremos que con cualquier cambio, incluso el m\u00e1s m\u00ednimo, incluso en un dispositivo imperceptible, toda la red pasa de un estado a otro.<br \/>\nY siempre que no ejecutemos comandos en el dispositivo, cambiamos el estado de la red. <br \/>\n\u00bfVamos a llamar a esos estados versiones?<\/p>\n<p>Supongamos que la versi\u00f3n actual es 1.0.0.<br \/>\n\u00bfHa cambiado la direcci\u00f3n IP de la interfaz Loopback en uno de los ToR? Esta es una versi\u00f3n menor, recibir\u00e1 el n\u00famero 1.0.1.<br \/>\nSi revisamos las pol\u00edticas de importaci\u00f3n de rutas en BGP, es algo m\u00e1s serio; ya ser\u00eda 1.1.0.<br \/>\nDecidimos deshacernos del IGP y pasar solo a BGP; ya es un cambio radical en el dise\u00f1o: 2.0.0.<\/p>\n<p>A su vez, diferentes centros de datos pueden tener diferentes versiones; la red evoluciona, se instala nuevo hardware, en algunos lugares se agregan nuevos niveles de spine, en otros no, etc.<\/p>\n<p>Sobre <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\">versionado sem\u00e1ntico<\/a><\/noindex> hablaremos de esto en un art\u00edculo aparte.<\/p>\n<p>Repito, cualquier cambio (excepto los comandos de depuraci\u00f3n) es una actualizaci\u00f3n de versi\u00f3n. Los administradores deben ser notificados de cualquier desviaci\u00f3n de la versi\u00f3n actual.<\/p>\n<p>Lo mismo se aplica a la reversi\u00f3n de cambios; no se trata de anular los \u00faltimos comandos, ni de un rollback por parte del sistema operativo del dispositivo; se trata de llevar toda la red a una nueva (o anterior) versi\u00f3n. <\/p>\n<h2>Monitoreo y autorrecuperaci\u00f3n de servicios<\/h2>\n<p>\nEs una tarea autoevidente en redes modernas que est\u00e1 alcanzando un nuevo nivel.<br \/>\nA menudo, los grandes proveedores de servicios practican el enfoque de que un servicio ca\u00eddo debe ser r\u00e1pidamente resuelto y levantada una nueva, en lugar de investigar qu\u00e9 sucedi\u00f3.<br \/>\nEl \"muy\" significa que de todas partes se necesita estar ampliamente ba\u00f1ado en monitoreos que detecten en segundos la menor desviaci\u00f3n de la norma.<br \/>\nY aqu\u00ed no son suficientes las m\u00e9tricas habituales, como la carga de la interfaz o la disponibilidad del nodo. No es suficiente tampoco que un encargado las siga manualmente.<br \/>\nPara muchas cosas, debe haber <noindex><a rel=\"nofollow\" href=\"https:\/\/www.irisns.com\/self-healing-network-tomorrow-look-like\/\">Autocuraci\u00f3n<\/a><\/noindex> los monitores se encienden en rojo y van a aplicar un vendaje donde duele.<\/p>\n<p>Y aqu\u00ed tambi\u00e9n monitoreamos no solo dispositivos individuales, sino tambi\u00e9n la salud de la red en su totalidad, tanto como blanco (whitebox), que es relativamente claro, como negro (blackbox), que es m\u00e1s complicado.<\/p>\n<p>\n\u00bfQu\u00e9 necesitaremos para llevar a cabo esos ambiciosos planes?<\/p>\n<ul>\n<li>Tener un listado de todos los dispositivos en la red, su ubicaci\u00f3n, roles, modelos y versiones de software. <br \/>\n <i>kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.<\/i>\n <\/li>\n<li>Tener un sistema de descripci\u00f3n de servicios de red. <br \/>\n <i>IGP, BGP, L2\/3VPN, Policy, ACL, NTP, SSH.<\/i><\/li>\n<li>Saber inicializar el dispositivo. <br \/>\n <i>Hostname, IP de gesti\u00f3n, ruta de gesti\u00f3n, usuarios, claves RSA, LLDP, NETCONF<\/i><\/li>\n<li>Configurar el dispositivo y llevar la configuraci\u00f3n a la versi\u00f3n requerida (incluyendo versiones anteriores).<\/li>\n<li>Probar la configuraci\u00f3n<\/li>\n<li>Verificar peri\u00f3dicamente el estado de todos los dispositivos para detectar desviaciones de lo actual y notificar a las partes correspondientes.<br \/>\n <i>Durante la noche, alguien a\u00f1adi\u00f3 en silencio una regla al ACL<\/i>.<\/li>\n<li>Supervisar el funcionamiento.<\/li>\n<\/ul>\n<p><\/p>\n<h1>Herramientas<\/h1>\n<p>\nSuena lo suficientemente complicado como para comenzar a descomponer el proyecto en componentes.<\/p>\n<p>Y ser\u00e1n diez:<\/p>\n<ol>\n<li>Sistema de inventario<\/li>\n<li>Sistema de gesti\u00f3n del espacio IP<\/li>\n<li>Sistema de descripci\u00f3n de servicios de red<\/li>\n<li>Mecanismo de inicializaci\u00f3n de dispositivos<\/li>\n<li>Modelo de configuraci\u00f3n independiente del proveedor<\/li>\n<li>Interfaz espec\u00edfica del proveedor de controlador<\/li>\n<li>Mecanismo de entrega de configuraci\u00f3n al dispositivo<\/li>\n<li>CI\/CD<\/li>\n<li>Mecanismo de copia de seguridad y detecci\u00f3n de desviaciones<\/li>\n<li>Sistema de monitoreo<\/li>\n<\/ol>\n<blockquote><p> Este, por cierto, es un ejemplo de c\u00f3mo ha cambiado la perspectiva sobre los objetivos del ciclo: en el borrador de componentes hab\u00eda 4.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/91132e29d359a4042b213529511f6d7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn la ilustraci\u00f3n he representado todos los componentes y el propio dispositivo. <br \/>\nLos componentes que se intersectan interact\u00faan entre s\u00ed. <br \/>\nCuanto mayor sea el bloque, m\u00e1s atenci\u00f3n necesita este componente. <\/p>\n<p><\/p>\n<h2>Componente 1. Sistema de inventario<\/h2>\n<p>\nObviamente, queremos saber qu\u00e9 equipo est\u00e1 en cada lugar y a qu\u00e9 est\u00e1 conectado. <br \/>\nEl sistema de inventario es una parte esencial de cualquier empresa. <br \/>\nA menudo, la empresa tiene un sistema de inventario separado para dispositivos de red que aborda tareas m\u00e1s espec\u00edficas. <br \/>\nEn el marco de este ciclo de art\u00edculos, lo llamaremos DCIM \u2014 Gesti\u00f3n de Infraestructura de Centros de Datos. Aunque, estrictamente hablando, el t\u00e9rmino DCIM abarca mucho m\u00e1s.<\/p>\n<p>Para nuestros prop\u00f3sitos, almacenaremos la siguiente informaci\u00f3n sobre el dispositivo:<\/p>\n<ul>\n<li>N\u00famero de inventario<\/li>\n<li>Nombre\/descripci\u00f3n <\/li>\n<li>Modelo (<i>Huawei CE12800, Juniper QFX5120, etc.<\/i>)<\/li>\n<li>Par\u00e1metros caracter\u00edsticos (<i>placas, interfaces, etc.<\/i>)<\/li>\n<li>Rol (<i>Leaf, Spine, Border Router, etc.<\/i>)<\/li>\n<li>Ubicaci\u00f3n (<i>regi\u00f3n, ciudad, centro de datos, rack, unidad<\/i>)<\/li>\n<li>Interconexiones entre dispositivos<\/li>\n<li>Topolog\u00eda de la red<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/fac708b1bf3640a943f90247bff8216e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEst\u00e1 claro que nosotros mismos queremos saber todo esto. <br \/>\nPero, \u00bfayudar\u00e1 esto en t\u00e9rminos de automatizaci\u00f3n? <br \/>\nSin duda. <br \/>\nPor ejemplo, sabemos que en este centro de datos, en los switches Leaf, si es Huawei, los ACL para filtrar cierto tr\u00e1fico deben aplicarse en VLAN, y si es Juniper, en la unidad 0 de la interfaz f\u00edsica. <br \/>\nO necesitamos desplegar un nuevo servidor Syslog en todos los bordes de la regi\u00f3n.<\/p>\n<p>En este sistema tambi\u00e9n almacenaremos dispositivos de red virtuales, como enrutadores virtuales o route reflectors. Podemos a\u00f1adir servidores DNS, NTP, Syslog y, en general, todo lo que est\u00e9 relacionado con la red. <\/p>\n<h2>Componente 2. Sistema de gesti\u00f3n del espacio IP<\/h2>\n<p>\nS\u00ed, incluso hoy en d\u00eda hay grupos de personas que mantienen un registro de prefijos y direcciones IP en archivos de Excel. Pero el enfoque moderno es, sin duda, una base de datos con un frontend en nginx\/apache, API y amplias funciones para el manejo de direcciones IP y redes separadas por VRF.<br \/>\nIPAM \u2014 Gesti\u00f3n de Direcciones IP. <\/p>\n<p>Para nuestras tareas en ella, almacenaremos la siguiente informaci\u00f3n:<\/p>\n<ul>\n<li>VLAN<\/li>\n<li>VRF<\/li>\n<li>Redes\/Subredes<\/li>\n<li>IP<\/li>\n<li>Asignaci\u00f3n de direcciones a dispositivos, redes a ubicaciones y n\u00fameros de VLAN<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/6d476d48f95ed663d84cae052a86d129.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe nuevo, es evidente que queremos asegurarnos de que al asignar una nueva direcci\u00f3n IP para el loopback del ToR, no tropiecemos con el hecho de que ya ha sido asignada a alguien m\u00e1s. O que el mismo prefijo se haya utilizado dos veces en diferentes extremos de la red. <br \/>\nPero, \u00bfc\u00f3mo ayudar\u00e1 esto en la automatizaci\u00f3n? <br \/>\nF\u00e1cil. <br \/>\nSolicitamos en el sistema un prefijo con el rol de Loopbacks, en el que hay direcciones IP disponibles para asignar; si se encuentra, asignamos la direcci\u00f3n, si no, solicitamos la creaci\u00f3n de un nuevo prefijo. <br \/>\nO al crear la configuraci\u00f3n del dispositivo, desde este mismo sistema podemos averiguar en qu\u00e9 VRF debe estar la interfaz. <br \/>\nY al iniciar un nuevo servidor, un script consultar\u00e1 el sistema, averiguar\u00e1 en cu\u00e1l switch del servidor, en qu\u00e9 puerto y qu\u00e9 subred est\u00e1 asignada a la interfaz \u2014 de ah\u00ed es donde se asignar\u00e1 la direcci\u00f3n del servidor. <\/p>\n<p>\nSurge el deseo de combinar DCIM e IPAM en un solo sistema, para no duplicar funciones y no gestionar dos entidades similares. <br \/>\nAs\u00ed lo haremos. <\/p>\n<h2>Componente 3. Sistema de Descripci\u00f3n de Servicios de Red<\/h2>\n<p>\nSi los primeros dos sistemas almacenan variables que a\u00fan deben utilizarse de alguna manera, el tercero describe c\u00f3mo debe estar configurado cada rol de dispositivo. <br \/>\nCabe destacar dos tipos diferentes de servicios de red: <\/p>\n<ul>\n<li>Infraestructurales<\/li>\n<li>De Cliente.<\/li>\n<\/ul>\n<p>Los primeros est\u00e1n destinados a proporcionar conectividad b\u00e1sica y gesti\u00f3n del dispositivo. Aqu\u00ed se incluyen VTY, SNMP, NTP, Syslog, AAA, protocolos de enrutamiento, CoPP, etc. <br \/>\nLos segundos organizan un servicio para el cliente: MPLS L2\/L3VPN, GRE, VXLAN, VLAN, L2TP, etc. <br \/>\nPor supuesto, tambi\u00e9n hay casos l\u00edmite: \u00bfa d\u00f3nde clasificar MPLS LDP, BGP? Y los protocolos de enrutamiento pueden utilizarse para los clientes. Pero eso no es fundamental. <\/p>\n<p>Ambos tipos de servicios se desglosan en primitivas de configuraci\u00f3n:<\/p>\n<ul>\n<li>interfaces f\u00edsicas y l\u00f3gicas (tag\/untag, mtu)<\/li>\n<li>Direcciones IP y VRF (IP, IPv6, VRF)<\/li>\n<li>ACL y pol\u00edticas de tratamiento de tr\u00e1fico<\/li>\n<li>Protocolos (IGP, BGP, MPLS)<\/li>\n<li>Pol\u00edticas de enrutamiento (listas de prefijos, comunidades, filtros ASN).<\/li>\n<li>Servicios de sistema (SSH, NTP, LLDP, Syslog\u2026)<\/li>\n<li>Etc.<\/li>\n<\/ul>\n<p>\nNo tengo idea de c\u00f3mo lo haremos exactamente. Lo abordaremos en un art\u00edculo aparte.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/092bc3a4b875f4a6422ee13fb580ba4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi lo llevamos un poco m\u00e1s a la pr\u00e1ctica, podr\u00edamos describir que<br \/>\nEl conmutador Leaf debe tener sesiones BGP con todos los conmutadores Spine conectados, importar las redes conectadas al proceso, aceptar de los conmutadores Spine solo redes de un prefijo espec\u00edfico. Limitar CoPP IPv6 ND a 10 pps, etc. <br \/>\nPor su parte, los Spine mantienen sesiones con todos los Leaf conectados, actuando como reflectores ra\u00edz, y aceptan de ellos solo rutas de cierta longitud y con una comunidad espec\u00edfica.<\/p>\n<h2>Componente 4. Mecanismo de inicializaci\u00f3n del dispositivo<\/h2>\n<p>\nBajo este t\u00edtulo agrupo m\u00faltiples acciones que deben ocurrir para que el dispositivo aparezca en los radares y para que se pueda acceder a \u00e9l de forma remota.<\/p>\n<ol>\n<li>Registrar el dispositivo en el sistema de inventario.<\/li>\n<li>Asignar una direcci\u00f3n IP de gesti\u00f3n.<\/li>\n<li>Configurar el acceso b\u00e1sico a \u00e9l: <br \/>\nNombre del host, direcci\u00f3n IP de gesti\u00f3n, ruta a la red de gesti\u00f3n, usuarios, claves SSH, protocolos \u2014 telnet\/SSH\/NETCONF<\/li>\n<\/ol>\n<p>Existen tres enfoques:<\/p>\n<ul>\n<li>Todo manualmente. El dispositivo se lleva al banco de pruebas, donde una persona org\u00e1nica com\u00fan lo registrar\u00e1 en los sistemas, se conectar\u00e1 a \u00e9l mediante consola y lo configurar\u00e1. Puede funcionar en peque\u00f1as redes est\u00e1ticas.<\/li>\n<li>ZTP \u2014 Zero Touch Provisioning. El hardware lleg\u00f3, se encendi\u00f3, obtuvo una direcci\u00f3n mediante DHCP, se conect\u00f3 a un servidor especial y se autoconfigur\u00f3. <\/li>\n<li>Infraestructura de servidores de consola, donde la configuraci\u00f3n inicial se realiza a trav\u00e9s del puerto de consola de manera autom\u00e1tica.<\/li>\n<\/ul>\n<p>Hablaremos de los tres en un art\u00edculo separado.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/6d8d061e53b508edbbcbd98fe496ca91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componente 5. Modelo de configuraci\u00f3n agn\u00f3stico del proveedor<\/h2>\n<p>\nHasta ahora, todos los sistemas han sido parches desarticulados que dan descripciones variables y declarativas de lo que nos gustar\u00eda ver en la red. Pero tarde o temprano, habr\u00e1 que lidiar con la concreci\u00f3n. <br \/>\nEn esta etapa, para cada dispositivo espec\u00edfico, los primitivos, servicios y variables se combinan en un modelo de configuraci\u00f3n que describe efectivamente la configuraci\u00f3n completa de un dispositivo espec\u00edfico, solo de manera independiente del proveedor. <br \/>\n\u00bfQu\u00e9 nos da este paso? \u00bfPor qu\u00e9 no simplemente generar la configuraci\u00f3n del dispositivo que se puede cargar directamente? <br \/>\nDe hecho, esto permite resolver tres tareas:<\/p>\n<ol>\n<li> No adaptarse a una interfaz de interacci\u00f3n espec\u00edfica con el dispositivo. Ya sea CLI, NETCONF, RESTCONF, SNMP, el modelo ser\u00e1 el mismo.<\/li>\n<li> No mantener la cantidad de plantillas \/ scripts seg\u00fan la cantidad de proveedores en la red, y en caso de un cambio de dise\u00f1o, modificar lo mismo en varios lugares.<\/li>\n<li> Cargar la configuraci\u00f3n desde el dispositivo (copia de seguridad), distribuirla en el mismo modelo y comparar directamente la configuraci\u00f3n objetivo con la existente para calcular la diferencia y preparar un parche de configuraci\u00f3n que solo cambiar\u00e1 las partes necesarias o para identificar desviaciones.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/a154c42ebe7978fcc5b2ce4f235516c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo resultado de esta etapa, obtenemos una configuraci\u00f3n independiente del proveedor.<\/p>\n<h2>Componente 6. Controlador espec\u00edfico de interfaz del proveedor.<\/h2>\n<p>\nNo deber\u00edas hacerse ilusiones de que alguna vez ser\u00e1 posible configurar una Cisco de la misma manera que una Juniper, simplemente enviando llamadas absolutamente id\u00e9nticas. A pesar de la creciente popularidad de los whiteboxes y la aparici\u00f3n de soporte para NETCONF, RESTCONF, OpenConfig, el contenido espec\u00edfico que estos protocolos entregan var\u00eda de un proveedor a otro, y es una de sus diferencias competitivas que no ceder\u00e1n f\u00e1cilmente. <br \/>\nEs algo similar a OpenContrail y OpenStack, que tienen RestAPI como su interfaz NorthBound, pero esperan llamadas completamente diferentes. <\/p>\n<p>Entonces, en el quinto paso, el modelo independiente del proveedor debe adoptar la forma en que se implementar\u00e1 en el hardware. <br \/>\nY aqu\u00ed todos los medios son v\u00e1lidos (no): CLI, NETCONF, RESTCONF, SNMP ya son realmente bastante simples.<\/p>\n<p>Por lo tanto, necesitaremos un controlador que transforme el resultado del paso anterior en el formato espec\u00edfico del proveedor: un conjunto de comandos CLI, estructura XML.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/6ed8e935183075fda60a209477f84937.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componente 7. Mecanismo de entrega de configuraci\u00f3n al dispositivo.<\/h2>\n<p>\nHemos generado la configuraci\u00f3n, pero a\u00fan necesitamos entregarla a los dispositivos, y, por supuesto, no de forma manual. <br \/>\n<b>Primero<\/b>, surge la pregunta de qu\u00e9 transporte vamos a utilizar. Y la elecci\u00f3n hoy en d\u00eda no es peque\u00f1a:<\/p>\n<ul>\n<li>CLI (telnet, ssh)<\/li>\n<li>SNMP<\/li>\n<li>NETCONF<\/li>\n<li>RESTCONF<\/li>\n<li>REST API<\/li>\n<li>OpenFlow (aunque este queda fuera de la lista, ya que es un m\u00e9todo para entregar FIB, no configuraciones)<\/li>\n<\/ul>\n<p>Aqu\u00ed vamos a aclarar las cosas. CLI es legado. SNMP\u2026 ejem-ejem.<br \/>\nRESTCONF a\u00fan es una bestia desconocida, casi nadie admite el soporte para REST API. Por lo tanto, en este ciclo nos enfocaremos en NETCONF.<\/p>\n<p>De hecho, como ya ha comprendido el lector, con la interfaz ya hemos tomado una decisi\u00f3n en este momento: el resultado del paso anterior ya se presenta en el formato de la interfaz elegida.<\/p>\n<p><b>En segundo lugar<\/b>, \u00bfy qu\u00e9 herramientas usaremos para hacerlo?<br \/>\nAqu\u00ed tambi\u00e9n hay muchas opciones:<\/p>\n<ul>\n<li>Un script hecho a mano o una plataforma. Arm\u00e9monos con ncclient y asyncIO y hag\u00e1moslo nosotros mismos. \u00bfQu\u00e9 nos cuesta construir un sistema de despliegue desde cero?<\/li>\n<li>Ansible, con su rica biblioteca de m\u00f3dulos de red.<\/li>\n<li>Salt, con su limitada funcionalidad de red y su conexi\u00f3n con Napalm.<\/li>\n<li>Napalm en s\u00ed, que conoce un par de proveedores y ya, adi\u00f3s.<\/li>\n<li>Nornir \u2014 otro animalito que analizaremos en el futuro.<\/li>\n<\/ul>\n<p>Aqu\u00ed a\u00fan no se ha elegido un favorito \u2014 vamos a probar.<\/p>\n<p>\u00bfQu\u00e9 m\u00e1s es importante aqu\u00ed? Las consecuencias de aplicar la configuraci\u00f3n. <br \/>\nSi ha sido exitoso o no. Si se mantuvo el acceso al dispositivo o no. <br \/>\nParece que aqu\u00ed puede ayudar un commit con confirmaci\u00f3n y validaci\u00f3n de lo que se ha cargado en el dispositivo. <br \/>\nEsto, junto con una correcta implementaci\u00f3n de NETCONF, reduce significativamente el n\u00famero de dispositivos compatibles: no muchos fabricantes soportan commits normales. Pero esto es solo uno de los requisitos en <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F\">RFP<\/a><\/noindex>. Al final, nadie se preocupa de que ning\u00fan proveedor ruso cumpla con la condici\u00f3n de 32*100GE de interfaz. \u00bfO s\u00ed?<\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/59d8ad3b55b9c107642550bb06fc759a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Componente 8. CI\/CD<\/h2>\n<p>\nPara este momento ya tenemos la configuraci\u00f3n lista para todos los dispositivos de la red.<br \/>\nEscribo \u00abpara todos\u00bb porque estamos hablando de la versionado del estado de la red. E incluso si se necesitan cambiar las configuraciones de un solo switch, se calculan los cambios para toda la red. Obviamente, estos pueden ser nulos para la mayor\u00eda de los nodos.<\/p>\n<p>Pero, como ya se mencion\u00f3 anteriormente, no somos unos b\u00e1rbaros para lanzar todo de una vez en producci\u00f3n. <br \/>\nLa configuraci\u00f3n generada debe pasar primero por Pipeline CI\/CD.<\/p>\n<blockquote><p>CI\/CD significa Integraci\u00f3n Continua, Despliegue Continuo. Este es un enfoque en el que el equipo no libera una nueva versi\u00f3n mayor cada seis meses, reemplazando completamente la anterior, sino que implementa (Despliegue) regularmente nuevas funcionalidades de forma incremental en peque\u00f1as porciones, cada una de las cuales se prueba exhaustivamente en compatibilidad, seguridad y funcionalidad (Integraci\u00f3n).\n<\/p><\/blockquote>\n<p>Para esto, tenemos un sistema de control de versiones que rastrea los cambios de configuraci\u00f3n, un laboratorio donde se verifica que el servicio del cliente no se rompa, un sistema de monitoreo que supervisa este hecho, y el \u00faltimo paso es la implementaci\u00f3n de cambios en la red de producci\u00f3n.<\/p>\n<p>Con la excepci\u00f3n de los comandos de depuraci\u00f3n, todos los cambios en la red deben pasar por el CI\/CD Pipeline, que es nuestra garant\u00eda de una vida tranquila y una carrera larga y feliz.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/101a5ff87c7a9c7b6776aca9daf762a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componente 9. Sistema de copias de seguridad y detecci\u00f3n de anomal\u00edas<\/h2>\n<p>\nNo es necesario hablar una vez m\u00e1s sobre las copias de seguridad. <br \/>\nSimplemente las almacenaremos en cron o cuando haya cambios de configuraci\u00f3n en Git.<\/p>\n<p>Pero la segunda parte es m\u00e1s interesante: alguien debe supervisar estas copias de seguridad. En algunos casos, esa persona deber\u00e1 restaurar todo como estaba, y en otros, alertar a alguien de que hay un problema. <br \/>\nPor ejemplo, si aparece un nuevo usuario que no est\u00e1 registrado en las variables, es necesario eliminarlo del hack. Y si es una nueva regla de cortafuegos, es mejor no tocarla; puede ser que alguien simplemente activ\u00f3 la depuraci\u00f3n o que un nuevo servicio, despistado, no la haya registrado seg\u00fan el reglamento, y ya hay personas utiliz\u00e1ndolo.<\/p>\n<p>A pesar de cualquier sistema de automatizaci\u00f3n y de la mano firme de la direcci\u00f3n, no escaparemos a cierta peque\u00f1a delta en la escala de toda la red. Para depurar problemas, nadie estar\u00e1 ingresando la configuraci\u00f3n en los sistemas. M\u00e1s a\u00fan, incluso podr\u00eda no estarlo considerando el modelo de configuraci\u00f3n. <\/p>\n<blockquote><p>Por ejemplo, una regla de cortafuegos para contar el n\u00famero de paquetes a una direcci\u00f3n IP espec\u00edfica, para localizar problemas, es una configuraci\u00f3n temporal bastante com\u00fan.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/390f78139d336f1fc2c60573bccfe76c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componente 10. Sistema de monitoreo<\/h2>\n<p>\nAl principio, no pensaba tratar el tema del monitoreo; es un tema extenso, pol\u00e9mico y complicado. Pero a medida que avanzaba, result\u00f3 ser una parte integral de la automatizaci\u00f3n. No se puede ignorar, incluso sin pr\u00e1ctica. <\/p>\n<p>Desarrollando la idea: es una parte org\u00e1nica del proceso de CI\/CD. Despu\u00e9s de implementar la configuraci\u00f3n en la red, necesitamos poder determinar si todo est\u00e1 en orden. <br \/>\nY no se trata solo de gr\u00e1ficos de uso de interfaces o disponibilidad de nodos, sino de aspectos m\u00e1s sutiles: la existencia de rutas necesarias, los atributos en ellas, el n\u00famero de sesiones BGP, los vecinos OSPF, y la funcionalidad de extremo a extremo de los servicios superiores.<br \/>\n\u00bfNo se han dejado de almacenar los syslogs en el servidor externo, ni se ha roto el agente SFlow, ni han comenzado a aumentar las p\u00e9rdidas en las colas, ni se ha interrumpido la conectividad entre alg\u00fan par de prefijos?<\/p>\n<p>En un art\u00edculo separado reflexionaremos sobre esto tambi\u00e9n.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/08aeee4939081abb21e61abadd0ce5de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/07\/13c186070c85fd00f7b6923df154f1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h1>Conclusi\u00f3n<\/h1>\n<p>\nComo base, eleg\u00ed uno de los dise\u00f1os modernos de redes de centros de datos: L3 Clos Fabric con BGP como protocolo de enrutamiento.<br \/>\nEsta vez construiremos la red en Juniper, porque ahora la interfaz JunOs es un sue\u00f1o.<\/p>\n<p>Complicaremos un poco las cosas utilizando solo herramientas de c\u00f3digo abierto y una red multivendor; por eso, adem\u00e1s de Juniper, elegir\u00e9 otro afortunado a lo largo del camino.<\/p>\n<p>El plan de publicaciones m\u00e1s cercano es aproximadamente el siguiente:<br \/>\nPrimero hablar\u00e9 sobre redes virtuales. En primer lugar, porque quiero, y en segundo, porque sin esto el dise\u00f1o de la red de infraestructura no ser\u00e1 muy claro.<br \/>\nLuego sobre el dise\u00f1o de la red: topolog\u00eda, enrutamiento, pol\u00edticas.<br \/>\nMontaremos un banco de pruebas.<br \/>\nReflexionaremos y quiz\u00e1s practiquemos en la inicializaci\u00f3n del dispositivo en la red.<br \/>\nY luego sobre cada componente en detalles \u00edntimos.<\/p>\n<p>Y s\u00ed, no prometo terminar elegantemente este ciclo con una soluci\u00f3n lista. \ud83d\ude42<\/p>\n<h5>Enlaces \u00fatiles<\/h5>\n<p><\/p>\n<ul>\n<li>Antes de profundizar en la serie, vale la pena leer el libro de Natasha Samoylenko <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.gitbook.io\/pyneng\/\">Python para ingenieros de redes<\/a><\/noindex>. Quiz\u00e1s tambi\u00e9n hacer <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.github.io\/pyneng-online\/\">un curso<\/a><\/noindex>.<\/li>\n<li>Tambi\u00e9n ser\u00e1 \u00fatil leer <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7938\">RFC<\/a><\/noindex> sobre el dise\u00f1o de f\u00e1bricas de centros de datos de Facebook, escrito por Petr Lapukhov.<\/li>\n<li>La documentaci\u00f3n sobre arquitectura te dar\u00e1 una idea de c\u00f3mo funciona el SDN basado en Overlay. <noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/Tungsten-Fabric-Architecture.html\">Tungsten Fabric<\/a><\/noindex> (anteriormente Open Contrail) te dar\u00e1 una idea de c\u00f3mo funciona el SDN basado en Overlay.<\/li>\n<\/ul>\n<h5>Gracias<\/h5>\n<p>\nRoman Gorge. Por los comentarios y correcciones.<br \/>\nArtyom Chernobay. Por el KDPV.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/453516\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0414\u043e\u043b\u0433\u0438\u0435 \u0433\u043e\u0434\u044b \u043d\u0430\u0448 \u0431\u0440\u0430\u0442 \u0441\u0442\u0440\u0430\u0434\u0430\u043b \u043e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u043a\u0440\u0435\u0449\u0438\u0432\u0430\u043b \u043f\u0430\u043b\u044c\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u044b\u043f\u0430\u043b \u0438\u0437-\u0437\u0430 \u043d\u043e\u0447\u043d\u044b\u0445 \u0440\u043e\u043b\u0431\u044d\u043a\u043e\u0432. \u041d\u043e \u0442\u0451\u043c\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0435\u0446. \u042d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u044f \u043d\u0430\u0447\u043d\u0443 \u0441\u0435\u0440\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u044d\u0442\u0430\u043f\u0430\u043c\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0441 RestAPI, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26891,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35972","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=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\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\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\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\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\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=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:08:54+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\udd47Automatizaci\u00f3n para los m\u00e1s peque\u00f1os. Parte cero. Planificaci\u00f3n | ProHoster","description":"El SDSM ha terminado, pero el deseo incontrolado de escribir sigue ah\u00ed.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","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\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:description":"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","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":"2019-10-31T19:08:54+00:00","article:modified_time":"2019-10-31T19:08:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35972","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":"2026-01-22 01:28:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 09:58:22","updated":"2026-01-22 01:28:20","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\/35972","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=35972"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/35972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/26891"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=35972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=35972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=35972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}