Automatización

Infraestructura digital

>

_

Dr. Alfredo de Jesús Gutiérrez Gómez.

Presentación

Instrucciones para la presentación

1.  Piense en el nombre de un animal que inicie con la primera letra de su nombre.

2. Este no deberá repetirse.

3. Al presentarse deberá completar la siguiente frase: Mi nombre es: _______ y he venido sobre un/a: _______ a la escuela desde _____

4. Dar respuesta a las preguntas:

4.1  ¿Porqué estudio está carrera?

4.2  ¿Qué me ha gustado de la carrera hasta ahora?

Temas del curso

Unidad 1.  Seguridad e implementación de aplicaciones

  • Implementación de un entorno de trabajo de desarrollo de software
    • Identificar los entornos de trabajo en el proceso de desarrollo de software.
    • Describir las características de un entorno de desarrollo de software en un flujo de trabajo tradicional.
  • Integración e implementación continua (CI/CD)
    • Identificar las características de la integración continua.
    • Identificar las características de la entrega continua.
    • Identificar las características de la implementación continua.
    • Identificar características de una herramienta de automatización de tareas en CI/CD.

Temas del curso

Unidad 1.  Seguridad e implementación de aplicaciones

  • Seguridad de aplicaciones
    • Identificar diferentes vulnerabilidades en aplicaciones.
    • Identificar ataques en aplicaciones.
    • Describir técnicas de mitigación.

Temas del curso

Unidad 2. Infraestructura y automatización

  • Introducción a la Automatización de la infraestructura.
    • Identificar el origen y evolución de DevOps.
    • Explicar los principios de DevOps.
    • Describir los beneficios de la Automatización de la Infraestructura.

Temas del curso

Unidad 2. Infraestructura y automatización

  • Herramientas de automatización.
    • Describir las características de la automatización secuencial.
    • Describir los beneficios de las herramientas de automatización.
    • Identificar los aspectos críticos de la automatización.
    • Describir componentes de diferentes herramientas de automatización.
  • Infraestructura como código.
    • Definir el concepto de Infraestructura como código.
    • Definir el concepto de Inmutabilidad.
    • Describir el uso del modelo de GitOps.
    • Describir el proceso de pruebas automatizadas a infraestructura como código.

Temas del curso

Unidad 3. Soluciones de redes administradas

  • Programabilidad basado en modelos.
    • Describir la programabilidad basada en modelos de datos.
    • Explicar los beneficios de la programabilidad basada en modelos.
    • Describir la arquitectura de la pila de programabilidad basada en modelos.
    • Diferenciar protocolos de configuración de programabilidad basada en modelos.

Temas del curso

Unidad 3. Soluciones de redes administradas

  • Plataformas de administración de redes.
    • Describir las características de los dispositivos de red programables.
    • Describir los componentes de un controlador de una red definida por software.
    • Describir los componentes de una red administrada en la nube.

Políticas de clase

  • Teléfono móvil en modo silencio.
  • Las llamadas urgentes /prio se contestan fuera del salón.
  • Turnos de una sola persona para ir al WC.
  • Dos faltas a la semana sin justificante perderían derecho a las cuestiones de aprendizaje.
  • Levantar la mano para participar.
  • Respetar la participación de cada alumno.

Lineamientos de clase

  • Mantenerse informado acerca de las lecturas, actividades y tareas del curso asistiendo por lo menos dos veces por semana, durante la duración del curso.
  • Cumplir dentro del aula virtual con todas las tareas, foros y actividades detalladas por el programa académico y el profesor, en el tiempo y forma establecidos.
  • El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso.

Lineamientos de clase

  • Realizar el seguimiento personal desde el Aula Virtual.

  • Estar pendiente de los resultados de las evaluacion/es parcial/es y final/es.

  • Notificar al tutor por escrito, con copia a la coordinación académica, si, por alguna razón excepcional, se encontrara en una circunstancia especial que le impidiera continuar con el curso y recibir así indicaciones de cómo proceder a partir de ese momento.

Descripción de las actividades

Unidad 1 Seguridad e implementación de aplicaciones

  • Proyecto
  • Trabajo
  • Asistencia
  • Cuestionamientos de aprendizaje

