SlideShare une entreprise Scribd logo
1  sur  42
LES PAQUETS SNAPS
« Les paquets d’applications Linux universels, nouvelle génération »
«D’abord qui, ensuite quoi ! »
PRESENTATION
Prénom NOM : Vincent JOBARD
Surnom : Winael
Blog : https://winael.github.io
Email : vinzjobard@ubuntu.com
Wiki : https://wiki.ubuntu.com/Winael
@vinzjobard
vincent-jobard-26b046117
Vincent JOBARD
+Vincent JOBARD
Plan de la séance
I - Les snaps, qu’est-ce que c’est ?
II - Oui, mais qu’est-ce que cela nous apporte ?
III - Et comment ça marche ?
IV - Mais quels sont les avantages ?
V - Peut-on imaginer un système complet avec des snaps ?
VI - Quelle est la différence entre conteneurisation et
confinement ?
VII - Essayez snapd par vous-même
VIII - Questions fréquentes
IX - Vos questions
LES SNAPS
Qu’est-ce que c’est ?
A L’ORIGINE
A l’origine
> Version 2.0 du paquet click développé pour l’univers mobile sous
Ubuntu
> Format de paquet conçu pour Snappy Ubuntu Core
> D’abord sur le Cloud (Décembre 2014)
> Puis sur l’Internet des objets (Courant 2015)
A L’ORIGINE
Pendant la Keynote d’UbuCon Summit en Janvier
2016, Mark Shuttleworth a annoncé l'arrivée des
snaps sur la version traditionnelle du poste de
travail pour Ubuntu 16.04 LTS.
Les snaps sur le poste de travail
Mark Shuttleworth, fondateur de Canonical et Ubuntu
ET MAINTENANT ?
> Le 14 juin, les snaps s’ouvrent au
monde Linux au travers du projet
snapcraft.io.
> Grâce aux efforts conjoints des développeurs
d’Ubuntu, d’Arch Linux, de Fedora, de Gentoo, et
de Debian, snapd est porté sur ces plateformes
> Le paquet d’installation snap devient un paquet d’application
Linux Universel, s’installant aussi bien sur de l’IdO, du poste de
travail, des serveurs ou du Cloud
MAIS QU’EST-CE QUE
CELA NOUS APPORTE ?
LES PAQUETS LINUX TRADITIONNELS
> Durs à réaliser
> Des formats adaptés à chaque
“transporteurs” (distributions)
> Besoin de mainteneurs pour chaque
transporteurs, qui n’a pas forcément le
même contexte utilisateur
> Les projets en amont ne maîtrisent pas la
livraison des mises à jour
Ils sont...
PROBLEMES RENCONTRES
Avec les paquets Linux traditionnels
> Collusions (plusieurs paquets incluent le même
fichier dans des versions différentes)
> Incompatibilité des APIs, ou des comportements
entre les applications
> Lors de l’installation les paquets ont accès root à
l’ensemble des fichiers du système en lecture écriture
PROBLEMES RENCONTRES
Avec les paquets Linux traditionnels
TOUT LE SYSTÈME PEUT ÊTRE
ENDOMMAGÉ LORS D’UNE MISE A
JOUR
ET COMMENT CA
MARCHE ?
ET TECHNIQUEMENT ?
Un snap est une archive
squashfs :
> contenant du code et
des actifs
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
> montée en lecture seule
(mises à jour
transactionnelles,
intégrité du contenu, …)
> offrant une compression
de 1 pour 3
ET TECHNIQUEMENT ?
Un snap peut offrir un ou
plusieurs services (démon,
interface en ligne de
commande, interface
graphique, …).
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
Service Service CLI GUI
Un snap est multi-
processus.
ET TECHNIQUEMENT ?
Un snap a accès à des
zones en lecture et
écriture :
> Des zones partagées par
l’ensemble des utilisateurs du
système, et seulement accessible
en écriture par root (pour les
services, par ex.)
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
> Des zones utilisateur, et
seulement accessible en écriture
par l’utilisateur dans son propre
répertoire
> Certains chemins sont
versionnés, à chaque mise à jour,
les données sont copiées dans un
nouveau répertoire. Les autres
sont communs à toutes les
versions du snap
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
Service Service CLI GUI
Zone d’écriture versionnée root
(pour les services)
$SNAP_DATA
Zone d’écriture versionnée user
$SNAP_USER_DATA
Zone d’écriture commune root
(pour les services)
$SNAP_COMMON
Zone d’écriture commune user
$SNAP_USER_COMMON
ET TECHNIQUEMENT ?
Chaque processus est isolé
des autres, donc par ex.,
chacun va avoir son propre
répertoire /tmp.
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
Service Service CLI GUI
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
Service Service CLI GUI
Zone d’écriture versionnée root
(pour les services)
$SNAP_DATA
Zone d’écriture versionnée user
$SNAP_USER_DATA
Zone d’écriture commune root
(pour les services)
$SNAP_COMMON
Zone d’écriture commune user
$SNAP_USER_COMMON
Zone d’écriture versionnée root
(pour les services)
$SNAP_DATA
Zone d’écriture versionnée user
$SNAP_USER_DATA
Zone d’écriture commune root
(pour les services)
$SNAP_COMMON
Zone d’écriture commune user
$SNAP_USER_COMMON
/tmp
(par service et processus applicatif)
ET TECHNIQUEMENT ?
Certains accès sont
facultatifs (/home,
/dev/<devices>, ....) et
sont contrôlé par les
interfaces et les prises.
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
Service Service CLI GUI
Zone d’écriture versionnée root
(pour les services)
$SNAP_DATA
Zone d’écriture versionnée user
$SNAP_USER_DATA
Zone d’écriture commune root
(pour les services)
$SNAP_COMMON
Zone d’écriture commune user
$SNAP_USER_COMMON
/tmp
(par service et processus
applicatif)
~
/dev/<device>
/sys
/
(from ubuntu-core snap)
/var/lib/snapd/hostfs
(/ from host)
Ils sont globalement isolés
du reste du système, et
ont un accès refusé.
ET TECHNIQUEMENT ?
Chaque snap peut être
mis à jour et annulé (y
compris les données!)
Indépendamment (et
même automatiquement
via le bilan de santé) !
code du snap & actifs
(squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>)
$SNAP
Service Service CLI GUI
Zone d’écriture versionnée root
(pour les services)
$SNAP_DATA
Zone d’écriture versionnée user
$SNAP_USER_DATA
Zone d’écriture commune root
(pour les services)
$SNAP_COMMON
Zone d’écriture commune user
$SNAP_USER_COMMON
/tmp
(par service et processus
applicatif)
~
/dev/<device>
/sys
/
(from ubuntu-core snap)
/var/lib/snapd/hostfs
(/ from host)
Comment les snaps
interagissent entre eux ?
snap applicatifsnap applicatif
zone d’écriture du
snap
zone d’écriture du
snap
Les applications sont confinées et isolées
snap applicatif
zone d’écriture du
snap
snap applicatif
zone d’écriture du
snap
A
(consomme)
B
(fournit)
plug slot
Les applications sont isolées via
AppArmor et SecComp. Elles ne
peuvent lire les fichiers des autres.
Comment les snaps
interagissent entre eux ?
snap applicatifsnap applicatif
zone d’écriture du
snap
zone d’écriture du
snap
Les applications sont confinées et isolées
snap applicatif
zone d’écriture du
snap
snap applicatif
zone d’écriture du
snap
A
(consomme)
B
(fournit)
plug slot
Le contrôle est fin :
> Les snaps peuvent avoir
plusieurs services et
commandes, partageant
le même système de
fichiers
> Les applications du même
composant peuvent
envoyer des signaux entre
les processus.
> Les snaps peuvent
demander et exposer des
interfaces claires et
définies, réutilisables par
d’autres snaps
Comment les snaps
interagissent entre eux ?
snap applicatifsnap applicatif
zone d’écriture du
snap
zone d’écriture du
snap
Les applications sont confinées et isolées
snap applicatif
zone d’écriture du
snap
snap applicatif
zone d’écriture du
snap
A
(consomme)
B
(fournit)
plug slot
Aucun script n’est exécuté
en tant que root lors de
l’installation ou de la
suppression !
Mais quels sont les
avantages ?
LES AVANTAGES DES SNAPS
Pour VLC
VLC
Pour les développeurs :
> système d’empaquettement facile
> n’avoir à empaqueter qu’une seule fois
> avoir le contrôle de la livraison des versions
Pour les utilisateurs :
> bénéficient de la dernière version, quelles que soient la
distribution Linux utilisée parmis les suivantes.
LES AVANTAGES DES SNAPS
Pour NextCloud
Pour les développeurs :
> Réduction de la fragmentation des versions des
distributions, ils contrôlent le délai de livraison des
mises à jour.
> Ils contrôlent leurs dépendances, ce qui est expédié est
ce que l'utilisateur obtiendra.
> Les snaps ont une isolation d'application (la boîte de
Nextcloud avec des applications de tiers installées).
Pour les utilisateurs :
> Ils obtiennent la version exacte et le contexte que les
développeurs ont testé.
> Ils réduisent leur Time-To-Market pour produire la
NextCloud Box.
> Processus robuste de mise à jour avec possibilité de
retour arrière
LES AVANTAGES DES SNAPS
Pour RocketChat
Pour les développeurs :
> Mise à disposition de versions différentes dans les
canaux de mise à jour sélectionnables par l'utilisateur
(edge, beta, candidate, stable ...)
> Peut être installé sur plusieurs systèmes, comme la
boîte Nextcloud !
Pour les utilisateurs :
> Ils peuvent facilement devenir des bêta-testeurs
> Peut s’installer comme n’importe quel autre paquet,
via la ligne de commande ou la logithèque. La
configuration de RocketChat passe de 3h à moins d’une
minute !
Peut-on imaginer un
système complet basé
sur des snaps ?
Ubuntu Core
Un système complet basé sur les snaps
> L’intégrité du code est assurée par des archives
squashfs signées en lecture seule
Une manière moderne de construire une
distribution Linux
Architecture système modulaire en Snaps
Snap Noyau
Snap Base
Snap Gadget
Snap
ApplicatifSnap applicatif
Snap
Applicatif
Snap Interface de contenu
> Pas besoin de reconstruire ou de re-flasher une
image entière pour une seul changement applicatif
Quelle est la différence
entre conteneurisation
et confinement ?
Docker/LXD vs Snaps
Docker et LXD fournissent de la conteneurisation :
> Processus unique ou propre contrôle de processus
Snap fournit du confinement :
> Noyau partagé, propre système de fichiers/réseau
> Les paquets des applications s’exécutent comme n’importe
quel autre processus du système
> Noyau/réseau partagé, système de fichiers propre
> Processus gérés par des outils traditionnels
> Pas de routage réseau compliqué
> Les fichiers sont directement accessibles
> Prise en charge de plusieurs utilisateurs
LXD
snap
Essayez snapd par vous
même !
(Démo Time !)
Installer et exécuter un
snap
Démo 1
Services et commandes dans un snap
Démo 2
Mise à jour, changement de version et désinstallation d’un snap
Démo 3
Un snap plus complexe : face-detection-demo
Démo 4 (partie 1)
> Installation de face-detection-demo
> L’interface web est disponible à l’adresse
http://localhost:8080
> On peut activer la caméra soit dans
l’interface, soit via la commande face-
detection-demo --enable-camera
> La commande communique (via un socket
Unix) avec notre service, qui est branché à la
caméra et écoute le réseau.
Un snap plus complexe : face-detection-demo
Démo 4 (partie 2)
> Mise à jour vers la dernière version à tester
> C’est cassé et nos données sont corrompues!
> Il faut donc faire un retour arrière
> Testons la nouvelle version :
http://localhost:8080
Un snap plus complexe : face-detection-demo
Démo 4 (partie 3)
> Retour arrière vers la dernière version fonctionnelle
> Tout est revenu à la normal
> Re-testons la nouvelle version :
http://localhost:8080
Questions fréquentes
QUESTIONS DE BASES SUR
LES SNAPS
QUESTIONS FRÉQUENTES
> Les snaps remplacent-elles les paquet rpm ou deb ?
Non (pour le système de base).
> La même snap fonctionnera-t-elle sur n’importe quelle
distribution supportant les snaps ?
Oui.
> Les snaps ont-elles un lien avec les paquets click
d’Ubuntuphone ?
Oui, c’est en quelque sorte les paquets clicks 2.0.
> Les snaps sont-elles totalement isolées ou supportent-elles
les bibliothèques partagées ?
Il existe un système d'interface à relier au système.
Les bibliothèques partagées sont possibles via des interfaces de contenu,
privées pour les développeurs.
> Comment les snaps gèrent-elles les systèmes multi
utilisateurs ?
Les snaps sont installées globalement pour tous les utilisateurs.
Chaque utilisateur dispose de données utilisateur distinctes.
QUESTIONS SUR LES DÉPÔTS
ET MAGASINS DE SNAPS
QUESTIONS FRÉQUENTES
> Un magasin tiers est-il possible ?
Oui, il peut y avoir un magasin de marque (hébergé par Canonical)
ou la mise en place d’un magasin open source tiers.
> Les snaps peuvent-elles être installées sans passer par un
dépôt ou un magasin ?
Oui, les snaps peuvent être installées localement
(en fonction des possibilités offertes par votre appareil).
> Comment les espaces de noms sont-ils gérés avec les snaps ?
Les conflits de nom de snaps sont-ils possibles ?
Les espaces de noms sans suffixe sont réservés à la gestion officielle de projets.
Les snaps non officielles doivent utiliser un espace de noms basé sur un suffixe.
QUESTIONS SUR LA
CONSTRUCTION DES SNAPS
QUESTIONS FRÉQUENTES
> Quel outils pour créer un snap ?
Il y a un outil : Snapcraft.
- Vous pouvez écrire un fichier snapcraft.yaml et construire votre snap
- Ou vous pouvez déverser votre logiciel déjà construit dans un répertoire, y
ajouter des métadonnées et exécuter "snapcraft snap dir/"
On peut aussi utiliser des usines logicielles :
- Launchpad
- https://build.snapcraft.io/ + https://github.com (Ne prends pas en compte les
PPAs)
> Est-ce qu’il est possible pour de multiples développeurs,
comme par exemple une équipe de gérer le même snap ?
Oui.
> Comment la sécurité des bibliothèques tierces est-elle gérée ?
Les bibliothèques sont exécutées comme votre application, et donc confinées.
Le système des “parties” de snapcraft avec des parties venant du nuage vous permet
de reconstruire facilement votre logiciel et de le tester avec de nouveaux correctifs de
sécurité avant de les publier.
Avez-vous des questions?
MERCI !

