0% encontró este documento útil (0 votos)
126 vistas120 páginas

Devasc Module 7

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
126 vistas120 páginas

Devasc Module 7

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 120

Módulo 7: Infraestructura y

Automatización
Materiales del Instructor

DevNet Associate v1.0


Materiales del instructor – Módulo 7: Guía de Planificación.
Esta presentación en PowerPoint se divide en dos partes:
• Guía de planificación para el instructor

• Información para ayudar al usuario a familiarizarse con el módulo.


• Ayuda didáctica
• Presentación de la clase del instructor

• Diapositivas opcionales que puede utilizar en el aula


• Comienza en la diapositiva n.º 10
Nota: Elimine la Guía de planificación de esta presentación antes de compartirla con
nadie.
Para obtener ayuda adicional y recursos, dirigase a la página principal del Instructor y a
los Recursos del Curso de este curso. También puede visitar el sitio de desarrollo
profesional en www.netacad.com, la página oficial de Facebook de Cisco Networking
Academy, o el grupo de FaceBook Exclusivo para Instructores.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 2
Qué esperar en este módulo
Para facilitar el aprendizaje, se pueden incluir en este módulo las siguientes características:

Característica Descripción
Laboratorios prácticos Laboratorios diseñados para trabajar con equipos físicos.
Auto-evaluaciones que integran conceptos y habilidades aprendidas a lo largo
Cuestionarios de módulo de los temas presentados en el módulo.
Resumen del módulo Resumiendo brevemente el contenido del módulo.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 3
Verifique su comprensión

• Las actividades de "Verificar Comprensión" están diseñadas para permitir que los
estudiantes determinen si están entendiendo el contenido y puedan continuar, o si es
necesario un repaso personal.
• Las actividades de "Verifique su Comprensión" no afectan las calificaciones de los alumnos.

• No hay diapositivas separadas para estas actividades en el PPT. Se enumeran en el área de


notas de la diapositiva que aparece antes de estas actividades.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 4
Módulo 7: Actividades
¿Que actividades están asociadas con este módulo?

N.° de página Tipo de actividad Nombre de la actividad ¿Opcional?

7.0.3 Laboratorio Instalar el CSR1000v VM(Maquina Virtual) Recomendado

7.4.7 Laboratorio Usar Ansible para respaldar y configurar un dispositivo Recomendado


Utilizar Ansible para automatizar la instalación de un servidor
7.4.8 Laboratorio Recomendado
Web
7.6.3 Laboratorio Pruebas automatizadas con pyATS y Genie Recomendado

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 5
Módulo 7: Mejores prácticas
Antes de enseñar el Módulo 7, el instructor debe:
• Revisar las actividades y evaluaciones de este módulo.
• Tratar de incluir la mayor cantidad de preguntas que sean posibles, con el fin de mantener a
los estudiantes entretenidos con la presentación.

Tema 7.1
• Preguntar a la clase si conocen los términos «automatización» e «infraestructura».
Familiarizar a la clase con la automatización de la infraestructura.
• Discutir la necesidad de la automatización.
• Describir brevemente algunos casos de automatización a la clase.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 6
Módulo 7: Mejores prácticas (Cont.)
Tema 7.2
• Preguntar si los participantes saben qué son DevOps y SRE. Pedir que compartan su
comprensión. Si los participantes no son conscientes, explicar los términos.
• Discutir la importancia de DevOps Divide.
• Explicar la evolución y los principios básicos de DevOps.

Tema 7.3
• Analizar las secuencias de comandos de automatización y sus herramientas básicas.
• Explique la automatización de procedimientos.
• Informe a la clase sobre la ejecución de scripts de forma local y remota.
• Explicar la automatización de la nube y CLI y SDK en la nube.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 7
Módulo 7: Mejores prácticas (Cont.)
Tema 7.4
• Pida a los participantes que enumeren algunas herramientas de automatización populares
en función de sus conocimientos. Describa las herramientas de automatización populares
como Ansible, Puppet y Chef.
• Averigüe lo que los participantes saben acerca de las potentes capacidades de las
herramientas de automatización y luego explique las capacidades a ellos.
• Discutir los conceptos críticos de las herramientas de automatización.

Tema 7.5
• Preguntar si los participantes saben por qué la infraestructura se almacena como código.
Si no son conscientes, explicar la razón y discutir la misma.
• Discutir GitOps, implementación azul/verde y pruebas canarias.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 8
Módulo 7: Mejores prácticas (Cont.)
Tema 7.6
• Pedir a la clase que comparta su comprensión de las pruebas automatizadas. Llevar a
cabo una discusión sobre las mismas.
• Discutir pyATS y sus características.

Tema 7.7
• Explicar simulación de red y VIRL.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 9
Módulo 7: Infraestructura y
Automatización

DevNet Associate v1.0


Objetivos del módulo
Título del módulo: Infraestructura y automatización
Objetivo del módulo: comparar los métodos de implementación y prueba de software en entornos de
automatización y simulación.

Título del tema Objetivo del tema


Automatizar la infraestructura Describa los entornos de implementación que se benefician con la automatización.
con Cisco
DevOps y SRE Explique los principios de DevOps.

BasicoAutomatizar Scripts Describa el uso de scripts de automatización.

Herramientas de automatización Explique las herramientas de automatización que aceleran el desarrollo y la


implementación del código.
Infraestructura como código Explique los beneficios de almacenar la infraestructura como código.

Pruebas de automatización Explique cómo se utilizan las herramientas de automatización en la prueba de


implementaciones de aplicaciones.
Simulación de red Describa el uso del entorno de prueba de simulación de red de Cisco VIRL.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 11
Introducción al laboratorio de infraestructura y automatización:
Instalar la máquina virtual CSR1000v
En el tema 7.4 de este módulo, tendrá dos laboratorios que requieren una máquina virtual
diferente. En este laboratorio, instalará esta máquina virtual para que esté lista cuando llegue
al tema 7.4.
En esta práctica de laboratorio se cumplirán los siguientes objetivos:
• Parte 1: Instalar la VM de DEVASC-LAB en VirtualBox

• Parte 2: Instalar la máquina virtual CSR1000v en VirtualBox

• Parte 3: Verificar las comunicaciones a la máquina virtual CSR1000v

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 12
7.1 Automatización de la
infraestructura con Cisco

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 13
Infraestructura y automatización
Automatización de la infraestructura
• La automatización utiliza código para configurar, implementar y administrar aplicaciones
junto con las infraestructuras y servicios de computación, almacenamiento y red en los que
se ejecutan.
• Para la automatización con la infraestructura de Cisco, las plataformas pueden integrarse
con las herramientas comunes como Ansible, Puppet, Chef, etc., o proporcionar acceso
directo a la API a la infraestructura programable.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 14
Infraestructura y automatización
Solucionesde automatización de Cisco
Hay varios casos de uso para la automatización de la red. Dependiendo del modelo operativo a seguir,
existen opciones para controlar mediante programación las configuraciones de red y la infraestructura.
Run: active directivas y Fly: Implemente aplicaciones,
Walk: Automatización de sólo
proporcione autoservicio en configuraciones de red y mucho
lectura
varios dominios más a través de CI/CD
• Usando herramientas de • Con estos escenarios de • Para una automatización más
automatización, se puede automatización de etapas de compleja y ejemplos
recopilar información sobre la ejecución, los usuarios pueden programables, se utiliza la etapa
configuración de la red. aprovisionar de forma segura sus Fly de DevNet Automation
• Uno puede usar un escenario de propias actualizaciones de red. Exchange.
lectura para auditar • Los flujos de trabajo de • Aquí las necesidades se pueden
configuraciones y hacer el incorporación se pueden gestionar mediante el monitoreo y
siguiente paso natural, que es automatizar, las configuraciones la gestión proactiva de los
volver a poner la configuración en de red diarias se pueden usuarios y dispositivos, al tiempo
conformidad. administrar y los escenarios que se obtienen conocimientos
• En Automation Exchange, este diarios pueden estar con los datos de telemetría.
cambio se clasifica como una impregnados.
progresión walk-run-fly.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 15
Infraestructura y automatización
¿Por qué necesitamos la automatización?
• La velocidad y la agilidad permiten a la empresa explorar, experimentar y explotar oportunidades antes de
su competencia.
• Los desarrolladores necesitan acelerar todas las fases de la creación de software: codificación e
iteración, pruebas y puesta en escena. Las prácticas de DevOps requieren que los desarrolladores
implementen y administren aplicaciones en producción, por lo que los desarrolladores también deben
automatizar esas actividades.

Desventajas de las operaciones manuales

• Se suman a los costos, se toman tiempo y son difíciles de escalar.


