Infraestructura distribuida para la construcción de paquetes Debian
Transcripción
Infraestructura distribuida para la construcción de paquetes Debian
Infraestructura distribuida para la construcción de paquetes Debian José Luis Sanroma Tato Introducción Problema Antecedentes Objetivos Desarrollo Contenidos 1. Introducción 2. Problema 3. Antecedentes 4. Objetivos 5. Desarrollo 6. Conclusiones José Luis Sanroma Tato 2 Introducción Problema Antecedentes Objetivos Desarrollo Motivaciones ● Redes ● Proyecto de software Libre ● Estudiar y conocer más acerca de Debian GNU/Linux ● Aprender a empaquetar y distribuir software José Luis Sanroma Tato 3 Introducción Problema Antecedentes Objetivos Desarrollo Debian José Luis Sanroma Tato 4 Introducción Problema Antecedentes Objetivos Desarrollo Debian Software Libre José Luis Sanroma Tato 5 Introducción Problema Antecedentes Objetivos Desarrollo Debian Software Libre José Luis Sanroma Tato Gratuito 6 Introducción Problema Antecedentes Objetivos Desarrollo Debian Software Libre Gratuito Mantenido por voluntarios José Luis Sanroma Tato 7 Introducción Problema Antecedentes Objetivos Desarrollo Debian Software Libre Gratuito 12 arquitecturas Mantenido por voluntarios José Luis Sanroma Tato 8 Introducción Problema Antecedentes Objetivos Desarrollo Debian Gratuito Software Libre 12 arquitecturas Madre de muchas distros Mantenido por voluntarios José Luis Sanroma Tato 9 Introducción Problema Antecedentes Objetivos Desarrollo ¿Por qué empaquetar software? José Luis Sanroma Tato 10 Introducción Problema Antecedentes Objetivos Desarrollo ¿Por qué hay un problema? José Luis Sanroma Tato 11 Introducción Problema Antecedentes Objetivos Desarrollo Laboratorio ARCO ● Distintas arquitecturas (i386, amd64, arm ,etc) ● No hay infraestructura dedicada ● ● ● Computadores no disponibles Sin saber cuando estarán disponibles Necesidades especiales José Luis Sanroma Tato 12 Introducción Problema Antecedentes Objetivos Desarrollo Debian en sus inicios José Luis Sanroma Tato 13 Introducción Problema Antecedentes Objetivos Desarrollo Debian en sus inicios ● Developers vigilaban las nuevas versiones ● Intel y m68k ● Listas de correo José Luis Sanroma Tato 14 Introducción Problema Antecedentes Objetivos Desarrollo Debian Autobuilder Network ● Red de autocompiladores ● Gestiona construcción para otras aquitecturas: ● Varias máquinas con buildd: – Encargado de coger los paquetes del repositorio y reconstruirlos – Compuesto por: ● ● ● Wanna-build Buildd Sbuild José Luis Sanroma Tato 15 Introducción Problema Antecedentes Objetivos Desarrollo DAN: wanna-build ● Coordina la reconstrucción ● Cada arquitectura tiene una base de datos ● Ftp-master y secutity-master ● Estados: needs-build failed building not-for-us uploaded installed dep-wait José Luis Sanroma Tato 16 Introducción Problema Antecedentes Objetivos Desarrollo DAN: wanna-build ● ● needs-build: nueva versión del paquete =>rebuild building: una máquina ha cogido el paquete para contruirlo ● uploaded: se sube el paquete ● dep-wait: faltan build-deps ● failed: falla la construcción ● installed: es aceptado en el archivo José Luis Sanroma Tato 17 Introducción Problema Antecedentes Objetivos Desarrollo DAN: buildd ● ● Comprueba periodicamente las bases de datos de wanna-build Si hay algún cambio llama a sbuild para construir los paquetes José Luis Sanroma Tato 18 Introducción Problema Antecedentes Objetivos Desarrollo DAN: sbuild ● ● ● Responsable de la construcción en entornos limpios Se asegura que las dependencias de construcción estén instaladas Utiliza las herramientas de Debian para el proceso de construcción José Luis Sanroma Tato 19 Introducción Problema Antecedentes Objetivos Desarrollo Problema de usar DAN ● Máquinas dedicadas a la construcción de paquetes para servirlos en los repositorios oficiales. ● Sigue la Debian Policy ● Estructura dificil de configurar y mantener ● Excede las necesidades ● Puede haber otras necesitades: – Versiones específicas de paquetes José Luis Sanroma Tato 20 Introducción Problema Antecedentes Objetivos Desarrollo ¿Qué se necesita? ● Infraestructura distribuida para construir paquetes en un repositorio ● Automatización en la construcción ● Soporte para multiples arquitecturas ● Fácil de instalar, configurar y mantener ● Información frente a fallos José Luis Sanroma Tato 21 Introducción Problema Antecedentes Objetivos Desarrollo Arquitectura del sistema José Luis Sanroma Tato 22 Introducción Problema Antecedentes Objetivos Desarrollo Arquitectura del sistema Developers: suben los paquetes al repo Repositorio: Sirve los paquetes Cliente: Hace peticiones de construcción Manager: Dado un paquete genera su árbol de dependencias Workers: Realizan la construcción en entornos aislados José Luis Sanroma Tato 23 Introducción Problema Antecedentes Objetivos Desarrollo Sistema base José Luis Sanroma Tato 24 Introducción Problema Antecedentes Objetivos Desarrollo Sistema base ● Construcción de un entorno mínimo para simular una red ● 1 Máquina virtual de i386 y otra amd64 ● Zeroc Ice ● Hello world! ● Libvirt José Luis Sanroma Tato 25 Introducción Problema Antecedentes Objetivos Desarrollo Sistema base amd64 José Luis Sanroma Tato i386 26 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes José Luis Sanroma Tato 27 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes ● ● Las dependencias ensucian el sistema – Paquetes innecesarios – Pueden convertir al sistesma en inestable En Debian: – pbuilder – Deb-o-matic – Otros. José Luis Sanroma Tato 28 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes ● Pbuilder – Probado y funciona – Construye paquetes para varias ramas – No construye para multi arquitectura (se necesitan otras arquitecturas José Luis Sanroma Tato 29 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes ● Deb-o-matic – Se basa en pbuilder – Soporta plugins – Subida automática a repositorio – Firmado de paquetes José Luis Sanroma Tato 30 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes ● Máquinas virtuales con sistema mínimo José Luis Sanroma Tato 31 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes ● Máquinas virtuales con sistema mínimo – Se puede detener la construcción: snapshots – Da soporte a más arquitecturas: qemu – Tarda más en la construcción – El espacio no es problema – Instalación automática (preseeding) – Construcción multi arquitectura en una misma máquina – No tienen Ice José Luis Sanroma Tato 32 Introducción José Luis Sanroma Tato Problema Antecedentes Objetivos Desarrollo 33 Introducción José Luis Sanroma Tato Problema Antecedentes Objetivos Desarrollo 34 Introducción Problema Antecedentes Objetivos Desarrollo Entorno limpio para construir paquetes 1) iniciar 6) instalar build-deps 2) update 7) construir paquete 3) upgrade 8) recuperar estado 4) crear snapshot 9) borrar snapshot 5) obtener fuente 10) apagar José Luis Sanroma Tato 35 Introducción Problema Antecedentes Objetivos Desarrollo Persistencia José Luis Sanroma Tato 36 Introducción Problema Antecedentes Objetivos Desarrollo Persistencia ● Zeroc Ice – Freeze: ● ● Background Save Evictor Transactional Evictor José Luis Sanroma Tato 37 Introducción Problema Antecedentes Objetivos Desarrollo Persistencia: background save evictor ● Guarda sirvientes en un mapa ● Escribe el estado de forma asíncrona José Luis Sanroma Tato 38 Introducción Problema Antecedentes Objetivos Desarrollo Persistencia: Transactional evictor ● Transacciones ● Se lleva a cabo inmediatamente o se deshace ● Más lento ● Recuperable frente a fallos ● Unidad atómica: 1 paquete José Luis Sanroma Tato 39 Introducción SL José Luis Sanroma Tato Problema Antecedentes Objetivos Desarrollo start update upgrade createSnapshot source buildDependencies buildPackage sign upload revertSnapshot deleteSnapshot turnOff 40 Introducción Problema Antecedentes Objetivos Desarrollo Patrones de diseño ● Soluciones bien conocidas y probadas ● Reutilización para otros propósitos ● Buena solución al problema ● Este caso : – Composite – Command José Luis Sanroma Tato 41 Introducción Problema Antecedentes Objetivos Desarrollo Patrón composite-command ● Composite pattern – Patrón de diseño estructural – Representa jerarquías de objetos – Estructura en forma de árbol para dependencias José Luis Sanroma Tato 42 Introducción ● Problema Antecedentes Objetivos Desarrollo Patrón composite-command Command pattern – Encapsula peticiones como objetos – Operación «restaurar» – Operaciones para construir los paquetes José Luis Sanroma Tato 43 Introducción Problema Antecedentes Objetivos Desarrollo Patrón composite-command José Luis Sanroma Tato 44 Introducción SL CompositeCommand Problema Antecedentes Objetivos Desarrollo start update upgrade createSnapshot source buildDependencies buildPackage sign upload revertSnapshot deleteSnapshot turnOff SimpleCommands José Luis Sanroma Tato 45 Introducción Problema Antecedentes Objetivos Desarrollo Dependencias de construcción José Luis Sanroma Tato 46 Introducción Problema Antecedentes Objetivos Desarrollo Dependencias de construcción ● P1 P1 ● P2 P2 P3 P3 P4 P4 P5 P5 José Luis Sanroma Tato ● Las build-dep deben estar instaladas Si no existen hay que construirlas Estructura arbórea y jerárquica que representa las build-dep 47 Introducción Problema Antecedentes Objetivos Desarrollo Manager para generar dependencias ● Build-dep instaladas antes de construir el paquete ● Build-dep tienen a su vez otras build-dep ● DFS para generar las dependencias ● Se recorre el árbol y se envían a los workers en recorrido inverso José Luis Sanroma Tato 48 Introducción Problema Antecedentes Objetivos Desarrollo P1 P1 P2 P2 P3 P3 P4 P4 P5 P5 José Luis Sanroma Tato 49 Introducción Problema Antecedentes Objetivos Desarrollo Conclusiones José Luis Sanroma Tato 50 Introducción Problema Antecedentes Objetivos Desarrollo Conclusiones ● Entorno limpio para construir paquetes ● Generación de paquetes multi arquitectura ● Sabemos los computadores disponibles (IceGrid) ● Transaccional => tolerable a fallos ● Reutilizable para otros propósitos José Luis Sanroma Tato 51