Descripción de las actividades

Unidad 2.  Infraestructura y automatización

  • Avance de proyecto
  • Trabajo
  • Asistencia
  • Cuestionamientos de aprendizaje

Descripción de las actividades

Unidad 3 Solución de redes administradas

  • Presentación de proyecto
  • Documentación del proyecto
  • Ranking del proyecto
  • Cuestionamientos de aprendizaje

Actividades de encuadre

Actividades de encuadre

Instrucciones:

  1.  En una hoja escribe la respuesta a la siguiente pregunta:
    1. ¿Qué esperas que se enseñe en este curso?

Tiempo de la actividad: 6 minutos.

Actividades de encuadre

Instrucciones:

  1.  Debajo de la pregunta anterior responde la siguiente cuestión:
    1. ¿A qué te comprometes en este curso?

Tiempo de la actividad: 6 minutos.

Actividades de encuadre

Instrucciones:

  1.  Debajo de la pregunta anterior responde la siguiente cuestión:
    1. ¿Qué deseas aprender en este curso?

Tiempo de la actividad: 6 minutos.

Actividades de encuadre

Una vez contestadas las preguntas anteriores escribir en el foro respectivo la respuesta a cada pregunta.

Tiempo de la actividad: 6 minutos.

Recomendaciones para las actividades

Trabajos:

  • Presentación / portada
  • Introducción
  • Conclusión

Párrafos:

  • Mayores a tres líneas
  • Menores a ocho líneas
  • Coherencia entre párrafos

Ortografía - Gramática

  • Acentuación.
  • Evitar redundancia.
  • Pleonasmos.
  • Mínimo tres errores.

Recomendaciones para las actividades

Referencias bibliográfica

  • Al menos tres citas dentro del trabajo.
  • En formato APA 7ma edición.

Lista referencia bibliográfica

  • Al menos tres fuentes de diversos autores.
  • Con sangría francesa al inicio de cuatro espacios.
  • Fuente Times New Roman.
  • 12 puntos.
  • Sin enlaces activos.

Recomendaciones para las actividades

Introducción y conclusión

  • Al menos tres párrafos.

Formato del trabajo

  • Fuente Arial.
  • Tamaño de título: 14 puntos.
  • Tamaño de texto: 12 puntos.
  • Interlineado 1.5
  • Alineación justificada del texto.
  • Los títulos alineados a la izquierda.
  • En el encabezado del documento colocar el logotipo del instituto alineado a la derecha. Nombre de la carrera a la izquierda.

Recomendaciones para las actividades

Tablas /imágenes / diagramas / gráficas:

  • Colocarle al pie de la imagen / diagrama / gráfica un nombre, bajo el siguiente formato:  <nombre_objeto numero consecutivo>. <nombre_objeto> <fuente:> <donde_fue_tomada> .
  • Colocar un párrafo donde se describa la imagen / diagrama / gráfica

¿Dudas / Preguntas / comentarios?

¿Automatización de la infraestructura digital?

Definiciones

Uso de tecnologías y herramientas para gestionar y operar los recursos de TI (Tecnologías de la Información) de manera automática y con mínima intervención humana.

optimizar el despliegue, la gestión, el monitoreo y la escalabilidad de su infraestructura de TI, que puede incluir servidores, redes, almacenamiento, bases de datos entre otras cosas.

Aspectos básicos

Infraestructura como Código (IaC)

gestionar y aprovisionar la infraestructura de TI mediante archivos de configuración en lugar de configuraciones manuales. Los scripts de IaC permiten definir el estado deseado de la infraestructura y luego aplicar esos estados de manera automatizada.

  • Terraform: Proporciona una plataforma de código abierto para definir, proporcionar y gestionar infraestructura en la nube.
  • Ansible: Utiliza scripts YAML para automatizar la configuración de servidores y la gestión de infraestructura.
  • AWS CloudFormation: Servicio de Amazon que permite definir y gestionar recursos en la nube de AWS.

Aspectos básicos

Orquestación

Coordina y gestiona las tareas automatizadas en diferentes sistemas, asegurando que se ejecuten en el orden correcto y con las dependencias adecuadas.

  • Kubernetes: Orquesta contenedores y asegura su disponibilidad, escalabilidad y distribución.
  • Jenkins: Automáticamente orquesta el proceso de integración continua y entrega continua (CI/CD) para el desarrollo de software.