• Son propensos al error humano, y la documentación destinada a los humanos es a menudo
incompleta y ambigua, difícil de probar y rápidamente obsoleta.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 16
Infraestructura y automatización
¿Por qué necesitamos la automatización? (Cont.)
Riesgos de dependencia
• El ecosistema de software actual está descentralizado. Los desarrolladores crean componentes
individuales de acuerdo con sus necesidades e intereses y mezclan y combinan los componentes, la
infraestructura y los servicios necesarios para permitir soluciones completas y operarlas de manera
eficiente a escala.
• Este ecosistema introduce nuevos requisitos y nuevos riesgos:
• Los componentes deben ser capaces de trabajar junto con muchos otros componentes en muchas
situaciones diferentes que no muestren más preferencia por componentes o arquitecturas
complementarios específicos de la absolutamente necesaria.
• Los desarrolladores de componentes pueden abandonar el soporte para características obsoletas e
integraciones que rara vez se encuantran. Esto interrumpe los procesos que dependen de esas
características.
• Las configuraciones de aplicaciones con dependencias tienden a bloquearse en pilas de
implementación frágiles y cada vez más inseguras.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 17
Infraestructura y automatización
¿Por qué necesitamos automatización de pila completa?
La automatización es un componente clave de la infraestructura funcional definida por software y las
aplicaciones distribuidas y dinámicas. Las ventajas de la automatización de pila completa son:
• Autoservicio: la automatización proporciona marcos de autoservicio que permiten a los usuarios solicitar
infraestructura a petición.
• Escalar según demanda: las aplicaciones y las plataformas deben poder escalar hacia arriba y hacia
abajo en respuesta a los requisitos de tráfico y carga de trabajo y utilizar capacidad heterogénea.
• Observabilidad: Un sistema observable permite a los usuarios inferir el estado interno de un sistema
complejo a partir de sus salidas.
• Mitigación automatizada de problemas: las aplicaciones y plataformas deben diseñarse para minimizar
los efectos de los problemas, autosanar y monitorear eventos.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 18
Infraestructura y automatización
Infraestructura Definida por Software: Un Caso para la Automatización

La infraestructura definida por software también se conoce como computación en la nube. Permite a los
desarrolladores y operadores utilizar el software para solicitar, configurar, implementar y administrar
recursos informáticos, de almacenamiento y de red virtualizados y de metal desnudo.

Beneficios de los paradigmas de • Autoservicio (plataformas bajo demanda)


nube • Especificación estrecha, consistencia, repetibilidad
• Abstracción de plataforma
Desafíos enfrentados en los • Los desarrolladores deben prestar mucha atención al
paradigmas de nube diseño, la arquitectura y la seguridad de la plataforma.
• El control de acceso es fundamental, ya que los usuarios
de la nube con permisos incorrectos pueden causar mucho
daño a los activos de su organización.
• Cuando los recursos en la nube pueden ser
autogestionados rápidamente a través de operaciones
manuales, el consumo puede ser difícil de administrar y los
costos son difíciles de calcular.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 19
Infraestructura y automatización
Aplicaciones Distribuidas y Dinámicas: Otro Caso para la
Automatización
• Las arquitecturas de
aplicaciones modernas se
distribuyen cada vez más.
• Se construyen con componentes
pequeños y relativamente ligeros
que a veces se llaman
microservicios.
• Estos componentes pueden
estar aislados en contenedores,
conectados a través de servicios
de descubrimiento y mensajería
(que abstraen la conectividad de
la red) y respaldados por bases
de datos escalables y
resistentes (que mantienen el
estado). © 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 20
Infraestructura y Automatización
Aplicaciones distribuidas y dinámicas: Otro Caso para la
Automatización (Cont.)
Beneficios de los microservicios: Desafíos de los microservicios:
• Escalabilidad : los microservicios se • Mayor complejidad : los microservicios
pueden escalar y equilibrar la carga según significan que hay muchas partes móviles
sea necesario en muchos servidores en red que configurar e implementar. Hay
o en varias regiones de nube pública operaciones más exigentes, como escalar
geográficamente separadas. Esto elimina los bajo demanda, autoreparación y otras
puntos únicos de falla. características.
• Herramientas de automatización de • La automatización es un requisito : los
infraestructuras: cada vez más, la métodos manuales no pueden hacer frente
infraestructura proporciona el dinamismo de de manera realista a la complejidad de
las aplicaciones basadas en microservicios. implementar y administrar aplicaciones
Estos contenedores automatizan el escalado dinámicas.
bajo demanda, la recuperación automática y
mucho más.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 21
Infraestructura y Automatización
Resumen de Automatización de la Infraestructura
Estas necesidades empresariales y técnicas, tendencias y dinámicas animan a los
desarrolladores y operadores a utilizar la automatización en todas partes para las siguientes
tareas:
• Administrar todas las fases de creación, configuración, implementación y administración
del ciclo de vida de aplicaciones. Esto incluye la codificación, las pruebas, la puesta en
escena y la producción.
• Administrar infraestructuras definidas por software en nombre de las aplicaciones que
cree.
• Junto con las aplicaciones, para preservar, actualizar y mejorar continuamente el código
de automatización. Este código ayuda a desarrollar, probar, poner en escena, supervisar
y operar las aplicaciones en escalas de producción y en varios entornos. Cada vez más,
todo este código se puede tratar como un producto de trabajo.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 22
7.2 DevOps y SRE

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 23
DevOps y SRE
Introducción a DevOps y SRE
• Para que la automatización de pila completa sea realmente efectiva, requiere cambios en la
cultura organizacional, incluyendo la ruptura de las divisiones históricas entre Desarrollo
(Dev-Development) y Operaciones (Ops-Operations).
• Históricamente, la creación de aplicaciones era tarea de los desarrolladores de software
(Dev), y garantizar que las aplicaciones funcionen para los usuarios y el negocio ha sido la
provincia especializada de las operaciones de TI (Ops).

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 24
DevOps y SRE
DevOps dividen
La siguiente tabla describe las diferentes características de Dev y Ops:

Características Dev Ops


Se preocupa Aplicaciones personalizadas y cómo Aplicaciones y cómo se ejecutan, además de
por funcionan Infraestructura, SO, red, etc.
Negocio trata Centro de costos: proporciona y contabiliza
Centro de beneficios: demanda recursos
como los recursos
Participa en la
Ocasionalmente (solo cuando los
rotación de Regularmente (punto de lanza)
problemas se escalan a desarrollo)
guardia
Rendimiento De forma abstracta (incluidas las Concretamente (cumplimiento de SLA,
medido métricas incorrectas) problemas resueltos)
Más profundo que amplio: idiomas, API,
Habilidades Más amplio que profundo: configuración,
arquitectura, herramientas, procesos,
requeridas administración, SO, automatización, etc.
etc.
Agilidad Moverse rápido, innovar, romper cosas, Las inversiones deben estar ampliamente
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
requerida arreglar más tarde justificadas, gestionadas
confidencial de Cisco. las expectativas 25
DevOps y SRE
Dividir DevOps(Cont.)
En el ecosistema de TI empresarial tradicional, previo a la virtualización, separar a Dev de
Operaciones parecía sensato.
A principios de la década de 2000, comenzó un movimiento para tratar a Dev y Ops como una
sola entidad:
• Haga que los codificadores sean responsables de la implementación y el mantenimiento.
• Trate la infraestructura virtualizada como código.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 26
DevOps y SRE
Evolución de DevOps
DevOps evolucionó y sigue evolucionando en muchos lugares en paralelo. Algunos
acontecimientos clave han dado forma a la disciplina tal como la conocemos hoy en día.
• Definición de Momentos 1: Ingeniería de Confiabilidad del Sitio (SRE):
Institucionalización de SRE por Google en 2003.
• Definición de momentos 2: Debois e infraestructura ágil: presentación de Patrick
Debois en 2009 sobre la automatización de la infraestructura física y virtual mediante el
control de versiones y la aplicación de métodos ágiles.
• Definición de Momentos 3: Allspaw y Hammond: Presentación de John Allspaw y Paul
Hammond en 2009 que esboza un conjunto simple de prácticas recomendadas de
DevOps basadas en la idea de que tanto Dev como Ops permiten cooperativamente el
negocio.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 27
DevOps y SRE
Principios básicos de DevOps
DevOps/SRE tiene muchos principios básicos y mejores prácticas:
• Un enfoque en la automatización

• La idea de que "el fracaso es normal"