Contenu connexe

Tendances

Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Christian Charreyre
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedAnne Nicolas
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1mazurus
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging Anne Nicolas
 
Passé, présent et futur de l'interface unifiée d'Ubuntu
Passé, présent et futur de l'interface unifiée d'UbuntuPassé, présent et futur de l'interface unifiée d'Ubuntu
Passé, présent et futur de l'interface unifiée d'UbuntuVincent JOBARD
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas yassine87
 
Cours linux intermediaire
Cours linux intermediaireCours linux intermediaire
Cours linux intermediaireGrenois Sempre
 
memoire utilisation de Puppet et Nagios
memoire utilisation de Puppet et Nagiosmemoire utilisation de Puppet et Nagios
memoire utilisation de Puppet et Nagiosabouaalexis
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssdAnthony Le Goff
 
Systémes d'exploitation
Systémes d'exploitationSystémes d'exploitation
Systémes d'exploitationSelman Dridi
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linuxembedded-linux-bdx
 

Tendances (20)

Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015
 
Vagrant - Concept
Vagrant - ConceptVagrant - Concept
Vagrant - Concept
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Meetup Systemd vs sysvinit
Meetup Systemd vs sysvinitMeetup Systemd vs sysvinit
Meetup Systemd vs sysvinit
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Puppet slides
Puppet slidesPuppet slides
Puppet slides
 
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
 
