Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

¡Bienvenido a Programabilidad y Automatización de Redes!

El sector de las redes está cambiando radicalmente. El impulso para que las organizaciones y los profesionales de las redes adopten las ideas y los conceptos de la programabilidad y la automatización de las redes es mayor ahora que quizás lo haya sido nunca, impulsado por una revolución en los nuevos protocolos, las nuevas tecnologías, los nuevos modelos de entrega y la necesidad de que las empresas sean más ágiles y más flexibles para poder competir. Pero, ¿qué es la programabilidad y la automatización de la red? Empecemos este libro respondiendo a esa pregunta.

De qué trata este libro

Como su título indica, este libro se centra en la programabilidad y automatización de redes. En esencia, la programabilidad y automatización de redes consiste en simplificar las tareas de configuración, gestión y funcionamiento de los equipos de red, las topologías de red, los servicios de red y la conectividad de red.

Hay muchos, muchos componentes implicados: sistemas operativos que ahora se utilizan mucho más en redes que en el pasado, nuevas metodologías como la integración continua y herramientas que antes sólo podían pertenecer al ámbito del administrador de sistemas (herramientas como el control del código fuente y los sistemas de gestión de la configuración). Dado que todas ellas desempeñan un papel en la definición básica de programabilidad y automatización de redes, cubrimos todos estos temas. Nuestro objetivo con este libro es que puedas establecer una base de conocimientos sobre la programabilidad y la automatización de redes.

Novedades de esta edición

Esta edición del libro se ha actualizado con respecto a la original para incluir cuatro capítulos totalmente nuevos:

También hemos actualizado los capítulos existentes para incluir conceptos más nuevos como éstos:

  • Búferes de protocolo Google

  • gRPC/gNMI

  • Terraforma

  • Nornir

Además de todas estas novedades, hemos renovado y ampliado todos los capítulos para reflejar los avances y los cambios del sector que se han producido desde la publicación de la primera edición.

Estamos encantados de tener la oportunidad de añadir estos nuevos y apasionantes temas al libro. Debido a las limitaciones de tamaño, algunos contenidos de la primera edición no se han trasladado a ésta. Sin embargo, en lugar de eliminar simplemente este contenido, lo hemos puesto a libre disposición en https://oreilly-npa-book.github.io.

Cómo está organizado este libro

Este libro no está pensado necesariamente para ser leído de principio a fin; en su lugar, hemos dividido los temas para que puedas encontrar fácilmente el contenido que más te interese. Puede resultarte útil empezar leyendo secuencialmente los tres primeros capítulos, ya que proporcionan información de fondo y sientan las bases para el resto del libro. A partir de ahí, puedes saltar a los temas que te resulten más útiles o interesantes.

Hemos intentado que los capítulos sean relativamente independientes, pero -como ocurre con cualquier tecnología- eso no siempre es posible. Siempre que podemos, proporcionamos referencias cruzadas para ayudarte a encontrar la información que necesitas.

Aquí tienes un vistazo rápido a cómo hemos organizado los temas:

Capítulo 1, "Tendencias de la industria de redes"

Ofrece una visión general de los principales acontecimientos y tendencias que pusieron en marcha las redes definidas por software (SDN). Como verás, la SDN fue la génesis de una mayor atención a la programabilidad y automatización de las redes.

Capítulo 2, "Automatización de la red"

Toma el debate sobre SDN del Capítulo 1 y se centra específicamente en la automatización de redes: historia de la automatización de redes, tipos de automatización, herramientas y tecnologías implicadas en la automatización, y cómo afecta la automatización a los modelos operativos (y cómo afectan los modelos operativos a la automatización).

Capítulo 3, "Linux"

Proporciona una visión general del sistema operativo Linux. En ningún caso se trata de un debate exhaustivo sobre Linux, sino que este capítulo pretende poner al día a los profesionales de redes sobre Linux, los comandos básicos de Linux y los conceptos de red de Linux.

Capítulo 4, "Nube"

Introduce la computación en nube desde la perspectiva de las redes, y proporciona un punto de partida para muchos temas relevantes como los contenedores y las redes Kubernetes. También discutimos cómo las habilidades existentes de los ingenieros de redes se trasladan a un entorno basado en la nube.

Capítulo 5, "Entornos de desarrollo en red"

Explora las herramientas y técnicas para mantener un entorno de desarrollo de red. Se trata de una parte crucial de cualquier proyecto de automatización de redes, y permite a los equipos colaborar en soluciones de forma más eficaz, así como pasar eficientemente del desarrollo a las pruebas, hasta llegar a la producción.

Capítulo 6, "Python"