• Una redefinición de la "disponibilidad" en términos de lo que una empresa puede tolerar

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 28
DevOps y SRE
Principios básicos de DevOps (Cont.)
SLA, SLI y presupuestos de errores
• Las dos ideas vinculadas a la cultura DevOps y SRE son DevOps que debe ofrecer un
valor empresarial medible y acordado y la realidad estadística de hacerlo perfectamente es
imposible.
• Estas ideas están codificadas en un Objetivo de Nivel de Servicio (SLO) que se define en
términos de métricas reales denominadas Indicadores de Nivel de Servicio (SLI).
• Los SLIS se relacionan con la realidad práctica de ofrecer un servicio a los clientes.
• La metodología SLO/SLI permite una entrega más barata y rápida del valor comercial al
eliminar la obligación de buscar la perfección. También puede influir en el ritmo, el alcance
y otros aspectos del desarrollo para garantizar y mejorar la adecuación.
• Una forma de modelar resultados SLO/SLI requiere establecer un presupuesto de error
para un servicio durante un período de tiempo determinado y, a continuación, restar fallas
para lograr SLO de este valor.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 29
DevOps y SRE
Resumen de DevOps y SRE
DevOps/SRE está evolucionando conjuntamente con tecnologías como la
virtualización y la contenedorización, lo que permite un enfoque unificado y un
conjunto de herramientas unificadas para dar soporte la ingeniería coordinada de
aplicaciones e infraestructura.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 30
7.3 Scripts de automatización
básica

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 31
Secuencias de comandos de automatización básica
Introducción a las secuencias de comandos de automatización
básicas
• Potentes herramientas de automatización como Ansible, Puppet y Chef aportan facilidad de
uso, previsibilidad, disciplina y la capacidad de trabajar a escala para el trabajo de DevOps.
• Aunque las herramientas de automatización funcionan parcialmente ajustando la
funcionalidad del shell, las utilidades del sistema operativo, las funciones de API y otros
elementos del plano de control para simplificar, uniformidad, enriquecimiento de
características y compatibilidad en escenarios de DevOps, estas herramientas todavía no
resuelven todos los problemas de implementación y configuración.
• Cada herramienta de automatización tiene una o más funciones que ejecutan comandos y
scripts básicos en destinos y devuelven resultados.
• Por lo tanto, es importante tener habilidades básicas de creación de scripts de
automatización.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 32
Scripts de automatización básicas
Herramientasbásicas para la creación de scripts de automatización
Los shells son omnipresentes, por lo que el scripting de shell es históricamente la piedra
angular de la automatización.
BASH
• El Bash es un shell Unix y es un predeterminado en la mayoría de las distribuciones Linux y
en macOS. Usar comandos en un script Bash es lo mismo que usarlos directamente desde
la línea de comandos.
• Bash se puede utilizar para crear scripts de acceso a la CLI de AWS, puede utilizar las
funciones integradas y bibliotecas de lenguajes más sofisticados para analizar conjuntos de
datos complejos devueltos (como JSON), administrar muchas operaciones paralelas,
procesar errores, gestionar respuestas asincrónicas a los comandos y mucho más.
Lenguajes de programación más allá de Bash
• Los lenguajes sofisticados mejoran en Bash cuando aumentan la complejidad y los requisitos
de escala. Son útiles a la hora de crear y operar infraestructura virtualizada en entornos de
nube, utilizando SDK.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 33
Scripting para la Automatización Básica
Automatización deprocedimientos
• Un procedimiento imperativo es una secuencia ordenada de comandos dirigida a lograr un objetivo. La
secuencia puede incluir control de flujo, condiciones, estructura funcional, clases y más.
• Para garantizar la eficiencia y la reutilización de los scripts, uno puede:

• Estandarizar el orden y la presentación de parámetros, indicadores y errores.


• Crear una jerarquía de código que divida las tareas de forma lógica y eficiente.
• Crear scripts de alto nivel para implementaciones completas y scripts de nivel inferior para fases de
implementación.
• Separar los datos específicos de la implementación del código, haciendo que el código sea lo más
genérico y reutilizable posible.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 34
Scripting de Automatización Básica
Automatización de procedimientos (Cont.)
• Las secuencias de comandos de procedimiento y
las herramientas de configuración declarativa
cuidadosamente escritas examinan los destinos
antes de realizar tareas en ellos, y solo realizan las
tareas necesarias para lograr el estado deseado.
• Esta calidad del software se llama idempotencia.

• Los principios básicos de idempotencia son:

• Asegúrarse de que el cambio que se desea


realizar aún no se haya realizado
• Llegar a un estado de funcionalidad
comprobada, si es posible, antes de realizar
cambios
• Prueba de idempotencia
• Todos los componentes de un procedimiento
deben ser idempotentes
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 35
Scripting de Automatización Básica
Ejecución de scripts de forma local y remota
Para configurar sistemas remotos, el usuario necesita acceder y ejecutar scripts en ellos. Hay muchas maneras de
hacer esto:

• Almacene los scripts localmente, transmitalos a las máquinas de destino con una utilidad de shell como scp, luego
inicie sesión en el equipo remoto usando ssh y ejecútelos.

• Envíe scripts a una máquina remota usando cat | ssh y ejecútelos en secuencia con otros comandos, capturando y
devolviendo resultados a la terminal, todo en un solo comando.

• Instale un cliente de transferencia de archivos seguro de uso general como SFTP, luego use esa utilidad para
conectarse al equipo remoto, transferir, establecer los permisos apropiados y, a continuación, ejecutar el archivo de
script.

• Almacene scripts en un servidor web, inicie sesión en el equipo remoto y recuperelos con wget, curlu otras
utilidades, o almacene los scripts en un repositorio de Git.

• Instalar una solución completa de operaciones remotas como VNC o NoMachine localmente, instale su servidor en
el destino, transmite/copie y luego ejecute scripts.

• Si los dispositivos de destino se aprovisionan en un marco de nube, generalmente hay una forma de inyectar un
script de configuración a través del mismo comando CLI o acción WebUI que manifiesta la plataforma.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 36
Scripting de Automatización Básica
Automatización de la Nube
• La automatización en la nube permite al usuario aprovisionar hosts virtualizados, configurar
redes virtuales y otra conectividad, servicios de solicitud y, a continuación, implementar
aplicaciones en esta infraestructura.
• Los proveedores de nube y las comunidades de código abierto a menudo proporcionan
subsistemas especializados para herramientas de implementación populares, que extraen
un inventario completo de recursos de un marco de nube y lo mantienen actualizado en
tiempo real mientras que la automatización realiza cambios.
• El usuario también puede administrar recursos en la nube utilizando scripts escritos en
Bash, Python u otros idiomas.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 37
Scripting de automatización básica
CLI y SDKen la nube
IaaS y otros tipos de nube de infraestructura también proporcionan CLI y SDK que permiten una conexión
sencilla a sus interfaces subyacentes, que suelen estar basadas en REST.

Cisco UCS - una • API RESTful de Cisco Intersight


nube de metal • Rango de SDK para la API RESTful de Intersight, incluidos los para Python y
desnudo Microsoft PowerShell
• Gama de módulos Ansible
VMware • Centro de Datos CLI
• vSphere CLI para Linux y Windows
• PowerCLI para Windows PowerShell
• Host de SDK para idiomas populares, dirigidos a vSphere Automation, vCloud
Suite y otros productos
OpenStack • Cliente OpenStack (OSC)
• Informática OpenStack, identidad, imagen, almacenamiento de objetos y
almacenamiento en bloques API
• OpenStack Python SDK
• Kits de herramientas OpenStack
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 38
Scripting de automatización Básica
Resumen de Scripting de Automatización Básica
Las técnicas básicas de scripting de automatización son excelentes para tener en la
caja de herramientas y entenderlas mejorará la instalación como operador y usuario
de plataformas de automatización maduras.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 39
7.4 Herramientas de
automatización

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 40
Herramientas de automatización
Introducción a las herramientas de automatización
• En este tema, se están discutiendo las tres herramientas de automatización más populares,
Ansible, Puppet y Chef.
• También habrá una opción para instalar uno o todos ellos en la estación de trabajo local.

• Para probar esto, uno debe tener acceso a una estación de trabajo basada en Linux, como
Ubuntu o macOS, y debe consultar la documentación de instalación propia de la
herramienta para el sistema operativo.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 41
Herramientas de automatización
¿Qué hacen las herramientas de automatización por nosotros?
¿Qué hacen las herramientas de automatización por nosotros?
Las herramientas de automatización ofrecen potentes capacidades en comparación con las
estrategias de automatización ad-hoc que utilizan BASH, Python u otros lenguajes de
programación. Estas herramientas permiten a los desarrolladores:
• Simplificar y estandarizar

• Acelerar el desarrollo con funciones listas para usar

• Facilitar la reutilización, segregar las preocupaciones, promover la seguridad

• Realizar descubrimiento y administrar inventario

• Gestión de la escala

• Involucrar a la comunidad

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 42
Herramientas de automatización
Conceptos críticos
Idempotencia: una revisión
• Un software Idempotente produce el mismo resultado deseable cada vez que se ejecuta.

• En un software de implementación, Idempotency permite la convergencia y componibilidad y permite:

• Reúne con más facilidad componentes en colecciones que crean nuevos tipos de infraestructura y
realizan nuevas tareas de operaciones.
• Ejecute colecciones completas de compilación/implementación para reparar de forma segura
pequeños problemas con la infraestructura, realizar actualizaciones incrementales, modificar la
configuración o administrar el escalado.
Procedimiento vs. declarativo
• El código de procedimiento puede lograr idempotencia, pero muchas herramientas de administración de
infraestructura, implementación y orquestación han adoptado otro método, que consiste en crear un
declarativo.
• Un declarativo es un modelo estático y es utilizado por middleware que incorpora detalles específicos de
implementación, examina las circunstancias actuales y pone la infraestructura real en alineación con el
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información

modelo, y generalmente la ruta que consume menos tiempo. confidencial de Cisco. 43


Herramientas de automatización
Conceptoscríticos (Cont.)
Aprovisionamiento vs. configuración vs. implementación vs. orquestación
Aprovisionamiento Configuración Implementación Orquestación
Esto se refiere a la Esto significa instalar Esto implica crear, Esto puede referirse a varias
obtención de aplicaciones y servicios organizar, integrar y cosas:
infraestructura básicos y realizar las preparar aplicaciones de • Automatización integrada por el
informática, de operaciones, tareas y varios componentes o usuario o inherente a la
almacenamiento y de red pruebas necesarias para plataformas de nivel plataforma destinada a
(real o virtual), la preparar una plataforma superior, a menudo en administrar los ciclos de vida de
habilitación de de bajo nivel para varios nodos. las cargas de trabajo y
comunicaciones, la implementar aplicaciones reaccionar dinámicamente ante
puesta en servicio y la o una plataforma de nivel las condiciones cambiantes.
preparación para su uso superior. • Procesos o flujos de trabajo que
por parte de operadores y vinculan tareas de
desarrolladores. automatización para ofrecer
beneficios empresariales, como
el autoservicio.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 44
Herramientas de automatización
Conceptos críticos (Cont.)
Sin estado

La automatización funciona mejor


