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 con un rápido vistazo a cómo responder a esa pregunta.

De qué trata este libro

Como indica su título, 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 diferentes implicados, incluidos los sistemas operativos que ahora tienen un uso mucho más amplio en las redes que en el pasado, el uso de nuevas metodologías como la Integración Continua y la inclusión de herramientas que antes sólo podían pertenecer al ámbito del administrador del sistema (herramientas como el control del código fuente y los sistemas de gestión de la configuración). Creemos que todo esto desempeña un papel en la definición básica de lo que es la programabilidad y la automatización de redes, por lo que cubrimos todos estos temas. Nuestro objetivo con este libro es que los lectores puedan establecer una base de conocimientos sobre la programabilidad y la automatización de redes.

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 los que más te interesan. 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 al tema o 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

Proporciona una visión general de los principales acontecimientos y tendencias que pusieron en marcha las Redes Definidas por Software (SDN). Como verás en el Capítulo 1, SDN fue la génesis de una mayor atención a la programabilidad y automatización de la red.

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 el objetivo de este capítulo es 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, Aprender Python en un contexto de red

Introduce a los profesionales de redes en el lenguaje de desarrollo Python. Python 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 5, Formatos y modelos de datos

Presenta formatos de datos comunes que se ven a menudo en proyectos de automatización de redes. Se analizan la Notación de Objetos JavaScript (JSON), el Lenguaje de Marcado eXtensible (XML) y el Lenguaje de Marcado YAML Ain't (YAML). A continuación, el capítulo presenta los conceptos de modelado de datos y ofrece una ligera introducción a YANG, un lenguaje de modelado de datos común para redes.

¿Te preguntas qué es un "formato de datos"?

Si eres nuevo en algunas de estas cosas, no dejes que la terminología te despiste. Un formato de datos no es más que la forma en que se codifican o encapsulan los datos cuando se transfieren entre dos puntos (por ejemplo, cuando se devuelven datos en respuesta a una llamada a la API). En el Capítulo 5 te lo explicamos todo.

Capítulo 6, Plantillas de configuración de red

Examina el uso de lenguajes de plantillas para crear configuraciones de dispositivos de red. Este capítulo se centra principalmente en el lenguaje de plantillas Jinja, ya que se integra de forma nativa con Python. También hablaremos de Mako y ERB, otros dos lenguajes de plantillas. Mako se integra con Python, mientras que ERB se utiliza principalmente con Ruby.

Capítulo 7, Trabajar con API de red

Analizaremos el papel de las interfaces de programación de aplicaciones (API) en la programabilidad y automatización de redes. Exploraremos términos y tecnologías clave relacionados con las API, y utilizaremos algunas API populares específicas de proveedores -tanto API de dispositivos como API de controladores- como ejemplos para ver cómo pueden utilizarse para la programabilidad y automatización de redes.

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

Presenta Git, una herramienta muy popular y ampliamente utilizada para el control del código fuente. Hablaremos 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 9, Herramientas de automatización

Explora el uso de herramientas de automatización de código abierto como Ansible, Salt y StackStorm, y cómo pueden utilizarse estas herramientas específicamente para la programabilidad y automatización de redes.

Capítulo 10, Integración continua

Examina los conceptos de Integración Continua (IC) y las herramientas y tecnologías clave que intervienen. Discutiremos el uso del desarrollo dirigido por pruebas (TDD), exploraremos herramientas y marcos como Jenkins y Gerrit, y echaremos un vistazo a un flujo de trabajo de automatización de red de muestra que incorpora todos estos elementos de IC.

Capítulo 11, Crear una cultura para la automatización de redes

Examina por qué una buena cultura es un elemento crucial y fundacional para la automatización de redes, y muestra cómo alimentar dicha cultura.

Apéndice A, Redes avanzadas en Linux

Continúa el debate iniciado en el Capítulo 3, pero profundiza mucho más en la creación de redes con interfaces macvlan, la creación de redes con máquinas virtuales (VM), el trabajo con espacios de nombres de red, la creación de redes con contenedores Linux (incluidos los contenedores Docker ) y el uso de Open vSwitch (OVS).

Apéndice B, Utilizar NAPALM

