1. 1
Snappy
La arquitectura que mueve a Ubuntu Core
Presentado por
Sergio Schvezov
sergio.schvezov@canonical.com
@sergiusens
www.canonical.com
Agosto 2015
4. 4
Comencemos por el principio
Manejado por apt.
Ciclo de actualizaciones periódicas.
Paquetes atados al release.
Ubuntu
Ubuntu como comúnmente lo
conocemos
Esta en todas partes.
5. 5
Un paso evolutivo
System Image
click
Seguridad y aislamiento
Frameworks
SDK
Ubuntu Touch
Ubuntu para teléfonos, cambiando el
paradigma que conocíamos.
6. 6
Hasta aquí llegamos
Nueva arquitectura
Transacciones (y Rollbacks)
Maleable
Componentes aislados e independientes
Snappy
Ubuntu Core y Personal tiene una
arquitectura snappy
10. 10
Frameworks
Mediación de recursos compartidos.
No hay conflictos
Frameworks no pueden depender de otros
frameworks.
Pueden proveer políticas de seguridad
adicionales.
Extienden
Los frameworks son una extensión
directa de Ubuntu Core.
12. 12
En las nubes
Imagenes de Vagrant y KVM
sirven para prototipado rápido.
Snappy Ubuntu Core se
encuentra disponible en los
clouds públicos como AWS,
Azure y GCE
También en nubes privadas
13. 13
Contenedores
snappy install docker
snappy install owncloud
O usar docker directament
Para instalar:
https://plus.google.com/+St%C3%A9phaneGraber/posts/a
… usando snappy-remote
21. 21
Snapcraft
Permite integrar fuentes en git, bzr o hg
Compuesto por partes
Extensible mediante plugins
Ciclo de vida: pull, build, stage, snap,
assemble
Ubuntu
Snapcraft permite el crafting de snaps
haciendo facil la incorporación de
elementos desde diferentes fuentes
como GitHub, Launchpad, o npm...
Antes estaba en phone foundations.
Mis responsabilidades:
- snappy: diseño y desarrollo
- ubuntu-device-flash
- oem
- webdm
- bootloaders
En foundations:
- storage
- mms
- notificaciones
- portar/integrar
Maintainer scripts
Cada 6 meses nuevo paquete
Ppa ayudan
Todo tiene una librería compartida (e.g.; Qt, gtk)
Arbol de dependencias grande.
Empaquetar “bien” cuesta.
Confinamiento complicado (apparmor nativo)
Una imagén que es un “todo”
System Image.
Se aplica en función del delta.
Son capas.
lxc
Generalmente actualizaciones pequeñas
Se introduce click:
No hay maintainer scripts
Hay hooks.
Dependencia es el framework.
Ubuntu Store ofrece dinamismo y libertad al desarrollador.
Hay un SDK y en gran parte define el framework.
Confinamiento easy prof
Trusted helpers
Construye sobre el desarrollo de Touch
Todo es un paquete snappy
Migrando de System Image:
Aislamiento total y no capas
Las capas requiren un director de orquestras.
El aislamiento es a traves de interfaces.
La pequeñez y el aislamiento lo hace maleable
Confusión entre snappy y Ubuntu Core
Ubuntu no es apt como Ubuntu Core no es snappy
Todo esta en el store
El framework de click sería el “release”
Los frameworks instalados definen la disponibilidad de app, los frameworks extienden al OS (mir es un framework).
Abstracción de hw sería el kernel y un par de cosas más
Gadget intersecta y define la instalación.
Apps permiten forks.
Hay binarios y servicios
Puede configurar todos los paquetes.
Al requerir políticas especiales y ser tan invasivos, pasan por inspección (lento como debs).
No al fork.
No son librerias
Hoy hay 2, rolling y 15.04
15.04 y todos los releases numerados son estables
No del todo cierto, los releases estables son estables en el canal estable
Edge es el build diario y va iterando hasta llegar al canal estable.
No hay canal estable para rolling
Las instancias t2 micro son gratis por un año en ec2
Usado bastante con docker (dijeron mis compañeros del cloud).
Kvm no es una nube de por si, pero lo que se haga acá se puede llevar a las nubes.
Nubes privadas → openstack
Focalizarse en la úlima milla para construir productos
Se extiende con frameworks si es necesario.
Se configuran con el gadget
Apps le dan proposito al sistema
Pueden o no permitir aplicaciones adicionales dependiendo del dueño del producto.
Erle tiene muchas apps que llama cerebros.
Todo esta en el store
El framework de click sería el “release”
Los frameworks instalados definen la disponibilidad de app
Abstracción de hw sería el kernel y un par de cosas más
Gadget intersecta y define la instalación.
En el OS, aparte de la base hay un stack muy parecido al del telefono.
Unity8
Greeter similar al tablet
Es rolling, se rompe
Saben subir un “deb”, no hablo de gente que se dedica a empaquetar, hablo de alguien que desarrolla algo y quiere que este disponible para los demas.
El store hace chequeos de compliance (seguridad) y si pasa todo sin requerir revisión manual queda automáticamente publicado en los releases elegidos (y prontamente canales).
Idea original era que sirva para device management remoto. Esa funcionalidad esta migrando a snappy.
Partes
- parte central
- independientes entre ellos
- usado para el snap final o para contruir
Plugins:
- go, py2/3, java, c, ubuntu
Ciclo de vida:
- pull → parts/part-name/src
- build → parts/part-name/build, después ../install
- stage → combina todos los parts en ./stage
- snap → partes productivas de stage + ./meta
- assemble → crea el snap
Si hay internet...
Levantar kvm
snappy list/install (forks)
Snapcraft unas fuentes (qml)
Instalar en VM con snappy remote y mostrar el sideload
Mostrar lxc
Mostrar webdm en bbb