cuando las aplicaciones se pueden hacer
sin estado. Esto significa que volver a
implementarlos en su lugar no destruye
ni pierde la pista de los datos que
necesitan los usuarios u operadores.

Los dos estados de una solicitud son:


• Con estado : aplicación que guarda
información importante en archivos o
en una base de datos en el archivo
local.
• Sin estado : aplicación que mantiene
su estado en una base de datos
separada o que proporciona un
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
servicio que no requiere memoria de confidencial de Cisco. 45

estado entre invocaciones.


Herramientas de automatización
Herramientas de automatización populares
• La primera herramienta de automatización moderna fue Puppet, que fue introducida en 2005
como código abierto, y luego comercializada como Puppet Enterprise por Puppet Labs en
2011.
• Las herramientas de automatización más populares son Ansible, Puppet, Chef. Comparten
las siguientes características:
• Relativamente fáciles de aprender

• Disponible en versiones de código abierto

• Los complementos y adaptadores les permiten controlar directa o indirectamente muchos


tipos de recursos
• También existen muchas otras soluciones. Los proveedores de nube privada y pública a
menudo respaldan sus propias herramientas para su uso en sus plataformas, como el
proyecto HEAT de OpenStack, CloudFormation de AWS, SaltStack y Terraform.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 46
Herramientas de automatización
Ansible
• Ansible está disponible como código abierto, y en una versión con características añadidas,
de IBM/Red Hat, llamada Ansible Tower.
• Ansible se gestiona sustancialmente desde la línea de comandos de Bash, con código de
automatización desarrollado y mantenido utilizando cualquier editor de texto estándar.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 47
Herramientas de automatización
Ansible (Cont.)
Arquitectura Ansible: simple y ligera
• El nodo de control se ejecuta en cualquier
máquina Linux que ejecute Python 2 o 3.Todas las
actualizaciones del sistema se realizan en el nodo
de control.
• El nodo de control se conecta a los recursos
administrados a través de SSH y permite a
Ansible:
• Ejecute comandos de shell en un servidor
remoto, o realice transacciones con un
enrutador remoto u otra entidad de red, a
través de su interfaz REST.
• Inyecte scripts de Python en los destinos y
elimínelos después de ejecutarse.
• Instalar Python en los equipos de destino si es
necesario. © 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 48

• Los complementos permiten a Ansible recopilar


Herramientas de automatización
Ansible (Cont.)
Instalación de Ansible

• La aplicación de nodo de control Ansible se instala en una máquina Linux desde su repositorio de paquetes públicos. Para
instalar Ansible en una estación de trabajo, consulte la documentación de instalación correspondiente al dispositivo.

Estructura de código Ansible

• En la estructura de código de Ansible, el trabajo se separa en archivos YAML (.yml) que contienen una secuencia de
tareas, ejecutadas en orden descendente. Ansible tiene cientos de módulos de Python preconstruidos que envuelven
funciones de nivel de sistema operativo y metafunciones.

playbook y roles

• Un playbook Ansible se puede escribir como un documento monolítico con una serie de tareas modulares con nombre.

• Los desarrolladores crean un modelo de una tarea compleja de DevOps a partir de secuencias de tareas de bajo nivel
llamadas roles y, a continuación, hacen referencia a estos en libros de juego de nivel superior, a veces agregando tareas
adicionales en el nivel de playbook.

• Esta segregación de preocupaciones garantiza la claridad, la reutilización y la compartibilidad de las funciones.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 49
Herramientas de automatización
Ansible (Cont.)
Organización del proyecto Ansible

Los proyectos de Ansible se organizan en una estructura de directorios anidada. La jerarquía se coloca
fácilmente bajo control de versiones y se utiliza para la infraestructura de estilo Gitops como código.

Los elementos de jerarquía de carpetas Ansible incluyen archivos de inventario, archivos de variables,
archivos de biblioteca y de utilidades, archivos de playbook principales.

Ansible a Escala
• Existen desafíos de escalado para grandes organizaciones, como administrar y controlar el acceso a
muchos nodos de Ansible de forma flexible y segura. Esto también incluye poner los controladores
remotos sin problemas y de forma segura bajo el control de la automatización empresarial centralizada.
• Para esto, hay dos soluciones de plano de control: Red Hat Ansible Tower y proyecto AWX.

• Las implementaciones de Ansible a mayor escala también se benefician de Ansible Vault, una función
integrada que permite el cifrado de contraseñas y otra información confidencial.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 50
Herramientas de automatización
Ansible (Cont.)

Recursos de Cisco Ansible

Cisco y la comunidad de Ansible mantienen extensas bibliotecas de módulos de Ansible para automatizar el
hardware de red y computación de Cisco, incluyendo:
• Un conjunto muy grande de módulos integrados para configurar estructuras de infraestructura centrada en
aplicaciones de Cisco a través de Controlador de infraestructura de políticas de aplicación (APIC,
Application Policy Infrastructure Controller).
• Control remoto de dispositivos de red Cisco que ejecutan IOS-XR, además de módulos para enviar
comandos y recuperar resultados de estos dispositivos a través de CLI, o a través de la interfaz REST
estándar de NETCONF.
• Módulos Ansible para configurar la infraestructura Cisco UCS a través de la interfaz REST Intersight.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 51
Herramientas de automatización
Ejemplo de Ansible

• Ansible normalmente utiliza ssh para conectarse con hosts remotos y ejecutar comandos.

• Veamos cómo crear un sitio web simple en un host remoto.

Requisitos previos
• Un host de destino que ejecuta un sistema operativo compatible (como el servidor Ubuntu 18.04)

• SSH y autenticación por clave configurada en ese host

• Ansible instalado en su estación de trabajo local

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 52
Herramientas de automatización
Ejemplo de Ansible (Cont.)
Creación de un árbol de archivos de proyecto de Ansible
• A los efectos de este ejercicio, el nombre de host del equipo
de destino (resolución DNS) es target.
• Con su máquina de destino accesible a SSM, comience a
crear una estructura de carpetas base para el proyecto
Ansible.

• En el nivel superior de su carpeta de proyecto, necesita:

• Un archivo de inventario que contiene información sobre los


equipos en los que desea desplegar.
• Un archivo site.yml de nivel superior, que contiene el nivel
más abstracto de instrucciones.
• Estructura de carpetas de roles para contener la función de
servidor web. © 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 53
Herramientas de automatización
Ejemplo de Ansible (Cont.)
Crear su archivo de inventario
• El fichero de inventario de este proyecto puede ser muy sencillo. Conviértalo en el nombre de host
resolvedor de DNS de su máquina de destino:

• Está definiendo un grupo llamado web servers y poniendo el nombre de


host (o IP) de su máquina de destino en él.
• Puede agregar nuevos nombres de host/IP a este bloque de grupo, o
agregar bloques de grupo adicionales, para asignar hosts para
implementaciones más complejas.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 54
Ejemplo de herramientas de automatizaciónAnsible (Cond.)
Crear un archivo de playbook de nivel superior
• Un playbook de nivel superior normalmente describe el orden, los permisos y
otros detalles bajo los cuales se aplican los actos de configuración de nivel
inferior, definidos en roles.
• En este ejemplo, el archivo.yml identifica los hosts en los que desea realizar
una operación y los roles que desea aplicar a estos hosts.
• La línea become: true le dice a Ansible que desea realizar los roles como root,
a través de sudo.

Creación de la función de servidores web


• El siguiente paso es crear el rol que instala y configura el servidor web.
• Ya ha creado la estructura de carpetas para el rol usando Ansible-galaxy.
• El código para el rol está contenido en un archivo llamado main.yml en el directorio /tasks del rol.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 55
Herramientas de automatización
Ejemplo Ansible (Cont.)
• Puede editar roles/webserver/tasks/main.yml archivo
directamente, como se muestra aquí.
• El rol tiene dos tareas:

• Desplegar Apache2.
• Copie un nuevo archivo index.html en la raíz
HTML de Apache2, reemplazando la página
index.html predeterminada.
• En apt: stanza, nombra el paquete, su estado
requerido, e indica al módulo apt que actualice su
caché.
• En la segunda estrofa, la rutina de copia de
Ansible mueve un archivo de su sistema local a
un directorio en el destino y también cambia su
propietario y sus permisos.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 56
Herramientas de automatización
Ejemplo de Ansible (Cont.)
Creando el archivo index.html
• Por supuesto, también necesitaremos crear un nuevo
archivo index.html .
• El comando Ansible copy asume que dichos archivos se
almacenarán en el directorio /files del rol que los llama, a
menos que se especifique lo contrario.
• Vaya a ese directorio y cree el archivo index.html,
guardando los cambios después.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 57
Herramientas de automatización
Ejemplo de Ansible (Cont.)
Ejecutando de la implementación
• Ahora la implementación está lista para ser. Desde el directorio de nivel superior de su proyecto, puede
hacer esto con la declaración:

• -i nombrar su fichero de inventario.

• -uargumento nombra a su usuario sudo.

• -Kle dice a Ansible que nos pida su contraseña sudo, ya que comienza la ejecución.

• site.ymles el archivo que rige la implementación.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 58
Herramientas de automatización
Ejemplo de Ansible (Cont.)
• Si todo está bien, Ansible debe solicitarnos su contraseña REVER (contraseña sudo) y luego
devolver resultados similares a los siguientes:

• Y ahora, si visita la dirección IP de su máquina de destino en un navegador, debería ver su


