Python para DevOps

Book description

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

La tecnología ha cambiado mucho en la última década. Los datos están de moda, la nube es omnipresente y muchas organizaciones necesitan alguna forma de automatización. A lo largo de estas transformaciones, Python se ha convertido en uno de los lenguajes más populares del mundo. Este práctico recurso te muestra cómo utilizar Python para las tareas cotidianas de administración de sistemas Linux con las herramientas DevOps más útiles de la actualidad, como Docker, Kubernetes y Terraform.

Aprender a interactuar y automatizar con Linux es esencial para millones de profesionales. Python lo hace mucho más fácil. Con este libro, aprenderás a desarrollar software y resolver problemas utilizando contenedores, así como a supervisar, instrumentar, realizar pruebas de carga y poner en funcionamiento tu software. ¿Buscas formas eficaces de "hacer cosas" en Python? Esta es tu guía.

  • Fundamentos de Python, incluida una breve introducción al lenguaje
  • Cómo automatizar texto, escribir herramientas de línea de comandos y automatizar el sistema de archivos
  • Utilidades de Linux, gestión de paquetes, sistemas de compilación, supervisión e instrumentación, y pruebas automatizadas
  • Computación en la nube, infraestructura como código, Kubernetes y sin servidor
  • Operaciones de aprendizaje automático e ingeniería de datos desde una perspectiva DevOps
  • Creación, despliegue y puesta en marcha de un proyecto de aprendizaje automático

