SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
DEVOPS
L’APPROCHE PACKAGING NATIF
BBL DOCKER - 26 FEVRIER 2020
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HENRI GOMEZ
▸ Head of SRE @ Saagie
▸ +30 ans dans l’industrie logicielle
▸ Dev C/Java, CI/CD, QA, Ops/SRE
▸ OpenSource Activist
▸ Apache Tomcat
▸ JPackage
▸ Obuildfactory / Devops Incubator
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
DÉFINITION D’UN LIVRABLE
▸ C’est un artefact utilisable par les équipes up-stream
▸ Pour un Dev ce sont donc les équipes QA et/ou Ops
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
JAR, WAR, ZIP, TARBALL ?
▸ Ce sont des archives simples, non opérables directement
▸ Pas de gestion de dépendances
▸ Pas de gestion de pré-requis
▸ Pas de convention de déploiement
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
FLATPAK, SNAP ?
▸ Packaging par overlay
▸ Démon nécessaire
▸ Proche du packaging Docker dans l’esprit
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
NIX ?
▸ Le système de packaging le plus avancé
▸ Pour NixOS
▸ Très riche, trop peut être
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
DOCKER ?
▸ C’est à la fois une archive et un format de Run
▸ Un écosystème majeur s’est construit autour
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
LES QUESTIONS À SE POSER
▸ Gestion des pré-requis
▸ Cycle de vie (mise à jour, suppression)
▸ Quid du déploiement (qui, quoi, comment)
▸ Localisation dans le FileSystem (FHS rules)
▸ Les droits d'exécutions et accès dans le FileSystem
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
PACKAGING NATIF
▸ Coeur de la pile applicative des OS
▸ Gestion des dépendances
▸ Mise à jour automatique ou sélective
▸ Largement utilisé par les Ops
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
PACKAGING SOUS UNIX
▸ RPM (Redhat Package Manager) sous RHEL/CentOS/
Fedora, SLES/OpenSuse, Mandriva
▸ DEB sous Debian/Ubuntu
▸ PKG sous Solaris
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
QU’EST-CE QU’UN PACKAGE ?
▸ Un fichier (.rpm, .deb)
▸ Des données (fichiers et programmes)
▸ Du code exécuté lors de l’installation, la mise à jour ou la
suppression du package
▸ Lié à une architecture (Intel, ARM, PowerPC en 32 ou
64bits) ou neutre (exemple: une application Java)
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
POINTS COMMUNS AVEC MAVEN / GRADLE
▸ Construction par DSL
▸ Quelques commandes pour les manipuler (rpm, apt-get)
▸ Gestion des dépendances pour la construction mais aussi
pour l’exécution
▸ Dépôts de packages, accessible en local ou via HTTP
▸ Nexus et Artifactory peuvent servir de dépôts RPM
▸ Mises à jour automatiques ou contrôlées
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
UN DSL POUR LES OPS
▸ Simple
▸ Quelques macros
▸ Shell powered
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
CONSTRUIRE UN RPM
▸ Des fichiers binaires - depuis l’entrepôt de livrables
▸ Des sources - depuis le SCM
▸ Un fichier de construction, le SPECFILE
TEXTE
ENTÊTE DÉCLARATIF
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
CONSTRUCTION
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HOOK DE PRÉ-INSTALL
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HOOK DE POST-INSTALL
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HOOK DE PRE-UNINSTALL
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HOOK DE POST-UNINSTALL
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HOOK DE DEPENDANCES INTER PACKAGES
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
DÉCLARATION DU CONTENU
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
HISTORIQUE
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
AUTONOME
▸ Un package est auto-suffisant
▸ Programmes principaux
▸ Connectable à des services (ex: logrotate / cron)
▸ Données
▸ Comptes utilisateurs d’exécution
▸ Contrôle total sur le cycle de vie ‘en situation’
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
CYCLE DE VIE IN SITU
▸ Contrôle total sur le cycle de vie ‘en situation’
▸ Hooks pre/post installation
▸ Hook lors de la mise à jour
▸ Hooks pre/post désinstallation
▸ Hooks sur opération sur autres packages
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
ET ENCORE
▸ Un processus déterministe et donc réplicable
▸ Peut être utilisé par Ansible, Puppet ou Chef
▸ Des artifacts centralisables comme pour Maven
▸ Une approche composant d’exécution
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
TYPES DE RPMS
RPMS OSRPMS OSRPMS OS
Fournis par votre distribution Linux
RPMS APPLICATIFRPMS APPLICATIFRPMS APPLICATIF
Produits par les Devs & OpsRPMS CONFIGURATION
RPMS CONFIGURATION
RPMS CONFIGURATION
RPMS CONFIGURATION
Produits par les Ops
dépréciés par Rudder/Ansible/Puppet.Chef
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
L’ASSEMBLAGE
▸ Installer une usine à packages (Jenkins)
▸ Créer un dépôt de packages
▸ Apache HTTPd / NGinx
▸ Nexus/Artifactory
▸ Construire et tester sur environnement minimal (JEOS)
▸ Pour éviter les dépendances implicites (ex: curl)
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
USINE A PACKAGES
▸ Jenkins (what else ?)
▸ Un agent Jenkins par distribution cible
▸ Déployer les outils de construction packages sur l’agent
▸ rpm-build, make, autoconf (RPM)
▸ build-essential, devscripts, ubuntu-dev-tools (DEB)
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
DÉPÔT DE PACKAGES
▸ Serveur Apache HTTPd / NGinx
▸ Installer createrepo (RPM), dpkg-dev (DEB)
▸ Upload via web-dav ou scp (plus simple)
▸ Nexus/Artifactory
▸ Installer createrepo (RPM), dpkg-dev (DEB)
▸ Upload via web-dav (par Maven / Gradle par exemple)
▸ SaaS
▸ https://packagecloud.io/
▸ https://build.opensuse.org/
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
CONCLUSION
▸ Une approche simple
▸ Mise en oeuvre par étape
▸ Adaptée à de petites infrastructures
▸ Utilisable avec Ansible, Puppet ou Chef
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
RPM DEVOPS
▸ https://github.com/hgomez/devops-incubator/
▸ RPMs pour Subversion, GitBlit, Jenkins, Nexus…
▸ Pour OpenSuse, CentOS/Fedora
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
MA PETITE FORGE
▸ Subversion
▸ Git
▸ Jenkins
▸ Nexus
▸ SonarQube
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
SUBVERSION
▸ Apache HTTPd server
▸ Subversion
▸ Viewvc
▸ Comptes utilisateurs
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
GIT
▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM)
▸ GitBlit
▸ Compte utilisateur spécifique
▸ Tomcat 7 powered & single webapp
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
JENKINS
▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM)
▸ Jenkins
▸ Compte utilisateur spécifique
▸ Tomcat 7 powered & single webapp
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
NEXUS
▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM)
▸ Nexus
▸ Compte utilisateur spécifique
▸ Tomcat 7 powered & single webapp
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
SONARQUBE
▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM)
▸ Sonar
▸ Compte utilisateur spécifique
▸ Tomcat 7 powered & single webapp
▸ SQL backend (Derby ou MySQL)
BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020
GLOBAL FRONT-END
▸ Apache HTTPd VHosts
▸ Subversion
▸ Git
▸ Jenkins
▸ Nexus
▸ SonarQube
HTTPS://GITHUB.COM/HGOMEZ/DEVOPS-INCUBATOR/
LITTERATURE
▸ http://www.rpm.org/max-rpm/
▸ https://docs.fedoraproject.org/en-US/packaging-guidelines/
▸ http://en.opensuse.org/openSUSE:Specfile_guidelines
▸ Nexus : https://help.sonatype.com/repomanager3/formats/yum-repositories
▸ Artifactory : https://www.jfrog.com/confluence/display/JFROG/RPM+Repositories
HTTPS://GITHUB.COM/HGOMEZ/DEVOPS-INCUBATOR/
DES QUESTIONS ?
HTTPS://GITHUB.COM/HGOMEZ/DEVOPS-INCUBATOR/
LICENCES ET COPYRIGHT
▸ Photos et logos appartiennent à leur auteurs/propriétaires
respectifs.
▸ Contenu sous Creative Commons 3.0
▸ http://creativecommons.org/licenses/by-nc-sa/3.0/us/