Aspectos básicos

Gestión y Configuración Automatizada

Automatizar la configuración de servidores y otros dispositivos para asegurar que sigan las políticas establecidas.

Chef y Puppet: Herramientas que permiten definir y aplicar configuraciones en servidores de forma repetible y escalable.

Aspectos básicos

Monitoreo y Automatización de Respuesta

Monitoreo automatizado permiten la supervisión continua de la infraestructura y pueden ejecutar acciones automáticas en respuesta a eventos o condiciones predefinidas.

  • Prometheus: Sistema de monitoreo y alerta para infraestructura, especialmente en entornos de contenedores.
  • Nagios: Solución de monitoreo para toda la infraestructura de TI, que incluye servidores, aplicaciones y redes.

Ventajas

Escalabilidad

Permite escalar la infraestructura rápidamente para adaptarse a las demandas crecientes, sin la necesidad de intervención manual.

Al automatizar procesos repetitivos, se minimizan los errores humanos, lo que resulta en una infraestructura más confiable y segura.

Reducción de Errores

Ventajas

Velocidad y Agilidad

La automatización acelera el despliegue y la configuración de recursos, permitiendo a las organizaciones responder rápidamente a las necesidades del negocio.

Asegura que las configuraciones y políticas se apliquen de manera uniforme en toda la infraestructura, lo que es crucial en entornos de TI complejos.

Consistencia

Ventajas

Costos Reducidos

Al optimizar el uso de recursos y reducir la necesidad de intervención manual, la automatización puede conducir a una disminución en los costos operativos.

Aplicaciones

Despliegue Automatizado

Desplegar aplicaciones y servicios en entornos de producción sin intervención manual, asegurando consistencia y rapidez.

Infraestructura Dinámica

Gestionar infraestructuras que escalen automáticamente en respuesta a la demanda, utilizando recursos de nube pública o privada.

Aplicaciones

Gestión de Configuraciones

Asegurar que las configuraciones del sistema se mantengan alineadas con las políticas corporativas y se adapten automáticamente a los cambios.

Recuperación ante Desastres

Automatizar la recuperación de sistemas críticos después de una falla, reduciendo significativamente el tiempo de inactividad.

Desafios

Complejidad Inicial

La configuración inicial de un sistema de automatización puede ser compleja y requiere una planificación cuidadosa.

Capacitación del Personal

El personal de TI necesita capacitación para gestionar y mantener infraestructuras automatizadas, lo que puede requerir inversión en tiempo y recursos.

Dependencia de Herramientas

Las organizaciones pueden volverse dependientes de herramientas específicas, lo que podría ser un riesgo si esas herramientas dejan de ser soportadas o actualizadas.

Identificar los entornos de trabajo en el proceso de desarrollo de software

# seg. App
  •  Garantiza un ciclo de desarrollo ágil, colaborativo y eficiente.
  • Permiten a los equipos de desarrollo, pruebas y operaciones trabajar de manera coordinada, utilizando herramientas y procesos que automatizan y gestionan la infraestructura de forma óptima. 

Principales Entornos de Trabajo en el Desarrollo de Software

# seg. App

Entorno de Desarrollo (Development Environment)

Este es el entorno donde los desarrolladores escriben, prueban y depuran el código. Suele ser un entorno aislado que permite experimentar sin afectar otros sistemas.

Automatización y Herramientas Clave

  • Version Control (Git): Facilita la colaboración y gestión de cambios en el código.
  • CI/CD Pipelines: Integrar código automáticamente en un entorno centralizado para pruebas continuas.
  • Infraestructura como Código (IaC): Permite a los desarrolladores aprovisionar recursos como servidores o contenedores mediante scripts automatizados, como Terraform o Ansible.

Principales Entornos de Trabajo en el Desarrollo de Software

# seg. App

Beneficios

  • Mayor rapidez en la creación de entornos de trabajo.
  • Reducción de error humanos y configuraciones inconsistentes gracias a la automatización.

Actividad de Aprendizaje