Introduce a los profesionales de redes en Python. Este lenguaje de programación se utiliza con frecuencia en contextos de programabilidad y automatización de redes, y este capítulo cubre muchos de los aspectos básicos de la programación con Python: tipos de datos, condicionales, bucles, trabajo con archivos, funciones, clases y módulos.

Capítulo 7, "Ve"

Añade una segunda opción al repertorio de lenguajes de programación del profesional de la automatización de redes, explorando Go. Go, cuya popularidad ha crecido recientemente -en gran parte debido al ecosistema nativo de la nube-, es un activo valioso incluso para quienes acaban de iniciar su andadura en la automatización.

Capítulo 8, "Formatos y modelos de datos"

Profundiza en los formatos y métodos de transmisión, almacenamiento y modelado de datos de automatización de redes. La capacidad de comprender y trabajar con datos es una habilidad fundamental para cualquier profesional de la automatización de redes, y en este capítulo construimos una base sólida para los capítulos siguientes.

Capítulo 9, "Plantillas"

Examina el uso de lenguajes de plantillas para crear configuraciones de dispositivos de red. Aunque este capítulo se centra principalmente en el lenguaje de plantillas Jinja, ya que se integra de forma nativa con Python, también exploramos las plantillas Go y las Transformaciones del Lenguaje Extensible de Hojas de Estilo (XSLT).

Capítulo 10, "Trabajar con API de red"

Cubre el papel de las API en la programabilidad y automatización de redes. Exploramos términos y tecnologías clave relacionados con las API, como HTTP, NETCONF, RESTCONF y gNMI, como ejemplos para mostrar cómo pueden utilizarse para la programabilidad y automatización de redes. Utilizamos bibliotecas Python y Go para automatizar dispositivos de red utilizando estas API.

Capítulo 11, "Control de código fuente con Git"

Presenta Git, una herramienta popular y ampliamente utilizada para el control del código fuente. Hablamos de por qué es importante el control del código fuente, cómo se utiliza en un contexto de programabilidad y automatización de redes, y cómo trabajar con servicios en línea populares como GitHub.

Capítulo 12, "Herramientas de automatización"

Explora el uso de herramientas de automatización de código abierto como Ansible, Nornir con NAPALM y Terraform. Aprenderás cómo pueden utilizarse estas herramientas específicamente para la programabilidad y automatización de redes, utilizando los enfoques imperativo y declarativo.

Capítulo 13, "Integración continua"

Examina la integración continua (IC) y las herramientas y tecnologías clave que intervienen. Hablamos del uso del desarrollo dirigido por pruebas (TDD), exploramos herramientas y marcos como GitLab y Jenkins, y echamos un vistazo a un flujo de trabajo de automatización de red de muestra que incorpora todos estos elementos de IC.

Capítulo 14, "Arquitectura de automatización de redes"

Unifica todos los conceptos tratados en capítulos anteriores proponiendo una arquitectura de referencia para una solución holística de automatización de redes. Reúne la automatización y la orquestación, explora la idea de una fuente de verdad y muestra cómo podrían funcionar las interacciones de los usuarios en un sistema de este tipo.

Quién debería leer este libro

Como hemos mencionado anteriormente, el objetivo de este libro es dotarte de conocimientos básicos y de un conjunto de habilidades básicas en las áreas de programabilidad y automatización de redes. Creemos que la lectura de este libro beneficiará a miembros de diversas disciplinas informáticas.

Ingenieros de redes

Dado el enfoque en la programabilidad y automatización de la red, es natural que uno de los destinatarios de este libro sea el ingeniero de redes "tradicional", alguien que domina razonablemente los protocolos de red, la configuración de dispositivos de red y el funcionamiento y gestión de una red. Aprenderás a utilizar la automatización para la gestión de la configuración, la resolución de problemas, la observabilidad y mucho más. Este libro permitirá a los ingenieros de redes ser más eficientes y construir infraestructuras más fiables mediante la automatización y la programabilidad.

Requisitos previos

Los ingenieros de redes interesados en aprender más sobre programabilidad y automatización de redes no necesitan conocimientos previos sobre desarrollo de software, programación, automatización o herramientas relacionadas con DevOps. El único prerrequisito es una mente abierta y la voluntad de aprender sobre las nuevas tecnologías y cómo te afectarán a ti -el profesional de redes- y al sector de las redes en su conjunto.

Administradores de sistemas

Es posible que los administradores de sistemas, que son los principales responsables de gestionar los sistemas que se conectan a la red, ya tengan experiencia previa con algunas de las herramientas tratadas en este libro (en particular, Linux, el control del código fuente y los sistemas de gestión de la configuración). Este libro, por tanto, podría servir como mecanismo para ayudar a los administradores de sistemas a ampliar sus conocimientos y comprensión de dichas herramientas, presentándolas en un contexto diferente (por ejemplo, utilizando Ansible para configurar un conmutador de red en lugar de utilizar Ansible para configurar un servidor que ejecuta una distribución de Linux).