Table of contents

  1. Prefacio
    1. ¿Qué significa DevOps para los autores?
    2. Cómo utilizar este libro
      1. Temas conceptuales
    3. Convenciones utilizadas en este libro
    4. Utilizar ejemplos de código
    5. Aprendizaje en línea O'Reilly
    6. Cómo contactar con nosotros
    7. Agradecimientos
      1. Noah
      2. Kennedy
      3. Alfredo
      4. Grig
  2. 1. Fundamentos de Python para DevOps
    1. Instalar y ejecutar Python
      1. La cáscara de Python
      2. Cuadernos Jupyter
    2. Programación procedimental
      1. Variables
      2. Matemáticas básicas
      3. Comentarios
      4. Funciones incorporadas
      5. Imprimir
      6. Gama
    3. Control de ejecución
      1. if/elif/else
      2. para Bucles
    4. Bucles while
    5. Manejo de excepciones
    6. Objetos incorporados
      1. ¿Qué es un objeto?
      2. Métodos y atributos de los objetos
      3. Secuencias
    7. Funciones
      1. Anatomía de una función
      2. Funciones como objetos
      3. Funciones anónimas
    8. Utilizar expresiones regulares
      1. Buscando en
      2. Juegos de caracteres
      3. Clases de personajes
      4. Grupos
      5. Grupos designados
      6. Buscar todo
      7. Buscar Iterador
      8. Sustitución
      9. Compilando
    9. Evaluación perezosa
      1. Generadores
      2. Comprensiones del generador
    10. Más funciones de IPython
      1. Utilizar IPython para ejecutar comandos de Unix Shell
    11. Ejercicios
  3. 2. Automatizar archivos y el sistema de archivos
    1. Leer y escribir archivos
    2. Utilizar expresiones regulares para buscar texto
    3. Tratar con archivos grandes
    4. Cifrar texto
      1. Hashing con Hashlib
      2. Cifrado con criptografía
    5. El módulo os
    6. Gestión de archivos y directorios con os.path
    7. Recorrer árboles de directorios con os.walk
    8. Rutas como objetos con Pathlib
  4. 3. Trabajar con la línea de comandos
    1. Trabajar con el caparazón
      1. Hablar con el Intérprete con el Módulo sys
      2. Tratar con el sistema operativo utilizando el módulo os
      3. Generar procesos con el módulo subproceso
    2. Crear herramientas de línea de comandos
      1. Utilizar sys.argv
      2. Utilizar argparse
      3. Mediante clic
      4. fuego
      5. Implementar Plug-ins
    3. Caso práctico: Turbocharging Python with Command-Line Tools (Turboalimentación de Python con herramientas de línea de comandos)
      1. Utilizar el compilador Numba Just-in-Time (JIT)
      2. Uso de la GPU con CUDA Python
      3. Ejecutar Python multihilo multinúcleo real utilizando Numba
      4. Agrupación KMeans
    4. Ejercicios
  5. 4. Utilidades útiles de Linux
    1. Utilidades de disco
      1. Medir el rendimiento
      2. Particiones
      3. Recuperar información específica del dispositivo
    2. Utilidades de red
      1. Túnel SSH
      2. Benchmarking HTTP con Apache Benchmark (ab)
      3. Pruebas de carga con molotov
    3. Utilidades de la CPU
      1. Ver procesos con htop
    4. Trabajar con Bash y ZSH
      1. Personalizar el shell de Python
      2. Globbing recursivo
      3. Buscar y sustituir con preguntas de confirmación
      4. Eliminar archivos temporales de Python
      5. Procesos de listado y filtrado
      6. Marca de tiempo Unix
    5. Mezclar Python con Bash y ZSH
      1. Generador de contraseñas aleatorias
      2. ¿Existe mi módulo?
      3. Cambiar directorios a la ruta de un módulo
      4. Convertir un archivo CSV a JSON
    6. Monólogos de Python
      1. Depuradores
      2. ¿Cómo de rápido es este fragmento?
    7. strace
    8. Ejercicios
    9. Pregunta de un caso práctico
  6. 5. Gestión de paquetes
    1. ¿Por qué es importante el envasado?
      1. Cuando el envasado puede no ser necesario
    2. Normas de envasado
      1. Versionado descriptivo
      2. El registro de cambios
    3. Elegir una estrategia
    4. Soluciones de envasado
      1. Empaquetado nativo en Python
      2. Empaquetado Debian
      3. Embalaje RPM
    5. Gestión con systemd
      1. Procesos de larga duración
      2. Puesta en marcha
      3. El archivo de unidad systemd
    6. Instalación de la unidad
      1. Manipulación de registros
    7. Ejercicios
    8. Pregunta de un caso práctico
  7. 6. Integración continua e Implementación continua
    1. Caso práctico real: Conversión de un sitio WordPress mal mantenido a Hugo
      1. Configurar Hugo
      2. Convertir WordPress a Hugo Posts
      3. Crear un índice Algolia y actualizarlo
      4. Orquestar con un Makefile
      5. Implementación con AWS CodePipeline
    2. Caso práctico real: Implementación de una aplicación Python App Engine con Google Cloud Build
    3. Estudio de un caso real: NFSOPS
  8. 7. Monitoreo y registro
    1. Conceptos clave para construir sistemas fiables
    2. Principios inmutables de DevOps
      1. Registro centralizado
      2. Caso práctico: La base de datos de producción acaba con los discos duros
      3. ¿Lo construiste o lo compraste?
      4. Tolerancia a fallos
    3. Monitoreo
      1. Grafito
      2. StatsD
      3. Prometeo
    4. Instrumentación
      1. Convenciones de nomenclatura
    5. Registro
      1. ¿Por qué es difícil?
      2. La configuración básica
      3. Configuración más profunda
      4. Patrones comunes
    6. La pila ELK
      1. Logstash
      2. Elasticsearch y Kibana
    7. Ejercicios
    8. Pregunta de un caso práctico
  9. 8. Pytest para DevOps
    1. Probando superpotencias con pytest
    2. Primeros pasos con pytest
      1. Pruebas con pytest
      2. Diferencias con unittest
    3. pytest Características
      1. conftest.py
      2. El asombroso aserto
      3. Parametrización
    4. Accesorios
      1. Cómo empezar
      2. Empotrables
    5. Pruebas de infraestructura
      1. ¿Qué es la validación del sistema?
      2. Introducción a Testinfra
      3. Conexión a nodos remotos
      4. Características y accesorios especiales
    6. Ejemplos
    7. Probar cuadernos Jupyter con pytest
    8. Ejercicios
    9. Pregunta de un caso práctico
  10. 9. Computación en la nube
    1. Fundamentos del Cloud Computing
    2. Tipos de computación en nube
    3. Tipos de servicios en la nube
      1. Infraestructura como servicio
      2. Metal como servicio
      3. Plataforma como servicio
      4. Computación sin servidor
      5. Software como servicio
    4. Infraestructura como código
    5. Entrega continua
    6. Virtualización y contenedores
      1. Virtualización del hardware
      2. Redes definidas por software
      3. Almacenamiento definido por software
      4. Contenedores
    7. Retos y oportunidades de la informática distribuida
    8. Python Concurrencia, Rendimiento y Gestión de Procesos en la Era de la Nube
    9. Gestión de procesos
      1. Gestionar Procesos con Subproceso
      2. Utilizar el multiprocesamiento para resolver problemas
      3. Procesos bifurcados con Pool()
      4. Función como servicio y sin servidor
      5. Python de alto rendimiento con Numba
      6. Utilizar el compilador Numba Just in Time
      7. Utilizar servidores de alto rendimiento
    10. Conclusión
    11. Ejercicios
    12. Preguntas del caso práctico
  11. 10. Infraestructura como código
    1. Clasificación de las herramientas de automatización de infraestructuras
    2. Aprovisionamiento manual
    3. Aprovisionamiento automatizado de infraestructuras con Terraform
      1. Aprovisionar un Bucket S3
      2. Aprovisionar un certificado SSL con AWS ACM
      3. Aprovisionamiento de una distribución de Amazon CloudFront
      4. Aprovisionamiento de un registro DNS de Route 53
      5. Copiar archivos estáticos a S3
      6. Eliminar todos los recursos de AWS aprovisionados con Terraform
    4. Aprovisionamiento automatizado de infraestructuras con Pulumi
      1. Crear un nuevo proyecto Pulumi Python para AWS
      2. Crear valores de configuración para la pila de preparación
      3. Aprovisionar un certificado SSL ACM
      4. Aprovisionamiento de una zona Route 53 y registros DNS
      5. Aprovisionamiento de una distribución de CloudFront
      6. Aprovisionar un registro DNS Route 53 para la URL del sitio
      7. Creación e Implementación de una Nueva Pila
    5. Ejercicios
  12. 11. Tecnologías de contenedores: Docker y Docker Compose
    1. ¿Qué es un contenedor Docker?
    2. Crear, construir, ejecutar y eliminar imágenes y contenedores Docker
    3. Publicación de imágenes Docker en un Registro Docker
    4. Ejecutar un contenedor Docker con la misma imagen en un host diferente
    5. Ejecutar varios contenedores Docker con Docker Compose
    6. Portar los servicios docker-compose a un nuevo host y sistema operativo
    7. Ejercicios
  13. 12. Orquestación de contenedores: Kubernetes
    1. Breve descripción de los conceptos de Kubernetes
    2. Uso de Kompose para crear manifiestos de Kubernetes a partir de docker-compose.yaml
    3. Implementación de manifiestos de Kubernetes en un clúster local de Kubernetes basado en minikube
    4. Lanzamiento de un clúster de Kubernetes GKE en GCP con Pulumi
    5. Implementación de la aplicación de ejemplo Flask en GKE
    6. Instalación de los gráficos de Helm de Prometheus y Grafana
    7. Destruir el Cluster GKE
    8. Ejercicios
  14. 13. Tecnologías sin servidor
    1. Implementación de la misma función Python en los "tres grandes" proveedores de la nube
      1. Instalación del Framework Sin Servidor
      2. Implementación de una función Python en AWS Lambda
      3. Implementación de funciones Python en Google Cloud Functions
      4. Implementación de funciones Python en Azure
    2. Implementación de una función Python en plataformas FaaS autoalojadas
      1. Implementación de funciones Python en OpenFaaS
    3. Aprovisionamiento de tabla DynamoDB, funciones Lambda y métodos de puerta de enlace de API mediante AWS CDK
    4. Ejercicios
  15. 14. MLOps e Ingeniería de aprendizaje automático
    1. ¿Qué es el aprendizaje automático?
      1. Aprendizaje automático supervisado
      2. Modelado
    2. Ecosistema Python de aprendizaje automático
      1. Aprendizaje profundo con PyTorch
    3. Plataformas de aprendizaje automático en la nube
    4. Modelo de madurez del aprendizaje automático
      1. Terminología clave del aprendizaje automático
      2. Nivel 1: Encuadre, identificación del alcance y definición del problema
      3. Nivel 2: Entrega continua de datos
      4. Nivel 3: Entrega continua de datos limpios
      5. Nivel 4: Entrega continua de Análisis Exploratorio de Datos
      6. Nivel 5: Entrega continua de ML tradicional y AutoML
      7. Nivel 6: Bucle de retroalimentación operativo ML
    5. Sklearn Flask con Kubernetes y Docker
    6. Sklearn Flask con Kubernetes y Docker
      1. EDA
      2. Modelado
      3. Sintonizar GBM escalado
      4. Modelo de ajuste
      5. Evalúa
      6. adhoc_predecir
      7. Flujo de trabajo JSON
      8. Entrada de escala
      9. adhoc_predict de Pickle
      10. Entrada de escala
    7. Ejercicios
    8. Pregunta de un caso práctico
    9. Evaluaciones del aprendizaje
  16. 15. Ingeniería de datos
    1. Datos pequeños
      1. Tratar con archivos de datos pequeños
    2. Escribir un archivo
    3. Leer un archivo
    4. Tubería generadora para leer y procesar líneas
    5. Utilizar YAML
    6. Grandes datos
    7. Herramientas, componentes y plataformas de Big Data
      1. Fuentes de datos
      2. Sistemas de archivos
      3. Almacenamiento de datos
    8. Ingestión de flujo en tiempo real
    9. Caso práctico: Creación de una canalización de datos propia
    10. Ingeniería de datos sin servidor
      1. Uso de AWS Lambda con eventos de CloudWatch
      2. Uso de Amazon CloudWatch Logging con AWS Lambda
      3. Uso de AWS Lambda para poblar Amazon Simple Queue Service
      4. Cableado del activador de eventos de CloudWatch
      5. Crear lambdas controladas por eventos
      6. Lectura de eventos de Amazon SQS desde AWS Lambda
    11. Conclusión
    12. Ejercicios
    13. Pregunta de un caso práctico
  17. 16. Historias de guerra y entrevistas sobre DevOps
    1. El estudio de cine no puede hacer películas
    2. Un estudio de juegos no puede enviar el juego
    3. Los scripts de Python tardan 60 segundos en iniciarse
    4. Apagar un incendio con una caché e instrumentación inteligente
    5. ¡Te automatizarás y te quedarás sin trabajo!
    6. Antipatrones DevOps
      1. Antipatrón de servidor de compilación no automatizado
      2. Volar a ciegas
      3. Dificultades en la Coordinación como Realización Continua
      4. Sin trabajo en equipo
    7. Entrevistas
      1. Glenn Solomon
      2. Andrew Nguyen
      3. Gabriella Roman
      4. Rigoberto Roche
      5. Jonathan LaCour
      6. Ville Tuulos
      7. Joseph Reis
      8. Teijo Holzer
      9. Matt Harrison
      10. Michael Foord
    8. Recomendaciones
    9. Ejercicios
    10. Desafíos
    11. Proyecto final
  18. Índice

Product information

  • Title: Python para DevOps
  • Author(s): Noah Gift, Kennedy Behrman, Alfredo Deza, Grig Gheorghiu
  • Release date: September 2024
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098186425