cours Lunix
cours Lunixcours Lunix
cours Lunix
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
Open Recipes - hubs : du packaging en solo à l'industrialisation du packaging
 
Passé, présent et futur de l'interface unifiée d'Ubuntu
Passé, présent et futur de l'interface unifiée d'UbuntuPassé, présent et futur de l'interface unifiée d'Ubuntu
Passé, présent et futur de l'interface unifiée d'Ubuntu
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
sshGate
sshGatesshGate
sshGate
 
Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas Mise en place de Nagios3 pas à pas
Mise en place de Nagios3 pas à pas
 
Cours linux intermediaire
Cours linux intermediaireCours linux intermediaire
Cours linux intermediaire
 
memoire utilisation de Puppet et Nagios
memoire utilisation de Puppet et Nagiosmemoire utilisation de Puppet et Nagios
memoire utilisation de Puppet et Nagios
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssd
 
Systémes d'exploitation
Systémes d'exploitationSystémes d'exploitation
Systémes d'exploitation
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 

Similaire à Les paquets snaps « les paquets d’applications linux universels, nouvelle génération »

Premiers pas avec snort
Premiers pas avec snortPremiers pas avec snort
Premiers pas avec snortFathi Ben Nasr
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
Subversion - Utilisation et bonnes pratiques
Subversion - Utilisation et bonnes pratiquesSubversion - Utilisation et bonnes pratiques
Subversion - Utilisation et bonnes pratiquesJérôme Vieilledent
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsThierry Gayet
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3Nicolas Lœuillet
 