Requisitos previos

Este libro no cubre ni explica los protocolos o conceptos básicos de las redes. Sin embargo, como resultado de la gestión de sistemas conectados a la red, prevemos que muchos administradores de sistemas también tienen un conocimiento básico de los protocolos básicos de red. Por tanto, la mayoría de los administradores de sistemas experimentados no deberían tener problemas. Si tus conocimientos de redes son un poco escasos, te recomendamos que complementes este libro con otro que se centre en los conceptos e ideas básicos de las redes. Por ejemplo, Packet Guide to Core Network Protocols de Bruce Hartpence (O'Reilly) puede ser una buena elección.

Desarrolladores de software

Los desarrolladores de software también pueden beneficiarse de la lectura de este libro. Muchos desarrolladores tendrán experiencia previa con algunos de los lenguajes de programación y herramientas para desarrolladores que tratamos (como Python y/o Git). Al igual que los administradores de sistemas, a los desarrolladores les puede resultar útil ver cómo se utilizan las herramientas y lenguajes de desarrollo en un contexto centrado en las redes (por ejemplo, ver cómo se puede utilizar Python para recuperar y almacenar datos específicos de las redes).

Requisitos previos

Asumimos que tienes conocimientos básicos de los protocolos y conceptos básicos de las redes, y todos los ejemplos que proporcionamos están centrados en las redes. Al igual que ocurre con los administradores de sistemas, los desarrolladores de software que no estén familiarizados con las redes probablemente consideren necesario complementar el material de este libro con otro que se centre en los conceptos básicos de las redes.

Herramientas utilizadas en este libro

Como en cualquier campo de la tecnología, las tecnologías y herramientas que se encuentran en el espacio de la programabilidad y automatización de redes tienen muchas versiones y variaciones. Por ello, en este libro nos hemos centrado en un conjunto de herramientas que creemos que representa mejor las que encontrarás en este campo. Por ejemplo, Linux tiene muchas distribuciones, pero nosotros nos centramos sólo en Debian, Ubuntu (que a su vez es un derivado de Debian) y CentOS (un derivado de Red Hat Enterprise Linux o RHEL). Para facilitarte las cosas, indicamos la versión concreta de las distintas herramientas en el capítulo específico de cada herramienta.

Recursos en línea

No podemos abarcar todo el material que nos gustaría sobre automatización y programabilidad de redes. Por ello, a lo largo del libro hacemos referencia a recursos en línea adicionales que pueden resultarte útiles para comprender los conceptos y habilidades que se presentan.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/oreilly-npa-book/examples/tree/v2.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Programabilidad y Automatización de Redes, 2ª Edición, por Matt Oswalt, Christian Adell, Scott S. Lowe y Jason Edelman (O'Reilly). Copyright 2023 Matt Oswalt, Scott S. Lowe y Christian Adell, 978-1-098-11083-3".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/NPA_2e.

Para noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media

Síguenos en Twitter: https://twitter.com/oreillymedia

Míranos en YouTube: https://youtube.com/oreillymedia

Agradecimientos

Este libro no habría sido posible sin la ayuda y el apoyo de una gran comunidad de personas.

En primer lugar, nos gustaría extender nuestro agradecimiento a la vibrante comunidad de automatización de redes. Hay demasiada gente para nombrarla directamente, pero se trata de las personas que han creado proyectos de código abierto como NAPALM, Netmiko, Nornir y Containerlab, que han ayudado a liderar la educación del sector sobre la automatización de redes, y que han aportado incansablemente sus conocimientos y experiencia en beneficio de los demás. Gracias a todos por vuestros esfuerzos y vuestras contribuciones.

Nuestros revisores técnicos han sido fundamentales para garantizar que el contenido sea preciso desde el punto de vista técnico y fácilmente consumible por los lectores. Queremos dar las gracias a Patrick Ogenstad, Akhil Behl, Eric Chou, Sreenivas Makam, Michael Kehoe y Arthur Chiao. ¡Gracias por ayudarnos a que este libro sea lo mejor posible!

Por último, nuestro agradecimiento no estaría completo sin incluir al personal de O'Reilly Media: nuestras editoras Simina Calin, Jennifer Pollock y Melissa Potter; la editora de producción Kristen Brown; la correctora Sharon Wilkey; la correctora Stephanie English; y el indexador Bill Morrison.

Get Programabilidad y Automatización de Redes, 2ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.