nueva página de inicio.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 59
Herramientas de automatización
Ejemplo de Ansible (Cont.)
Tutorial de Ansible CI/CD

Veamos el ejemplo como si fueran parte de una canalización CI/CD.

• Desarrollador que colabore con usted en GitHub comete un cambio en el sitio web, como en el archivo index.html .

• A continuación, las pruebas en el repositorio ejecutan comprobaciones de sintaxis y cordura, así como reglas de revisión
de código contra cada solicitud de extracción.

• A continuación, el sistema CI/CD prepara un entorno y ejecuta pruebas predefinidas para cualquier playbook Ansible.
Debe indicar la versión esperada cada vez e instalarla. Aquí hay una canalización de ejemplo:

• Después de que Jenkins termine de ejecutar el trabajo, puede obtener una notificación de que todo está listo para la puesta
en escena y puede enviar estos cambios a la producción con otra tubería, esta ©vez para
2020 Cisco y susempujar
filiales. Todos losaderechos
la producción.
reservados. Información
confidencial de Cisco. 60
Herramientas de automatización
Laboratorio: utilizar Ansible para respaldar y configurar un dispositivo

En esta práctica de laboratorio se cumplirán los siguientes objetivos:


• Parte 1: Iniciar DEVASC VM y CSR1000v VM

• Parte 2: Configurar Ansible

• Parte 3: Utilizar Ansible para realizar una copia de seguridad de una configuración

• Part 4: Usar Ansible para Configurar un Dispositivo

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 61
Herramientas de automatización
Laboratorio: Utilizar Ansible para automatizar la instalación de un
servidor web

En esta práctica de laboratorio se cumplirán los siguientes objetivos:


• Parte 1: Iniciar la máquina virtual DEVASC

• Parte 2: Realizar una copia de seguridad con Ansible

• Parte 3: configurar el direccionamiento IPv6 con Ansible

• Parte 4: Usar Ansible para instalar Apache en servidores web

• Parte 5: agregar opciones a su playbook de Ansible para servidores web Apache

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 62
Herramientas de automatización
Puppet
Fundada como fuente abierta en 2005 y comercializada como Puppet Enterprise por Puppet Labs en 2011.

Componentes de la arquitectura
• Un servidor designado para alojar
los componentes principales de la
aplicación.
• Un cliente seguro, también
conocido como Puppet Agent.
• Módulos para habilitar
conexiones para API de nube y
hardware que no pueden ejecutar
un agente.
• En implementaciones escaladas
horizontales, un agente proxy
para descargar el trabajo de
conectarse directamente a CLI de © 2020 Cisco y sus filiales. Todos los derechos reservados. Información

dispositivos e intercambiar confidencial de Cisco. 63


Herramientas de automatización
Puppet (Cont.)
Instalación de Puppet
• Puppet Server requiere hardware potente (o una máquina virtual grande) y un cliente de protocolo de
tiempo de red para ser instalado, configurado y probado.
• Los agentes necesitarán el archivo puppet.conf configurado para comunicarse con Puppet Server.

• Una vez iniciado el servicio cliente, tendrá un certificado firmado por el servidor. El servidor ahora podrá
recopilar datos del cliente y actualizar el estado del cliente con cualquier cambio de configuración.

Estructura de código de marioneta


• Puppet almacena componentes de un proyecto o configuración discreta en un árbol de directorios
(/etc/puppetlabs/code/environments).
• Las carpetas subsidiarias se crean según la configuración de puppet.conf o por el operador.

• Puppet viene con un conjunto de recursos básicos incorporados. Muchos recursos adicionales para
realizar todo tipo de operaciones se pueden descargar e instalar desde Puppet Forge utilizando el
comando Puppet module. © 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 64
Herramientas de automatización
Puppet (Cont.)
Puppet a escala
• Puppet Server es algo monolítico, y los implementadores (código abierto) recomiendan una instalación
monolítica.
• El paso para acomodar más hosts es crear «maestros de compilación» adicionales, que compilan
catálogos para agentes cliente y los colocan detrás de un equilibrador de carga para distribuir el trabajo.
• Los clientes de Puppet Enterprise pueden ampliar aún más la capacidad reemplazando PuppetDB por
una base de datos personalizada independiente llamada PE-PostgreSQL.

Recursos de Cisco Puppet

Cisco y la comunidad Puppet mantienen extensas bibliotecas de módulos para automatizar el hardware de
red y computación de Cisco. Entre ellos se encuentran:
• Módulos Cisco IOS que permiten la administración de la infraestructura IOS

• Módulos Cisco UCS que permiten el control de UCS a través de UCS Manager

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 65
Herramientas de automatización
Puppet
• En este ejercicio se describe cómo instalar Puppet y, a continuación, utilizar Puppet para instalar
Apache 2 en un dispositivo.
• Esto se aproxima al flujo de trabajo normal para las operaciones de Puppet en un entorno
cliente/servidor automatizado.
• Tenga en cuenta que los módulos pueden ser completamente genéricos y libres de información
específica del sitio y, a continuación, invocarse de forma independiente y reutilizable para configurar
cualquier número de hosts o componentes de infraestructura.

Instalación de Puppet Server


• Puppet Server requiere hardware potente (o una máquina virtual grande) y un cliente de protocolo de
tiempo de red para ser instalado, configurado y probado.
• Las instrucciones para instalar el servidor se pueden encontrar en la documentación de Puppet.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 66
Herramientas de automatización
Puppet (Cont.)
Instalación de Puppet Client
• Cuando se ejecuta Puppet Server, puede instalar Puppet Agents en un host. Por ejemplo, en un sistema
Linux tipo Debian, puede instalar Puppet Agent usando un único comando:

Modificar
• Cuando se instala, Puppet Agent debe configurarse para
buscar un Puppet Server.
• Agregue las líneas al archivo /etc/puppet/puppet.conf que le
indica al cliente, el nombre de host de su servidor y el
nombre del certificado de autenticación que generará en el
siguiente paso.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 67
Herramientas de automatización
Ejemplo de Puppet (Cont.)
• Inicie el servicio de marionetas en el cliente:

• Debería obtener un resultado similar a este ejemplo:

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 68
Herramientas de automatización
Ejemplo dePuppet (Cont.)
Firma de certificado
• Los agentes de marioneta utilizan certificados para autenticarse con el servidor antes de recuperar sus
configuraciones.
• Cuando el servicio cliente se inicia por primera vez, envía una solicitud a su servidor asignado para que
se firme su certificado, lo que permite la comunicación.
• En el servidor, ejecute el comando ca list devuelve una lista de certificados pendientes.

La respuesta debe ser similar a la siguiente:

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 69
Herramientas de automatización
Ejemplo de Puppet (Cont.)
• A continuación, puede firmar el certificado, habilitando la administración del nodo remoto:

• La respuesta:

• El servidor y el cliente ahora están vinculados de forma segura y pueden comunicarse.

• Esto permitirá que el servidor recopile datos del cliente y le permitirá crear configuraciones
en el servidor que el cliente obtiene y se utiliza para converger su estado (cada 15 minutos).

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 70
Herramientas de automatización
Ejemplo de Puppet (Cont.)
Creación de una configuración
• Puppet permite almacenar componentes de un proyecto o configuración discreta en un árbol
de directorios.

• Las carpetas subsidiarias se crean según la configuración de puppet.conf o por el operador.

• En este ejemplo, habiendo declarado environment = production, Puppet ya ha creado un


directorio para este sitio predeterminado, que contiene un subdirectorio de modules en el que
podemos almacenar proyectos subsidiarios y manifiestos para cosas que necesitamos
construir y configurar.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 71
Herramientas de automatización
Ejemplo de Puppet (Cont.)
• Ahora instalará Apache2 en su cliente administrado. Las operaciones de marioneta
normalmente se realizan como root, por lo que se convierten en root en el servidor
temporalmente introduciendo sudo su -.
• Desplácese hasta la carpeta /modules en el entorno /production .

• Cree una estructura de carpetas para contener el módulo de instalación apache .

• Dentro de la carpeta de manifiestos, cree un archivo llamado init.pp, que es un nombre de


archivo reservado para el paso de inicialización en un módulo.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 72
Herramientas de automatización
Ejemplo de Puppet (Cond.)
• La definición de clase ordena los pasos
que queremos realizar:
• Paso 1.Invoque el recurso del package
para instalar el paquete con nombre
ensure=>installed.
• Paso 2.Invoque el recurso de servicio
que se va a ejecutar si se cumple su
requisito. Indíquelo para asegurarse de
que el servicio está disponible y, a
continuación, habilítelo para que se
reinicie automáticamente cuando el
servidor se reinicie.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 73
Herramientas de automatización
Ejemplo de Puppet (Cont.)
• Desplácese hasta la carpeta de manifiestos asociada.

• Cree un archivo site.pp que invoca el módulo y lo aplique al equipo de destino.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 74
Herramientas de automatización
Ejemplo de Puppet (Cont.)
Implementar la configuración
Hay dos opciones para implementar la configuración completada:
• Reiniciar el servidor de marionetas ahora hará que los manifiestos se compilen y estén
disponibles para Puppet Agent en el dispositivo con nombre. El agente los recuperará y los
aplicará, instalando Apache2 con el siguiente ciclo de actualización:

• Para el desarrollo y la depuración, puede invocar Puppet Agent en un equipo de destino. El