Proporciona una introducción al uso de la biblioteca NAPALM (Network Automation and Programmability Abstraction Layer with Multi-vendor support) de Python. Esta sección explora el uso de NAPALM tanto para la gestión de la configuración independiente del proveedor como para recuperar datos de los dispositivos de red. Por último, veremos cómo se integra NAPALM con herramientas como Ansible, Salt y StackStorm, todas ellas tratadas en el Capítulo 9.

Quién debería leer este libro

Como hemos mencionado antes, el objetivo del libro es dotar a los lectores de conocimientos básicos y 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. Creemos que este libro permitirá a los ingenieros de redes actuales ser más eficientes y productivos 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 que se tratan 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 ayudarles 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 contraposición a utilizar Ansible para configurar un servidor que ejecuta una distribución de Linux).

Requisitos previos

Lo que este libro no proporciona es ninguna cobertura o explicación de 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 (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 se tratan en este libro (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

Suponemos que los lectores tienen 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 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 con cualquier campo de la tecnología, hay muchas versiones y variaciones diferentes de las tecnologías y herramientas que se encuentran en el espacio de la programabilidad y automatización de redes. Por ello, en este libro nos hemos centrado en un conjunto de herramientas que creemos que representan mejor las herramientas que los lectores encontrarán en este campo. Por ejemplo, hay muchas distribuciones diferentes de Linux, pero sólo nos centraremos en Debian, Ubuntu (que a su vez es un derivado de Debian) y CentOS (un derivado de Red Hat Enterprise Linux [RHEL]). Para facilitar la tarea a los lectores, indicaremos la versión concreta de las distintas herramientas en el capítulo específico de cada una de ellas.

Recursos en línea

Somos conscientes de que no podemos abarcar todo el material que nos gustaría cubrir sobre automatización y programabilidad de redes. Por lo tanto, a lo largo del libro haremos referencia a recursos en línea adicionales que pueden resultarte útiles y provechosos para comprender los conceptos, ideas 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.

Safari O'Reilly

Nota

Safari (antes Safari Books Online) es una plataforma de formación y referencia basada en membresías para empresas, administraciones públicas, educadores y particulares.

Los miembros tienen acceso a miles de libros, vídeos de formación, rutas de aprendizaje, tutoriales interactivos y listas de reproducción de más de 250 editoriales, como O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, Jones & Bartlett y Course Technology, entre otras. Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett y Course Technology, entre otras.

Para más información, visita http://oreilly.com/safari.

Cómo contactar con nosotros

Por favor, dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

En 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 http://bit.ly/network-programmability-and-automation.

Para hacer comentarios o preguntas técnicas sobre este libro, envía un correo electrónico a

Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

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

Míranos en YouTube: http://www.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 expresar nuestro agradecimiento a la vibrante comunidad de automatización de redes. Hay demasiadas personas para nombrarlas directamente, pero son las que han creado proyectos de código abierto como NAPALM y Netmiko, las que han ayudado a liderar la educación de la gente sobre la automatización de redes y las que han aportado incansablemente sus conocimientos y experiencia en beneficio de los demás. Gracias a todos por vuestros esfuerzos y vuestras contribuciones.

Nuestros autores colaboradores han contribuido a que este libro sea más completo y exhaustivo de lo que habríamos sido capaces sin su ayuda, y les estamos profundamente agradecidos por su ayuda. Mircea Ulinic contribuyó con la sección sobre SaltStack en el capítulo sobre herramientas de gestión de la configuración, y Jere Julian aportó algunos contenidos sobre Puppet que lamentablemente no pudimos incluir en esta versión del libro. Nuestro agradecimiento tanto a Mircea como a Jere.

Nuestros revisores técnicos fueron fundamentales para garantizar que el contenido fuera técnicamente preciso y fácilmente consumible por los lectores. Queremos dar las gracias a Patrick Ogenstad, Akhil Behl, Eric Chou y Sreenivas Makam. ¡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: Virginia Wilson y Courtney Allen, nuestros editores; Dwight Ramsey, nuestro corrector; Rachel Monaghan, nuestra correctora; Judy McConville, nuestra indexadora; Colleen Cole, nuestra editora de producción; Randy Comer, el diseñador de la portada; y Rebecca Demarest, la ilustradora. No se puede subestimar la importancia de sus esfuerzos para ayudarnos a llevar este libro del concepto a la producción, y les agradecemos su dedicación y compromiso.

Get Programabilidad y automatización de la red 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.