Contenu connexe

Tendances

CD d’auto-installation de Nagios, Centreon et NaReTo
CD d’auto-installation de Nagios, Centreon et NaReToCD d’auto-installation de Nagios, Centreon et NaReTo
CD d’auto-installation de Nagios, Centreon et NaReToguest3be047
 
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
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherAnthony Sigogne
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Dev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesDev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesSOAT
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Fabien Arcellier
 
Open Recipes - Pouquoi le packaging est important pour l'intégration logicielle
Open Recipes - Pouquoi le packaging est important pour l'intégration logicielleOpen Recipes - Pouquoi le packaging est important pour l'intégration logicielle
Open Recipes - Pouquoi le packaging est important pour l'intégration logicielleAnne Nicolas
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017AFUP_Limoges
 
Bases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISOmar El Kharki
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousPublicis Sapient Engineering
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxZakariyaa AIT ELMOUDEN
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitGeoffrey Bachelet
 
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]ANEO
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...jihbed
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 

Tendances (20)

CD d’auto-installation de Nagios, Centreon et NaReTo
CD d’auto-installation de Nagios, Centreon et NaReToCD d’auto-installation de Nagios, Centreon et NaReTo
CD d’auto-installation de Nagios, Centreon et NaReTo
 
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
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec Rancher
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Dev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesDev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuages
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
REX Devops Docker
REX Devops DockerREX Devops Docker
REX Devops Docker
 