Les Variables d'environnement sous linux
Les Variables d'environnement sous linuxLes Variables d'environnement sous linux
Les Variables d'environnement sous linuxSebane Diouf
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxThierry Gayet
 
Reu 2014 automne
Reu 2014 automneReu 2014 automne
Reu 2014 automnejcmmarques
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOpsJeoffrey Bauvin
 
Mdl ocsinventory 20100330
Mdl ocsinventory 20100330Mdl ocsinventory 20100330
Mdl ocsinventory 20100330robertpluss
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natifHenri Gomez
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2tikok974
 
installation et configuration des systèmes linux.pptx
installation et configuration des systèmes linux.pptxinstallation et configuration des systèmes linux.pptx
installation et configuration des systèmes linux.pptxMarcelinKamseu
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2tikok974
 

Similaire à Les paquets snaps « les paquets d’applications linux universels, nouvelle génération » (20)

Premiers pas avec snort
Premiers pas avec snortPremiers pas avec snort
Premiers pas avec snort
 
Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
Subversion - Utilisation et bonnes pratiques
Subversion - Utilisation et bonnes pratiquesSubversion - Utilisation et bonnes pratiques
Subversion - Utilisation et bonnes pratiques
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Parinux 2009
Parinux 2009Parinux 2009
Parinux 2009
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Les Variables d'environnement sous linux
Les Variables d'environnement sous linuxLes Variables d'environnement sous linux
Les Variables d'environnement sous linux
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU Linux
 
