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

Documentos relacionados