# seg. App
  1. Google Frexus.
  2. Seleccionar la opción: Generando Valor Agregado.
  3. Pulse en el menú Academía.
  4. Haga clic sobre el nombre de la materia.
  5. Aperture el recurso: Infraestructura IaC

Integración e implementación continua (CI/CD)

# Auto-Infraestructura

La Integración Continua (CI) y la Implementación Continua (CD), comúnmente denominadas CI/CD, son prácticas esenciales en el desarrollo de software moderno que buscan automatizar y mejorar la eficiencia del ciclo de vida del software, desde su creación hasta su despliegue.

Integración e implementación continua (CI/CD)

# Auto-Infraestructura

Aspectos claves

Automatización de pruebas: Cada vez que se realiza una nueva integración de código, un sistema automatizado ejecuta pruebas para asegurar que los nuevos cambios no introduzcan errores o rompan funcionalidades existentes.

Compilaciones automáticas: El sistema CI realiza compilaciones automáticas del proyecto para verificar que todo el código se puede integrar correctamente.

Integración e implementación continua (CI/CD)

# Auto-Infraestructura

Aspectos claves

Retroalimentación rápida: Los desarrolladores reciben comentarios inmediatos sobre la calidad de su código y la compatibilidad con el sistema completo.

El proceso de CI permite a los equipos detectar problemas rápidamente y resolverlos antes de que se conviertan en grandes obstáculos.

# Auto-Infraestructura

Implementación Continua (CD)

La Implementación Continua es una extensión de la CI que automatiza el proceso de entrega de software a entornos de producción (o casi producción, como un entorno de prueba o staging). Esta práctica garantiza que el software siempre esté en un estado desplegable.

# Auto-Infraestructura

Implementación Continua (CD)

  • Entrega Continua (Continuous Delivery): En esta variante, el software es automáticamente preparado para ser desplegado en producción. El despliegue final requiere una intervención manual para la aprobación.
  • Despliegue Continuo (Continuous Deployment): En este enfoque más avanzado, todo el ciclo de desarrollo está automatizado, y cualquier cambio que pase las pruebas automáticas es desplegado directamente en producción sin intervención humana.

Aspectos claves

# Auto-Infraestructura
  • Detección temprana de errores: La integración y pruebas frecuentes permiten identificar y corregir errores rápidamente.
  • Despliegue rápido: Los procesos automatizados reducen el tiempo necesario para llevar nuevas funcionalidades al usuario final.
  • Mejora de la calidad del software: Las pruebas automatizadas y las revisiones continuas garantizan una mayor calidad y estabilidad en el software.
  • Colaboración eficiente: Facilita el trabajo en equipo, ya que se minimizan los conflictos de integración y cada miembro tiene visibilidad sobre el estado del proyecto.

Ventaja CI/CD

# Auto-Infraestructura
  • Jenkins: Una plataforma de automatización extensible utilizada para la integración y despliegue continuo.
  • GitLab CI/CD: Ofrece una solución completa para CI/CD directamente integrada en la plataforma GitLab.
  • CircleCI: Conocido por su simplicidad y rapidez en la ejecución de pipelines CI/CD.
  • Travis CI: Popular en proyectos de código abierto, ofrece integración con GitHub.

 

Herramientas comunes

# Auto-Infraestructura
  1. Realiza una investigación a fondo sobre las herramientas que permiten hacer CI/CD
  2. Luego Genera una tabla que permita describir las ventajas, desventajas, facilidad de configuración,  si es open sources o hay que pagar una licencia, si es visual o con manejo de script, sistemas operativos soportados y proyectos en los que suele usarse

Actividad de aprendizaje

# Auto-Infraestructura

Avance de proyecto

# Auto-Infraestructura

Ejecutando contenedores

Instalar Docker - Windows

  • Descarga Docker Desktop desde la página oficial de Docker.
  • Asegúrate de tener WSL 2 (Windows Subsystem for Linux) activado, ya que Docker utiliza WSL 2 para ejecutar contenedores de Linux en Windows.
  • Sigue las instrucciones del instalador para completar la configuración.
  • Reinicia tu computadora si es necesario.
# Auto-Infraestructura

Ejecutando contenedores