Open Recipes - Pouquoi le packaging est important pour l'intégration logicielle
Open Recipes - Pouquoi le packaging est important pour l'intégration logicielleOpen Recipes - Pouquoi le packaging est important pour l'intégration logicielle
Open Recipes - Pouquoi le packaging est important pour l'intégration logicielle
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017
 
Devoxx France : GruntJs In Action
Devoxx France : GruntJs In ActionDevoxx France : GruntJs In Action
Devoxx France : GruntJs In Action
 
Bases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGIS
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tous
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linux
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
 
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
Tech daysRetour d’expérience Big Compute & HPC sur Windows Azure [TechDays 2014]
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 

Similaire à 20200225 bbl-docker-packaging-natif

5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...AbdellahELMAMOUN
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien Maitrehenry
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natifHenri Gomez
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...Romain Cambien
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
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
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 
Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembeddedAyoub Rouzi
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...Paris Open Source Summit
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Olivier Grisel
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Devops d-day 2017 docker openstack docker
Devops d-day 2017  docker openstack dockerDevops d-day 2017  docker openstack docker
Devops d-day 2017 docker openstack dockerAlexis Ducastel
 

Similaire à 20200225 bbl-docker-packaging-natif (20)

5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif20111220 lyon jug-packaging-natif
20111220 lyon jug-packaging-natif
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssd
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembedded
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Vagrant - Concept
Vagrant - ConceptVagrant - Concept
Vagrant - Concept
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
#OSSPARIS17 - Docker Under the Hood : Networking & Loadbalancing & security m...
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Install oracle
Install oracleInstall oracle
Install oracle
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Devops d-day 2017 docker openstack docker
Devops d-day 2017  docker openstack dockerDevops d-day 2017  docker openstack docker
Devops d-day 2017 docker openstack docker
 

Plus de Henri Gomez

SRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdfSRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdfHenri Gomez
 
Je s'appelle Glowroot - LyonJUG Oct 2018
Je s'appelle Glowroot - LyonJUG Oct 2018Je s'appelle Glowroot - LyonJUG Oct 2018
Je s'appelle Glowroot - LyonJUG Oct 2018Henri Gomez
 
Glowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bienGlowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bienHenri Gomez
 
Glowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bienGlowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bienHenri Gomez
 
From ci to cd - LavaJug 2012
From ci to cd  - LavaJug 2012From ci to cd  - LavaJug 2012
From ci to cd - LavaJug 2012Henri Gomez
 
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012Henri Gomez
 
20111220 lyon jug-devops-culture
20111220 lyon jug-devops-culture20111220 lyon jug-devops-culture
20111220 lyon jug-devops-cultureHenri Gomez
 
20111205 breizh jug-devops
20111205 breizh jug-devops20111205 breizh jug-devops
20111205 breizh jug-devopsHenri Gomez
 
20111205 breizh jug-packaging-natif
20111205 breizh jug-packaging-natif20111205 breizh jug-packaging-natif
20111205 breizh jug-packaging-natifHenri Gomez
 
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011Henri Gomez
 
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011Henri Gomez
 
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011Henri Gomez
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011Henri Gomez
 

Plus de Henri Gomez (14)

SRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdfSRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdf
 
Je s'appelle Glowroot - LyonJUG Oct 2018
Je s'appelle Glowroot - LyonJUG Oct 2018Je s'appelle Glowroot - LyonJUG Oct 2018
Je s'appelle Glowroot - LyonJUG Oct 2018
 
Glowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bienGlowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bien
 
Glowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bienGlowroot, le petit APM qui vous veut du bien
Glowroot, le petit APM qui vous veut du bien
 
From ci to cd - LavaJug 2012
From ci to cd  - LavaJug 2012From ci to cd  - LavaJug 2012
From ci to cd - LavaJug 2012
 
From ci to cd
From ci to cdFrom ci to cd
From ci to cd
 
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012
 