agente interrogará inmediatamente al servidor, descargará su catálogo y lo aplicará. Los
resultados serán similares a los siguientes:

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 75
Herramientas de automatización
Ejemplo de Puppet (Cont.)
• El agente interrogará inmediatamente al servidor, descargará su catálogo y lo aplicará. Los
resultados serán similares a los siguientes:

• Una vez que la aplicación se haya implementado correctamente, introduzca la dirección IP de


la máquina de destino en su navegador. Esto debería abrir la página de inicio predeterminada
de Apache 2.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 76
Herramientas de automatización
Chef
• Chef proporciona un sistema completo para tratar la infraestructura como código.

• Los productos Chef tienen licencia parcial, pero son gratuitos para uso personal (en el caso
de Chef Infra Server, para menos de 25 nodos administrados).
• Los productos y soluciones de Chef permiten la creación de infraestructura como código,
pruebas, organización, almacenamiento de repositorio y ejecución en destinos remotos, ya
sea desde una estación de trabajo Chef independiente o indirectamente desde un servidor
central de Infra de Chef.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 77
Herramientas de automatización
Chef (Cont.)

Arquitectura Chef -
Componentes
• Estacion de Trabajo Chef
• Chef Infra Client (el agente
host)
• Servidor de Infra Chef
La mayoría de las tareas de
configuración también se pueden
llevar a cabo directamente entre
Chef Workstation y nodos y
dispositivos administrados.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 78
Herramientas de automatización
Chef (Cont.)
Los componentes de Chef Workstation incluyen herramientas de línea de comandos, interacción con Chef
Infra Servers, Test Kitchen, ChefSpec e InSpec.

Instalación de Chef Workstation(Estacion de Trabajo)


• Para empezar a utilizar Chef, el primer paso es instalar Chef Workstation, que proporciona un entorno de
operaciones completo. Consulte la página de descargas de Chef Workstation para obtener más
información.
• La estación de trabajo está disponible para Linux y Windows.

Ejecutar Chef a escala


• Chef Infra Server se puede configurar para una alta disponibilidad mediante la implementación de sus
servicios front-end en una variedad de proxies con equilibrio de carga.
• Chef también ofrece una variedad de productos que juntos resuelven la mayoría de los problemas que
enfrentan las empresas al tratar con infraestructuras híbridas cada vez más complejas y a gran escala.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 79
Herramientas de automatización
Chef (Cont.)
Recursos de Cisco Chef
• Cisco ha desarrollado agentes de infra modificados que se ejecutan en el shell invitado del
equipo de conmutación NX-OS, lo que permite que este hardware funcione con Chef como
si fuera un host administrado.
• También ha desarrollado y mantiene un libro de cocina de Cisco Chef para la infraestructura
NX-OS, disponible en Chef Supermarket.
• También se mantiene un repositorio público de GitHub de libro de cocina y código de
recetas para permitir el control de una amplia gama de productos Cisco.
• La infraestructura Cisco UCS se administra fácilmente con Chef a través de un libro de
cocina que permite la integración con los Controladores de administración integrados.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 80
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef
En este ejemplo se describe cómo instalar Chef y utilizarlo para instalar Apache 2 en un dispositivo.

Instalación de Chef Workstation (Estacion de Trabajo)

Chef Workstation ofrece un entorno de operaciones completo. En el siguiente ejemplo se supone que está
instalando en una máquina virtual Ubuntu 18.04 LTS.
• Si su máquina está configurada con un escritorio estándar, vaya a la página de descargas de Chef
Workstation, busque la descarga de Ubuntu 18.04 e instálelo automáticamente con el administrador de
paquetes Debian.
• Alternativamente, puede instalar desde la línea de comandos copiando la URL del paquete.deb.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 81
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef (Cont.)
Gestión de configuración básica
• Una vez instalada la estación de trabajo, comience a realizar cambios de configuración en los hosts
accesibles.
• Usará el comando chef-run para esto. La primera vez que use chef-run, es posible que se le pida que
acepte los términos de licencia para la utilidad.
• Para el primer ejercicio de configuración, proporcionará la información que Chef necesita para instalar el
paquete ntp . En el proceso, proporcionará el nombre de usuario remoto, su contraseña sudo, el nombre
del target del host remoto y el nombre del verbo del recurso.

• Cuando se instala el cliente, se le entrega la tarea y se completa el proceso. Vuelva de la siguiente


manera:

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 82
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef (Cont.)
Instalar Chef Infra Client
• Chef Infra Client se ejecuta localmente en nodos informáticos convencionales.

• Chef Workstation puede arrancar Infra Client en nodos de destino. También puede preinstalar Infra Client
en nodos, por ejemplo, mientras crea nuevos nodos en una nube pública. A continuación se muestra un
script de ejemplo que puede ejecutar en un host de destino para hacer esto.
• El script utiliza un instalador proporcionado por el chef llamado Omnitruck para hacer esto.También hay
disponible una versión de Windows de este script que se ejecuta en PowerShell:

• Tenga en cuenta que los parámetros mostrados anteriormente instalarán la última versión del cliente
Chef y no anclarán la versión.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 83
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef (Cont.)
Requisitos previos de Chef Infra Server
• Antes de instalar Chef Infra Server, instale openssh-server y habilite el acceso por clave. También se
necesitará instalar NTP para la sincronización de tiempo. Se puede hacer esto con Chef, o
manualmente:

• En un sistema Ubuntu, desactive el servicio desincronización timedatectl predeterminado para evitar que
interfiera con la sincronización NTP:

• Después de instalar NTP, asegúrese de que está sincronizando con un servidor de horas en su grupo
predeterminado. Esto puede tardar unos minutos, así que repita el comando hasta que vea lo siguiente:
• Cuando esto aparezca, puede instalar Chef Infra Server.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 84
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef (Cont.)
Instalar Chef Infra Server
• Chef Infra Server almacena la configuración y la proporciona a los Clientes automáticamente, cuando
se sondea, lo que permite a los Clientes converger a sí mismos en el estado deseado.
• Para instalar Chef Infra Server en Ubuntu 18.04, puede realizar pasos similares a la instalación manual
de Workstation después de obtener la URL del paquete.deb. En el momento de escribir el informe, la
versión estable actual era 13.1.13-1.

• Una vez instalado Chef Infra Server, ejecute el siguiente comando para decirle que lea su configuración
predeterminada, inicialice e inicie todos los servicios.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 85
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef (Cont.)
Instalar Chef-Manage
• También puede instalar la interfaz web para el servidor Chef. Esto se puede hacer ingresando:

• Cuando finalice el proceso, reinicie el servidor y administre los componentes. Estas son las operaciones
del Chef, y pueden tardar un tiempo, como antes.

• El argumento—accept-licenseimpide quechef-manage-ctlse detenga para preguntarle acerca de las


licencias únicas de este producto. Cuando este proceso esté completo, puede visitar la consola en un
navegador a través dehttps://<IP_OF_CHEF_SERVER>
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 86
Herramientas de automatización
Ejemplo de Chef — Instalar y usar Chef (Cont.)
Finalizar la configuración de Workstation (Estacion de Trabajo)
• Antes de que Chef Workstation pueda hablar con su Infra Server, debe hacer un poco de configuración.

• Para empezar, recupere las claves generadas durante la configuración del servidor y guárdelas en la
carpeta /home/myname/.chef creada durante la instalación de la estación de trabajo:

• /ruta/ es la ruta de su directorio principal en el servidor al directorio en el que el servidor almacenó las
claves.
• Si no está utilizando la autenticación por clave para su servidor,scple pedirá su contraseña.
• El . Después del usuario @host: se refiere al directorio principal de su usuario original, desde el que se
indica la ruta.
• La expresión comodín busca los archivos que terminan en .pem en esa ruta de acceso. El punto de
cierre significa copiar al directorio de trabajo actual.
• Ejecute el comando ls desde la carpeta.chefpara ver si sus claves lo hicieron.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 87
Herramientas de automatización
Ejemplo de Chef — Prepararse para usar Knife
Prepararse para usar Knife
Knife es una herramienta para administrar libros de cocina, recetas, nodos y otros activos, y
para interactuar con el Chef Infra Server.
• Dentro de la carpeta.chef , edite el archivo (inicialmente vacío) llamado config.rb e incluya
las siguientes líneas de código, adaptándolas a su entorno:

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 88
Herramientas de automatización
Ejemplo de Chef — Prepararse para usar Knife (Cont.)

• Guarde el archivo config.rb y luego cree el directorio /home/myname/cookbooks.

• Finalmente, ejecute el comando knife ssl fetch.

• Si ha configurado correctamente config.rb, Knife consultará con su servidor, recuperará su


certificado y lo almacenará en el directorio.
• Chef encontrará esto automáticamente cuando sea el momento de conectarse con el
servidor, proporcionando la seguridad de que el servidor es auténtico.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 89
Herramientas de automatización
Ejemplo de Chef — Prepararse para usar Knife(Cont.)
Arranque un nodo objetivo con knife
• Después de configurar Knife, puede arrancar el nodo de destino.

• Para arrancar, ejecute el siguiente comando, reemplazando campos variables con su


información. El comando está configurado para usar la autenticación por clave en el equipo
de destino.
• Los comandos redundantes—sudoy—use-sudo-password indican a Knife que use sudo para
completar su trabajo.
• La opción -P proporciona su contraseña sudo en el equipo de destino.

• <name_for_your_node> es un nombre arbitrario. Elindicador y argumento—ssh-verify-host-key