Instalar Docker - MacOsX

  • Descarga Docker Desktop desde la página oficial de Docker.
  • Sigue las instrucciones de instalación, aceptando los permisos solicitados.
  • Docker Desktop en macOS utiliza HyperKit para ejecutar contenedores.
# Auto-Infraestructura

Ejecutando contenedores

Instalar Docker - linux

sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
# Auto-Infraestructura

Ejecutando contenedores

Instalar Docker - Verificar la ejecución de docker en la terminal

docker --version

Si se esta ejecutando correctamente debe de salir algo como lo siguiente

# Auto-Infraestructura

Ejecutando contenedores

Crear un fichero docker-compose.yml

Ayudara a gestionar los servicios de Apache, PHP y MySQL es la forma más sencilla.

Crea un directorio y dentro de él se creará el archivo docker-compose.yml con la siguiente estructura. Usa el comando mkdir para la creación de la carpeta

# Auto-Infraestructura

Ejecutando contenedores

Crear un fichero docker-compose.yml

version: '3.8'
services:
	web:
      image: php:7.4-apache
      container_name: webserver
      volumes:
         - ./html:/var/www/html
      ports:
         - "8080:80"
      depends_on:
         - db  
    
    db:
      image: mysql:5.7
      container_name: mysqlserver
      environment:
          MYSQL_ROOT_PASSWORD: example
          MYSQL_DATABASE: mydb
          MYSQL_USER: user
          MYSQL_PASSWORD: userpass
      volumes:
          - db_data:/var/lib/mysql
      ports:
          - "3306:3306"
    
    volumes:
        db_data:

Este fichero configura el contenedor apache/php y mysql

# Auto-Infraestructura

Ejecutando contenedores

Crear la estructura de archivos y directorios

Crea un directorio llamado html dentro de tu directorio de proyecto, que contendrá los archivos web. También, añade un archivo PHP de prueba.

<?php
phpinfo();
?>

Escribe el siguiente contenido básico en el archivo index.php:

Se recomienda usar el comando mkdir para la creación de directorios

# Auto-Infraestructura

Ejecutando contenedores

Levantar los contenedores con Docker Compose

Abre una terminal  y navega hasta el directorio donde se encuentra tu archivo docker-compose.yml. Luego, ejecuta el siguiente comando:

docker-compose up -d

Esto descargará las imágenes necesarias (Apache, PHP y MySQL) y levantará los contenedores

# Auto-Infraestructura

Ejecutando contenedores

Acceder a tu servidor web

Abre un navegador web y accede a http://localhost:8080. Se Debe ver la página de información de PHP que configuraste en el archivo index.php.

# Auto-Infraestructura

Ejecutando contenedores

Probar la conexión con MySQL

Crea otro archivo PHP para probar la conexión con la base de datos. Añade el siguiente código en un archivo llamado dbtest.php dentro del directorio html:

# Auto-Infraestructura

Ejecutando contenedores

Probar la conexión con MySQL

<?php
$servername = "db";
$username = "user";
$password = "userpass";
$dbname = "mydb";

// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificar conexión
if ($conn->connect_error) {
    die("Conexión fallida: " . $conn->connect_error);
}
echo "Conexión exitosa";
?>

Accede a http://localhost:8080/dbtest.php para ver si la conexión con la base de datos es exitosa.

# Auto-Infraestructura

Ejecutando contenedores

Probar la conexión con MySQL

FROM PHP:7.4-apache

RUN docker-php-ext-install mysqli

Si causa un error de que no tiene instalada la librería mysqli crea un fichero docker-file.yml y guardalo alado del docker-compose.yml

# Auto-Infraestructura

Ejecutando contenedores

Administrar contenedores

docker ps

Ver los contenedores en ejecución

docker-compose logs

Ver los logs de los contenedores

docker-compose down

Detener los contenedores

docker-compose restart web

Reiniciar un contenedor específico (ej. Apache)

# Auto-Infraestructura

Actividad de aprendizaje

  • Googlea: Frexus.
  • Pulsa en la opción: Generando Valor Agregado
  • Has clic en el menú academia.
  • Selecciona el nombre de la materia.
  • Lee el recurso: MSSQL en docker
  • Crea una base de datos en msslql