Reu 2014 automne
Reu 2014 automneReu 2014 automne
Reu 2014 automne
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOps
 
Journées du Logiciel Libre 2008
Journées du Logiciel Libre 2008Journées du Logiciel Libre 2008
Journées du Logiciel Libre 2008
 
Mdl ocsinventory 20100330
Mdl ocsinventory 20100330Mdl ocsinventory 20100330
Mdl ocsinventory 20100330
 
Jenkins
JenkinsJenkins
Jenkins
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2
 
installation et configuration des systèmes linux.pptx
installation et configuration des systèmes linux.pptxinstallation et configuration des systèmes linux.pptx
installation et configuration des systèmes linux.pptx
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2
 

Les paquets snaps « les paquets d’applications linux universels, nouvelle génération »

  • 1. LES PAQUETS SNAPS « Les paquets d’applications Linux universels, nouvelle génération » «D’abord qui, ensuite quoi ! »
  • 2. PRESENTATION Prénom NOM : Vincent JOBARD Surnom : Winael Blog : https://winael.github.io Email : vinzjobard@ubuntu.com Wiki : https://wiki.ubuntu.com/Winael @vinzjobard vincent-jobard-26b046117 Vincent JOBARD +Vincent JOBARD
  • 3. Plan de la séance I - Les snaps, qu’est-ce que c’est ? II - Oui, mais qu’est-ce que cela nous apporte ? III - Et comment ça marche ? IV - Mais quels sont les avantages ? V - Peut-on imaginer un système complet avec des snaps ? VI - Quelle est la différence entre conteneurisation et confinement ? VII - Essayez snapd par vous-même VIII - Questions fréquentes IX - Vos questions
  • 5. A L’ORIGINE A l’origine > Version 2.0 du paquet click développé pour l’univers mobile sous Ubuntu > Format de paquet conçu pour Snappy Ubuntu Core > D’abord sur le Cloud (Décembre 2014) > Puis sur l’Internet des objets (Courant 2015)
  • 6. A L’ORIGINE Pendant la Keynote d’UbuCon Summit en Janvier 2016, Mark Shuttleworth a annoncé l'arrivée des snaps sur la version traditionnelle du poste de travail pour Ubuntu 16.04 LTS. Les snaps sur le poste de travail Mark Shuttleworth, fondateur de Canonical et Ubuntu
  • 7. ET MAINTENANT ? > Le 14 juin, les snaps s’ouvrent au monde Linux au travers du projet snapcraft.io. > Grâce aux efforts conjoints des développeurs d’Ubuntu, d’Arch Linux, de Fedora, de Gentoo, et de Debian, snapd est porté sur ces plateformes > Le paquet d’installation snap devient un paquet d’application Linux Universel, s’installant aussi bien sur de l’IdO, du poste de travail, des serveurs ou du Cloud
  • 8. MAIS QU’EST-CE QUE CELA NOUS APPORTE ?
  • 9. LES PAQUETS LINUX TRADITIONNELS > Durs à réaliser > Des formats adaptés à chaque “transporteurs” (distributions) > Besoin de mainteneurs pour chaque transporteurs, qui n’a pas forcément le même contexte utilisateur > Les projets en amont ne maîtrisent pas la livraison des mises à jour Ils sont...
  • 10. PROBLEMES RENCONTRES Avec les paquets Linux traditionnels > Collusions (plusieurs paquets incluent le même fichier dans des versions différentes) > Incompatibilité des APIs, ou des comportements entre les applications
  • 11. > Lors de l’installation les paquets ont accès root à l’ensemble des fichiers du système en lecture écriture PROBLEMES RENCONTRES Avec les paquets Linux traditionnels TOUT LE SYSTÈME PEUT ÊTRE ENDOMMAGÉ LORS D’UNE MISE A JOUR
  • 13. ET TECHNIQUEMENT ? Un snap est une archive squashfs : > contenant du code et des actifs code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP > montée en lecture seule (mises à jour transactionnelles, intégrité du contenu, …) > offrant une compression de 1 pour 3
  • 14. ET TECHNIQUEMENT ? Un snap peut offrir un ou plusieurs services (démon, interface en ligne de commande, interface graphique, …). code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP Service Service CLI GUI Un snap est multi- processus.
  • 15. ET TECHNIQUEMENT ? Un snap a accès à des zones en lecture et écriture : > Des zones partagées par l’ensemble des utilisateurs du système, et seulement accessible en écriture par root (pour les services, par ex.) code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP > Des zones utilisateur, et seulement accessible en écriture par l’utilisateur dans son propre répertoire > Certains chemins sont versionnés, à chaque mise à jour, les données sont copiées dans un nouveau répertoire. Les autres sont communs à toutes les versions du snap code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP Service Service CLI GUI Zone d’écriture versionnée root (pour les services) $SNAP_DATA Zone d’écriture versionnée user $SNAP_USER_DATA Zone d’écriture commune root (pour les services) $SNAP_COMMON Zone d’écriture commune user $SNAP_USER_COMMON
  • 16. ET TECHNIQUEMENT ? Chaque processus est isolé des autres, donc par ex., chacun va avoir son propre répertoire /tmp. code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP Service Service CLI GUI code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP Service Service CLI GUI Zone d’écriture versionnée root (pour les services) $SNAP_DATA Zone d’écriture versionnée user $SNAP_USER_DATA Zone d’écriture commune root (pour les services) $SNAP_COMMON Zone d’écriture commune user $SNAP_USER_COMMON Zone d’écriture versionnée root (pour les services) $SNAP_DATA Zone d’écriture versionnée user $SNAP_USER_DATA Zone d’écriture commune root (pour les services) $SNAP_COMMON Zone d’écriture commune user $SNAP_USER_COMMON /tmp (par service et processus applicatif)
  • 17. ET TECHNIQUEMENT ? Certains accès sont facultatifs (/home, /dev/<devices>, ....) et sont contrôlé par les interfaces et les prises. code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP Service Service CLI GUI Zone d’écriture versionnée root (pour les services) $SNAP_DATA Zone d’écriture versionnée user $SNAP_USER_DATA Zone d’écriture commune root (pour les services) $SNAP_COMMON Zone d’écriture commune user $SNAP_USER_COMMON /tmp (par service et processus applicatif) ~ /dev/<device> /sys / (from ubuntu-core snap) /var/lib/snapd/hostfs (/ from host) Ils sont globalement isolés du reste du système, et ont un accès refusé.
  • 18. ET TECHNIQUEMENT ? Chaque snap peut être mis à jour et annulé (y compris les données!) Indépendamment (et même automatiquement via le bilan de santé) ! code du snap & actifs (squashfs, monté-lié en lecture seule dans /snap/<nom-du-snap>/<version>) $SNAP Service Service CLI GUI Zone d’écriture versionnée root (pour les services) $SNAP_DATA Zone d’écriture versionnée user $SNAP_USER_DATA Zone d’écriture commune root (pour les services) $SNAP_COMMON Zone d’écriture commune user $SNAP_USER_COMMON /tmp (par service et processus applicatif) ~ /dev/<device> /sys / (from ubuntu-core snap) /var/lib/snapd/hostfs (/ from host)
  • 19. Comment les snaps interagissent entre eux ? snap applicatifsnap applicatif zone d’écriture du snap zone d’écriture du snap Les applications sont confinées et isolées snap applicatif zone d’écriture du snap snap applicatif zone d’écriture du snap A (consomme) B (fournit) plug slot Les applications sont isolées via AppArmor et SecComp. Elles ne peuvent lire les fichiers des autres.
  • 20. Comment les snaps interagissent entre eux ? snap applicatifsnap applicatif zone d’écriture du snap zone d’écriture du snap Les applications sont confinées et isolées snap applicatif zone d’écriture du snap snap applicatif zone d’écriture du snap A (consomme) B (fournit) plug slot Le contrôle est fin : > Les snaps peuvent avoir plusieurs services et commandes, partageant le même système de fichiers > Les applications du même composant peuvent envoyer des signaux entre les processus. > Les snaps peuvent demander et exposer des interfaces claires et définies, réutilisables par d’autres snaps
  • 21. Comment les snaps interagissent entre eux ? snap applicatifsnap applicatif zone d’écriture du snap zone d’écriture du snap Les applications sont confinées et isolées snap applicatif zone d’écriture du snap snap applicatif zone d’écriture du snap A (consomme) B (fournit) plug slot Aucun script n’est exécuté en tant que root lors de l’installation ou de la suppression !
  • 22. Mais quels sont les avantages ?
  • 23. LES AVANTAGES DES SNAPS Pour VLC VLC Pour les développeurs : > système d’empaquettement facile > n’avoir à empaqueter qu’une seule fois > avoir le contrôle de la livraison des versions Pour les utilisateurs : > bénéficient de la dernière version, quelles que soient la distribution Linux utilisée parmis les suivantes.
  • 24. LES AVANTAGES DES SNAPS Pour NextCloud Pour les développeurs : > Réduction de la fragmentation des versions des distributions, ils contrôlent le délai de livraison des mises à jour. > Ils contrôlent leurs dépendances, ce qui est expédié est ce que l'utilisateur obtiendra. > Les snaps ont une isolation d'application (la boîte de Nextcloud avec des applications de tiers installées). Pour les utilisateurs : > Ils obtiennent la version exacte et le contexte que les développeurs ont testé. > Ils réduisent leur Time-To-Market pour produire la NextCloud Box. > Processus robuste de mise à jour avec possibilité de retour arrière
  • 25. LES AVANTAGES DES SNAPS Pour RocketChat Pour les développeurs : > Mise à disposition de versions différentes dans les canaux de mise à jour sélectionnables par l'utilisateur (edge, beta, candidate, stable ...) > Peut être installé sur plusieurs systèmes, comme la boîte Nextcloud ! Pour les utilisateurs : > Ils peuvent facilement devenir des bêta-testeurs > Peut s’installer comme n’importe quel autre paquet, via la ligne de commande ou la logithèque. La configuration de RocketChat passe de 3h à moins d’une minute !
  • 26. Peut-on imaginer un système complet basé sur des snaps ?
  • 27. Ubuntu Core Un système complet basé sur les snaps > L’intégrité du code est assurée par des archives squashfs signées en lecture seule Une manière moderne de construire une distribution Linux Architecture système modulaire en Snaps Snap Noyau Snap Base Snap Gadget Snap ApplicatifSnap applicatif Snap Applicatif Snap Interface de contenu > Pas besoin de reconstruire ou de re-flasher une image entière pour une seul changement applicatif
  • 28. Quelle est la différence entre conteneurisation et confinement ?
  • 29. Docker/LXD vs Snaps Docker et LXD fournissent de la conteneurisation : > Processus unique ou propre contrôle de processus Snap fournit du confinement : > Noyau partagé, propre système de fichiers/réseau > Les paquets des applications s’exécutent comme n’importe quel autre processus du système > Noyau/réseau partagé, système de fichiers propre > Processus gérés par des outils traditionnels > Pas de routage réseau compliqué > Les fichiers sont directement accessibles > Prise en charge de plusieurs utilisateurs LXD snap
  • 30. Essayez snapd par vous même ! (Démo Time !)
  • 31. Installer et exécuter un snap Démo 1
  • 32. Services et commandes dans un snap Démo 2
  • 33. Mise à jour, changement de version et désinstallation d’un snap Démo 3
  • 34. Un snap plus complexe : face-detection-demo Démo 4 (partie 1) > Installation de face-detection-demo > L’interface web est disponible à l’adresse http://localhost:8080 > On peut activer la caméra soit dans l’interface, soit via la commande face- detection-demo --enable-camera > La commande communique (via un socket Unix) avec notre service, qui est branché à la caméra et écoute le réseau.
  • 35. Un snap plus complexe : face-detection-demo Démo 4 (partie 2) > Mise à jour vers la dernière version à tester > C’est cassé et nos données sont corrompues! > Il faut donc faire un retour arrière > Testons la nouvelle version : http://localhost:8080
  • 36. Un snap plus complexe : face-detection-demo Démo 4 (partie 3) > Retour arrière vers la dernière version fonctionnelle > Tout est revenu à la normal > Re-testons la nouvelle version : http://localhost:8080
  • 38. QUESTIONS DE BASES SUR LES SNAPS QUESTIONS FRÉQUENTES > Les snaps remplacent-elles les paquet rpm ou deb ? Non (pour le système de base). > La même snap fonctionnera-t-elle sur n’importe quelle distribution supportant les snaps ? Oui. > Les snaps ont-elles un lien avec les paquets click d’Ubuntuphone ? Oui, c’est en quelque sorte les paquets clicks 2.0. > Les snaps sont-elles totalement isolées ou supportent-elles les bibliothèques partagées ? Il existe un système d'interface à relier au système. Les bibliothèques partagées sont possibles via des interfaces de contenu, privées pour les développeurs. > Comment les snaps gèrent-elles les systèmes multi utilisateurs ? Les snaps sont installées globalement pour tous les utilisateurs. Chaque utilisateur dispose de données utilisateur distinctes.
  • 39. QUESTIONS SUR LES DÉPÔTS ET MAGASINS DE SNAPS QUESTIONS FRÉQUENTES > Un magasin tiers est-il possible ? Oui, il peut y avoir un magasin de marque (hébergé par Canonical) ou la mise en place d’un magasin open source tiers. > Les snaps peuvent-elles être installées sans passer par un dépôt ou un magasin ? Oui, les snaps peuvent être installées localement (en fonction des possibilités offertes par votre appareil). > Comment les espaces de noms sont-ils gérés avec les snaps ? Les conflits de nom de snaps sont-ils possibles ? Les espaces de noms sans suffixe sont réservés à la gestion officielle de projets. Les snaps non officielles doivent utiliser un espace de noms basé sur un suffixe.
  • 40. QUESTIONS SUR LA CONSTRUCTION DES SNAPS QUESTIONS FRÉQUENTES > Quel outils pour créer un snap ? Il y a un outil : Snapcraft. - Vous pouvez écrire un fichier snapcraft.yaml et construire votre snap - Ou vous pouvez déverser votre logiciel déjà construit dans un répertoire, y ajouter des métadonnées et exécuter "snapcraft snap dir/" On peut aussi utiliser des usines logicielles : - Launchpad - https://build.snapcraft.io/ + https://github.com (Ne prends pas en compte les PPAs) > Est-ce qu’il est possible pour de multiples développeurs, comme par exemple une équipe de gérer le même snap ? Oui. > Comment la sécurité des bibliothèques tierces est-elle gérée ? Les bibliothèques sont exécutées comme votre application, et donc confinées. Le système des “parties” de snapcraft avec des parties venant du nuage vous permet de reconstruire facilement votre logiciel et de le tester avec de nouveaux correctifs de sécurité avant de les publier.