never hacen que el comando no se detenga y solicite su permiso de forma interactiva si
encuentra que nunca ha iniciado sesión en este servidor antes.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 90
Herramientas de automatización
Ejemplo de Chef — Prepararse para usar Knife(Cont.)

Si el comando funciona correctamente,


recuperaría la salida dada. Tenga en
cuenta que Chef ha detectado la
instalación anterior y no la ha sobrescrito.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 91
Herramientas de automatización
Ejemplo de Chef — Prepararse para usar Knife (Cont.)
Chef Manage muestra su nodo de destino: Ahora, si vuelve a comprobar en su navegador y
actualiza Chef Manage, debería ver que su máquina de destino está siendo administrada por el
servidor.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 92
Herramientas de automatización
Ejemplo de Chef -- Unir Todo
Ahora usará todo junto para crear una receta real, enviarla al servidor y decirle al cliente de la
máquina de destino que requiera y converja en la nueva configuración.
• Para empezar, cree un libro de cocina para construir un sitio web simple. Navegue a su
directorio de libros de cocina, cree un nuevo libro de cocina llamado apache2 y navegue en él.
• Compruebe la estructura de la carpeta del libro de cocina. Ya hay carpetas preparadas para
recetas y atributos. Agregue un directorio opcional y un subdirectorio para contener los
archivos que su receta necesita.
• Los archivos en el subdirectorio /default de un directorio /files dentro de un libro de cocina se
pueden encontrar solo por el nombre de la receta, no se requieren rutas.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 93
Herramientas de Automatización
Ejemplo de Chef — Unir todo (Cont.)
• Ahora cree una página de inicio para su sitio web.

• Guarde el archivo y salga. Navegue al directorio de recetas, donde Chef ya ha creado un


archivo default.rb para nosotros. El archivo default.rb se ejecutará de forma predeterminada
cuando la receta se ejecute con este comando.

• Agregue algunos datos al archivo default.rb y vuelva a editar el archivo.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 94
Herramientas de automatización
Ejemplo de Chef — Unir todo (Cont.)
• El encabezado en la parte superior
se crea para usted. Debajo, la receta
realiza tres acciones.
• El primer recurso que está
invocando apt_update maneja el
gestor de paquetes apt en Debian.
• La función de paquete se utiliza
para instalar el paquete apache2
desde repositorios públicos.
• Por último, utilice el recurso
cookbook_file para copiar el archivo
index.html de /files/default en un
directorio del servidor de destino.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 95
Herramientas de automatización
Ejemplo de Chef — Unir todo (Cont.)
• Guarde el archivo default.rb y, a continuación, cargue el libro de cocina en el servidor.

• A continuación, puede confirmar que el servidor está administrando el nodo de destino.

• La aplicación Knife puede interoperar con su editor favorito. Para habilitar esto, realice la siguiente
exportación con el nombre de su editor:

• Esto permite que el siguiente comando se ejecute de


forma interactiva, poniendo la definición del nodo en vi
para permitirle alterarlo manualmente.
• Como puede ver, la expresión «recipe [apache2]» se ha
añadido a la matriz run_list que contiene una lista
ordenada de las recetas que desea aplicar a este nodo.
• Guardar el archivo de la manera habitual. Knife envía
inmediatamente el cambio al servidor de Infra.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 96
Herramientas de automatización
Ejemplo de Chef — Unir todo (Cont.)
• Finalmente, puede usar el comando knife ssh para identificar el nodo, iniciar sesión en él de
forma no interactiva usando SSH y ejecutar la aplicación chef-client.
• Si todo va bien, Knife devuelve un registro muy largo que muestra exactamente el contenido
del archivo que se sobrescribió, y confirma cada paso de la receta a medida que se ejecuta.
• En este punto, debería poder apuntar un navegador a la dirección IP de la máquina de
destino y ver su nueva página de índice.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 97
Herramientas de automatización
Resumen de herramientas de automatización
Resumen

Esta ha sido una introducción de alto nivel a tres conjuntos de herramientas modernas de DevOps. Ahora
debería estar listo para:
• Implementar e integrar versiones gratuitas de los principales componentes de Ansible, Puppet y/o Chef
en una variedad de sustratos, desde máquinas virtuales de escritorio hasta máquinas virtuales basadas
en la nube en Azure, AWS u otras plataformas de IaaS.
• Experimentar el lenguaje declarativo de cada plataforma, el estilo de construcción y organización de
infraestructura como código, y obtenga una idea del alcance de su biblioteca de recursos, plugins e
integraciones.
• Obtener la práctica de automatizar algunas de las tareas de TI comunes que puede realizar en el trabajo,
o resuelva los desafíos de implementación y administración del ciclo de vida que usted mismo se plantea,
en su laboratorio doméstico.
• Los ejercicios prácticos y el trabajo le darán una idea completa de cómo cada plataforma aborda los
temas de configuración y le ayudarán a superar los desafíos cotidianos de TI.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 98
7.5 Infraestructura como
código

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 99
Infraestructura como código
¿Por qué almacenar infraestructura como código?
El término inmutabilidad se refiere al mantenimiento de sistemas completamente como código, sin realizar
operaciones manuales en ellos en absoluto.

GitOps: infraestructura moderna como código


• GitOps también se conoce como "operaciones por solicitud de extracción."

• En una configuración típica de GitOps, se puede mantener un repositorio, como un repositorio privado en
GitHub, con varias ramas llamadas Desarrollo, Testing/UAT y Producción.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 100
Infraestructura como código
¿Por qué almacenar infraestructura como código? (Cont.)
¿Dónde puede llevar GitOps?

Cuando todos los procedimientos de GitOps, flujo de trabajo y otros componentes están en su lugar, los
desarrolladores pueden considerar la implementación de estrategias de implementación elite.

Implementación azul/verde
• La implementación azul/verde es un método para reducir o eliminar el tiempo de inactividad en entornos
de producción.
• Se requiere mantener dos entornos de producción idénticos (no necesariamente, azul y verde. Cualquier
dos colores como Rojo y Negro servirán).
• También es necesario desarrollar la capacidad de redirigir rápidamente el tráfico de aplicaciones a uno u
otro.

Nota: Algunos practicantes de DevOps diferencian entre estrategias azul/verde y rojo/negro. Dicen que en
azul/verde, el tráfico se migra gradualmente de un entorno a otro, por lo que golpea a ambos sistemas
durante algún período; mientras que en rojo/negro, el tráfico se corta a la vez.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 101
Infraestructura como código
¿Por qué almacenar infraestructura como código? (Cont.)

• Se implementa una versión en el


entorno que no se está utilizando
actualmente (verde). Después de
las pruebas de aceptación, redirija
el tráfico a este entorno.

• Si se encuentran problemas,
vuelva a cambiar el tráfico al
entorno original (Azul).

• Si se considera que la
implementación verde es
adecuada, los recursos propiedad
de la implementación azul se
pueden renunciar e intercambiar
roles para la próxima versión.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 102
Infraestructura como código
¿Por qué almacenar infraestructura como código? (Contd.)
Pruebas Canarias
• Las pruebas canarias son similares al despliegue azul/verde, pero algo más delicado.

• La migración entre implementaciones antiguas y nuevas se realiza cliente por cliente (o


incluso usuario por usuario).
• La migración se realiza para reducir el riesgo y mejorar la calidad de la retroalimentación.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 103
7.6 Automatización de
pruebas

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 104
Automatización de pruebas
Pruebas y validación automatizadas
• Mediante el uso de herramientas de pruebas unitarias como pytest, los desarrolladores pueden construir
un entorno donde el código se puede probar automáticamente cuando se realizan cambios.
• Los marcos de pruebas unitarias hacen que las pruebas sean parte de la base de código, siguiendo el
código a través de confirmaciones de desarrollador, solicitudes de extracción y puertas de revisión de
código a QA/prueba y producción. Este marco de prueba unitaria es útil en entornos de desarrollo basado
en pruebas (TDD).

Los desafíos de probar una red


• El comportamiento y el rendimiento de una red del mundo real son colectivos, mantenidos por las
configuraciones de muchos equipos y software discretos.
• En entornos tradicionales, la conectividad y la funcionalidad se mantienen manualmente en numerosas
piezas individuales de equipos a través de diversas interfaces. Esto es difícil, requiere mucho tiempo,
extremadamente propenso a errores y arriesgado.
• A medida que las redes se vuelven más complejas y llevan tráfico más diverso y sensible al rendimiento,
los riesgos para las degradaciones de seguridad y rendimiento son mayores.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 105
Automatización de pruebas
Pruebas y validación automatizadas (Cont.)
Prueba de redes definidas por software (SDN, Software Defined Networks)

Cisco ha hecho grandes progresos en el desarrollo de redes definidas por software (SDN) y middleware que permiten a los
ingenieros abordar una red física como una única entidad programable. En el caso de Cisco, esto incluye:

• Infraestructura centrada en aplicaciones (ACI)

• Centro de arquitectura de red digital (Cisco DNA Center,Digital Network Architecture Center)

• API REST y SDK permiten la integración con herramientas de automatización como Ansible, Puppet y Chef

Sistema de prueba automatizado de Python (pyATS)

• Python Automated Test System (pyATS) es una solución de prueba y validación de dispositivos de red basada en Python.

• pyATS se originó como la base de Python de bajo nivel para el sistema de prueba en su conjunto.