20111220 lyon jug-devops-culture
20111220 lyon jug-devops-culture20111220 lyon jug-devops-culture
20111220 lyon jug-devops-culture
 
20111205 breizh jug-devops
20111205 breizh jug-devops20111205 breizh jug-devops
20111205 breizh jug-devops
 
20111205 breizh jug-packaging-natif
20111205 breizh jug-packaging-natif20111205 breizh jug-packaging-natif
20111205 breizh jug-packaging-natif
 
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
 
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
 
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
 

20200225 bbl-docker-packaging-natif

  • 1. DEVOPS L’APPROCHE PACKAGING NATIF BBL DOCKER - 26 FEVRIER 2020
  • 2. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HENRI GOMEZ ▸ Head of SRE @ Saagie ▸ +30 ans dans l’industrie logicielle ▸ Dev C/Java, CI/CD, QA, Ops/SRE ▸ OpenSource Activist ▸ Apache Tomcat ▸ JPackage ▸ Obuildfactory / Devops Incubator
  • 3. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 DÉFINITION D’UN LIVRABLE ▸ C’est un artefact utilisable par les équipes up-stream ▸ Pour un Dev ce sont donc les équipes QA et/ou Ops
  • 4. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 JAR, WAR, ZIP, TARBALL ? ▸ Ce sont des archives simples, non opérables directement ▸ Pas de gestion de dépendances ▸ Pas de gestion de pré-requis ▸ Pas de convention de déploiement
  • 5. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 FLATPAK, SNAP ? ▸ Packaging par overlay ▸ Démon nécessaire ▸ Proche du packaging Docker dans l’esprit
  • 6. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 NIX ? ▸ Le système de packaging le plus avancé ▸ Pour NixOS ▸ Très riche, trop peut être
  • 7. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 DOCKER ? ▸ C’est à la fois une archive et un format de Run ▸ Un écosystème majeur s’est construit autour
  • 8. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 LES QUESTIONS À SE POSER ▸ Gestion des pré-requis ▸ Cycle de vie (mise à jour, suppression) ▸ Quid du déploiement (qui, quoi, comment) ▸ Localisation dans le FileSystem (FHS rules) ▸ Les droits d'exécutions et accès dans le FileSystem
  • 9. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 PACKAGING NATIF ▸ Coeur de la pile applicative des OS ▸ Gestion des dépendances ▸ Mise à jour automatique ou sélective ▸ Largement utilisé par les Ops
  • 10. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 PACKAGING SOUS UNIX ▸ RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse, Mandriva ▸ DEB sous Debian/Ubuntu ▸ PKG sous Solaris
  • 11. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 QU’EST-CE QU’UN PACKAGE ? ▸ Un fichier (.rpm, .deb) ▸ Des données (fichiers et programmes) ▸ Du code exécuté lors de l’installation, la mise à jour ou la suppression du package ▸ Lié à une architecture (Intel, ARM, PowerPC en 32 ou 64bits) ou neutre (exemple: une application Java)
  • 12. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 POINTS COMMUNS AVEC MAVEN / GRADLE ▸ Construction par DSL ▸ Quelques commandes pour les manipuler (rpm, apt-get) ▸ Gestion des dépendances pour la construction mais aussi pour l’exécution ▸ Dépôts de packages, accessible en local ou via HTTP ▸ Nexus et Artifactory peuvent servir de dépôts RPM ▸ Mises à jour automatiques ou contrôlées
  • 13. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 UN DSL POUR LES OPS ▸ Simple ▸ Quelques macros ▸ Shell powered
  • 14. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 CONSTRUIRE UN RPM ▸ Des fichiers binaires - depuis l’entrepôt de livrables ▸ Des sources - depuis le SCM ▸ Un fichier de construction, le SPECFILE
  • 16. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 CONSTRUCTION
  • 17. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HOOK DE PRÉ-INSTALL
  • 18. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HOOK DE POST-INSTALL
  • 19. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HOOK DE PRE-UNINSTALL
  • 20. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HOOK DE POST-UNINSTALL
  • 21. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HOOK DE DEPENDANCES INTER PACKAGES
  • 22. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 DÉCLARATION DU CONTENU
  • 23. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 HISTORIQUE
  • 24. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 AUTONOME ▸ Un package est auto-suffisant ▸ Programmes principaux ▸ Connectable à des services (ex: logrotate / cron) ▸ Données ▸ Comptes utilisateurs d’exécution ▸ Contrôle total sur le cycle de vie ‘en situation’
  • 25. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 CYCLE DE VIE IN SITU ▸ Contrôle total sur le cycle de vie ‘en situation’ ▸ Hooks pre/post installation ▸ Hook lors de la mise à jour ▸ Hooks pre/post désinstallation ▸ Hooks sur opération sur autres packages
  • 26. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 ET ENCORE ▸ Un processus déterministe et donc réplicable ▸ Peut être utilisé par Ansible, Puppet ou Chef ▸ Des artifacts centralisables comme pour Maven ▸ Une approche composant d’exécution
  • 27. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 TYPES DE RPMS RPMS OSRPMS OSRPMS OS Fournis par votre distribution Linux RPMS APPLICATIFRPMS APPLICATIFRPMS APPLICATIF Produits par les Devs & OpsRPMS CONFIGURATION RPMS CONFIGURATION RPMS CONFIGURATION RPMS CONFIGURATION Produits par les Ops dépréciés par Rudder/Ansible/Puppet.Chef
  • 28. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 L’ASSEMBLAGE ▸ Installer une usine à packages (Jenkins) ▸ Créer un dépôt de packages ▸ Apache HTTPd / NGinx ▸ Nexus/Artifactory ▸ Construire et tester sur environnement minimal (JEOS) ▸ Pour éviter les dépendances implicites (ex: curl)
  • 29. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 USINE A PACKAGES ▸ Jenkins (what else ?) ▸ Un agent Jenkins par distribution cible ▸ Déployer les outils de construction packages sur l’agent ▸ rpm-build, make, autoconf (RPM) ▸ build-essential, devscripts, ubuntu-dev-tools (DEB)
  • 30. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 DÉPÔT DE PACKAGES ▸ Serveur Apache HTTPd / NGinx ▸ Installer createrepo (RPM), dpkg-dev (DEB) ▸ Upload via web-dav ou scp (plus simple) ▸ Nexus/Artifactory ▸ Installer createrepo (RPM), dpkg-dev (DEB) ▸ Upload via web-dav (par Maven / Gradle par exemple) ▸ SaaS ▸ https://packagecloud.io/ ▸ https://build.opensuse.org/
  • 31. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 CONCLUSION ▸ Une approche simple ▸ Mise en oeuvre par étape ▸ Adaptée à de petites infrastructures ▸ Utilisable avec Ansible, Puppet ou Chef
  • 32. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 RPM DEVOPS ▸ https://github.com/hgomez/devops-incubator/ ▸ RPMs pour Subversion, GitBlit, Jenkins, Nexus… ▸ Pour OpenSuse, CentOS/Fedora
  • 33. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 MA PETITE FORGE ▸ Subversion ▸ Git ▸ Jenkins ▸ Nexus ▸ SonarQube
  • 34. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 SUBVERSION ▸ Apache HTTPd server ▸ Subversion ▸ Viewvc ▸ Comptes utilisateurs
  • 35. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 GIT ▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM) ▸ GitBlit ▸ Compte utilisateur spécifique ▸ Tomcat 7 powered & single webapp
  • 36. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 JENKINS ▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM) ▸ Jenkins ▸ Compte utilisateur spécifique ▸ Tomcat 7 powered & single webapp
  • 37. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 NEXUS ▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM) ▸ Nexus ▸ Compte utilisateur spécifique ▸ Tomcat 7 powered & single webapp
  • 38. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 SONARQUBE ▸ Environnement Java (OpenJDK, Sun/Oracle ou IBM) ▸ Sonar ▸ Compte utilisateur spécifique ▸ Tomcat 7 powered & single webapp ▸ SQL backend (Derby ou MySQL)
  • 39. BBL DOCKER - PACKAGING NATIF - 26 FEVRIER 2020 GLOBAL FRONT-END ▸ Apache HTTPd VHosts ▸ Subversion ▸ Git ▸ Jenkins ▸ Nexus ▸ SonarQube
  • 40. HTTPS://GITHUB.COM/HGOMEZ/DEVOPS-INCUBATOR/ LITTERATURE ▸ http://www.rpm.org/max-rpm/ ▸ https://docs.fedoraproject.org/en-US/packaging-guidelines/ ▸ http://en.opensuse.org/openSUSE:Specfile_guidelines ▸ Nexus : https://help.sonatype.com/repomanager3/formats/yum-repositories ▸ Artifactory : https://www.jfrog.com/confluence/display/JFROG/RPM+Repositories
  • 42. HTTPS://GITHUB.COM/HGOMEZ/DEVOPS-INCUBATOR/ LICENCES ET COPYRIGHT ▸ Photos et logos appartiennent à leur auteurs/propriétaires respectifs. ▸ Contenu sous Creative Commons 3.0 ▸ http://creativecommons.org/licenses/by-nc-sa/3.0/us/