• Su sistema de bibliotecas de nivel superior, Genie, proporciona las API y bibliotecas necesarias que impulsan e
interactúan con dispositivos de red, y realizan las pruebas reales.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 106
Automatización de pruebas
Pruebas y validación automatizadas (Cont.)
pyATS tiene varias características clave:
• pyATS framework y bibliotecas se pueden aprovechar dentro de cualquier código Python.

• Es modular e incluye componentes como AeTest y Easypy.

• Una CLI permite el interrogatorio rápido de redes en vivo, la extracción de hechos y ayuda a automatizar la
ejecución de scripts de prueba y otros análisis forenses.
• pyATS proporciona una enorme biblioteca de interfaces para Cisco y otras infraestructuras a través de una
amplia gama de interfaces.
• pyATS puede consumir, analizar e implementar topologías descritas en JSON, como modelos YANG y de
otras fuentes.
• pyATS también se puede integrar con herramientas de automatización para la construcción, el
aprovisionamiento y el desmoronamiento.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 107
Automatización de Pruebas
Ejemplo de pyATS
El siguiente contenido muestra cómo utilizar pyATS para crear y aplicar pruebas.

Entornos virtuales

La herramienta pyATS se instala mejor para el trabajo personal dentro de un entorno virtual Python (venv).
• Un venv es un entorno copiado de su entorno base, pero mantenido separado de él.

• Esto le permite evitar instalar software que pueda cambiar permanentemente el estado del sistema.

• Existen entornos virtuales en las carpetas del sistema de archivos. Cuando se crean, se pueden activar,
configurar a voluntad, y los componentes instalados en ellos se pueden actualizar o modificar sin que los
cambios se reflejen en la configuración del host.
• La capacidad de crear entornos virtuales es nativa de Python 3, pero Ubuntu 18.04 puede requerir que
instale un paquete python3-venv por separado.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 108
Automatización de Pruebas
Ejemplo de pyATS (Cont.)
Para crear un venv en Ubuntu 18.04:

• Asegúrese de que python3-pip, el administrador de paquetes Python3, esté en su lugar e instale git.

• Cree un nuevo entorno virtual en el directorio de su elección.

• Venv crea el directorio de trabajo y la estructura de carpetas especificados que contiene funciones y artefactos que describen
la configuración de este entorno.En este punto, puede cd al myproject y activar el venv.

Instalación de pyATS

• Instale los pyATS desde el repositorio público de paquetes Pip (PyPi).

• Compruebe que se instaló enumerando la ayuda, usando pyATS —help.

• Clone el repositorio de scripts de ejemplo pyATS, mantenido por Cisco DevNet, que contiene archivos de ejemplo.

Nota: Puede ver errores «Error al construir la rueda para...<wheelname>» al instalar pyATS. Puede
ignorar con seguridad esos errores ya quepiptiene un plan de copia de seguridad para esos errores
y las dependencias se instalan a pesar de los errores notificados. © 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 109
Pruebas de automatización
Ejemplo de pyATS
Sintaxis de casos de prueba pyATS

• La sintaxis de declaración de prueba para pyATS está inspirada en los marcos de prueba de unidades de Python como
pytest.

• Soporta sentencias de prueba básicas, como una afirmación de que una variable tiene un valor dado, y agrega a eso la
capacidad de proporcionar resultados explícitamente.

Scripts y trabajos pyATS

• Un script pyATS es un archivo Python donde se declaran las pruebas pyATS.

Archivo de prueba pyATS

• Un banco de pruebas puede ser un único archivo YAML o puede ensamblarse mediante programación desde YAML y
Python.

• El archivo testbed es una entrada esencial para el resto de la biblioteca y ecosistema pyATS ya que proporciona
información al marco para cargar el conjunto correcto de API de biblioteca para cada dispositivo, y cómo comunicarse
eficazmente con ellos.

• Los archivos de banco de pruebas reales para topologías grandes pueden ser largos, anidados y complejos.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 110
Pruebas de automatizacion
Ejemplo de pyATS
Biblioteca pyATS: Genie
• Genie es el sistema de biblioteca de nivel superior pyATS que proporciona API para
interactuar con dispositivos, y una potente CLI para la administración de topología y
dispositivos e interrogatorios.
• Cuando se instala, agrega sus características y funcionalidades en el marco pyATS.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 111
Pruebas Automatizadas
Laboratorio: pruebas automatizadas con pyATS y Genie
En esta práctica de laboratorio se cumplirán los siguientes objetivos:
• Parte 1: Iniciar DEVASC VM y CSR1000v VM

• Parte 2: Crear un entorno virtual de Python (venv)

• Parte 3: Uso de la biblioteca de pruebas pyATS

• Parte 4: Presentación de Genie y creación de un archivo de prueba

• Parte 5: Usar Genie para comparar configuraciones

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 112
7.7 Simulación de red

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 113
Simulación de Red
Simulación de red y VIRL
• La simulación de red proporciona un medio para probar las configuraciones de red, depurar el código de
configuración y trabajar con la infraestructura y las API de Cisco y aprender de una manera segura,
conveniente y sin costo prohibitivo.
• El Virtual Internet Routing Laboratory (VIRL) de Cisco es un producto comercial desarrollado
originalmente para uso interno en Cisco, con soporte amplio y activo de la comunidad. Ahora, en la
versión 2, VIRL puede ejecutarse en equipos virtuales de gran tamaño o en varias plataformas de
hipervisores.
• El equipo virtual que se ejecuta dentro de VIRL utiliza el mismo código que se ejecuta dentro de los
productos Cisco reales.

Componentes VIRL y flujo de trabajo


• VIRL proporciona una CLI local para la administración de sistemas, una interfaz REST para la
integración con la automatización y una interfaz de usuario potente que ofrece un entorno gráfico
completo para crear y configurar topologías de simulación.
• La interfaz de usuario viene con varias topologías para empezar. Entre estos se encuentra una
simulación de red IOS de dos enrutadores que se puede activar y explorar rápidamente.
© 2020 Cisco y sus filiales. Todos los derechos reservados.
confidencial de Cisco.
Información
114
Simulación de Red
Simulación de red y VIRL (Cont.)
• La vistaPerspectiva de Diseñode
VIRL permite modificar
simulaciones existentes o
componer nuevas simulaciones
arrastrando, soltando y
conectando entidades de red,
configurándolas.
• La visualización tiene elementos
clicables que exploran la
configuración de entidades y
realizan cambios a través de la
WebUI, o conectándose a
elementos de red a través de la
consola.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 115
Simulación de Red
Simulació de red y VIRL (Cont.)
Archivos VIRL
• Las configuraciones de dispositivo individuales o las configuraciones de red simuladas completas se
pueden extraer como archivos.virl .
• VIRL le permite definir simulaciones como código, lo que permite la integración de ambos modos con otras
plataformas de software para la gestión y las pruebas de red.
• El formato de configuración nativo de VIRL se denomina archivo.virl que es un archivo YAML legible por
humanos.
• El archivo.virl contiene descripciones completas de los enrutadores IOS, sus configuraciones de interfaz y
conexión, credenciales para acceder a ellos y otros detalles.
• Estos archivos se pueden utilizar para iniciar simulaciones a través de la API REST de VIRL y los
archivos.virl se pueden convertir a y desde archivos testbed para utilizarlos con pyATS y Genie.
• El archivo.virl proporciona un método para determinar si se ha producido una desviación de configuración
en la simulación. XZ
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 116
7.8 Resumen de infraestructura
y automatización

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 117
Resumen de infraestructura y automatización
¿Qué aprendí en este módulo?
• La automatización utiliza código para configurar, implementar y administrar aplicaciones junto con las
infraestructuras y servicios de computación, almacenamiento y red en los que se ejecutan.

• La informática en la nube permite a los desarrolladores y operadores utilizar software para solicitar, configurar,
implementar y administrar recursos de computación, almacenamiento y red virtualizados y de almacenamiento.

• Para que la automatización de pila completa sea realmente efectiva, requiere cambios en la cultura
organizacional, incluyendo la ruptura de las divisiones históricas entre Desarrollo (Dev-Development) y
Operaciones (Ops-Operations).

• DevOps/SRE tienen muchos principios básicos y mejores prácticas: un enfoque en la automatización, la idea de
que el fracaso es normal y un replanteamiento de la disponibilidad en términos de lo que un negocio puede tolerar.

• La automatización en la nube le permite aprovisionar hosts virtualizados, configurar redes virtuales y otra
conectividad, servicios de solicitud y, a continuación, implementar aplicaciones en esta infraestructura.

• Tres de las herramientas de automatización más populares son Ansible, Puppet y Chef.

• La inmutabilidad se refiere al mantenimiento de sistemas completamente como código, sin realizar operaciones
manuales en ellos en absoluto.
© 2020 Cisco y sus filiales. Todos los derechos reservados. Información
confidencial de Cisco. 118
Resumen de infraestructura y automatización
¿Qué aprendí en este módulo? (Cont.)

• El marco de pruebas unitarias es útil en entornos de desarrollo basado en pruebas (TDD).

• La simulación de red proporciona un medio para probar las configuraciones de red, depurar el código de
configuración y trabajar con la infraestructura y las API de Cisco y aprender de una manera segura,
conveniente y sin costo prohibitivo.
• El Virtual Internet Routing Laboratory (VIRL) de Cisco puede ejecutarse en máquinas virtuales de gran
tamaño o en varias plataformas de hipervisores.

© 2020 Cisco y sus filiales. Todos los derechos reservados. Información


confidencial de Cisco. 119

También podría gustarte