2. Henri Gomez
+20 ans dans l’industrie logicielle
Architecte Java, CI et direction de production
Dev, QA et Ops
OpenSource Activist
Apache Tomcat
JPackage
openjdk-osx-build
3. Packaging Natif
Coeur de la pile applicative des OS
Gestion des dépendances
Mise à jour automatique ou sélective
Utilisé par les Ops
4. Packaging sous Unix
RPM (Redhat Package Manager) sous RHEL/CentOS/
Fedora, SLES/OpenSuse, Mandriva
DEB sous Debian/Ubuntu
PKG sous Solaris
5. 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)
6. Points communs avec
Maven
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
7. Un DSL pour les Ops
Simple
Quelques macros
SH powered
8. Construire un RPM
Des fichiers binaires - depuis l’entrepôt de livrables
Des sources - depuis le SCM
Un fichier de construction, le SPECFILE
16. Historique
%changelog
* Sat Dev 03 2011 henri.gomez@gmail.com 1.0.3-1
- Adapt spec to OpenSuse 12.1
* Sun Nov 20 2011 henri.gomez@gmail.com 1.0.2-1
- Make use of OpenSuse 11.4 macros
* Sun Jun 19 2011 henri.gomez@gmail.com 1.0.1-1
- Update Application
* Sun Jun 19 2011 henri.gomez@gmail.com 1.0.0-2
- Add user account creation/deletion
* Sun May 22 2011 henri.gomez@gmail.com 1.0.0-1
- Initial RPM
17. AUTONOME
Un package est auto-suffisant
Programmes principaux et annexes (ex: logrotate)
Données
Comptes utilisateurs d’exécution
Contrôle total sur le cycle de vie ‘en situation’
18. 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ésintallation
Hooks sur opération sur autres packages
19. ET ENCORE
Un processus déterministe et donc réplicable
Peut être utilisé par Puppet ou Chef
Des artifacts centralisables comme pour Maven
Une approche composant d’exécution
20. Types de RPMs
RPMs OS
RPMs OS
RPMs OS
Fournis par votre distribution Linux
RPMs Applicatif
RPMs Applicatif
RPMs Applicatif
RPMs Configuration
RPMs Configuration Produits par les Devs & Ops
RPMs Configuration
RPMs Configuration
Produits par les Ops
21. L’ASSEMBLAGE
Installer une usine à packages (Jenkins)
Créer un dépôt de packages
Apache HTTPd
Nexus/Artifactory
Préparer des images Linux (exemple: JeOS)
22. 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)
23. dépôt de packages
Serveur Apache HTTPd
Installer createrepo (RPM), dpkg-dev (DEB)
Upload via web-dav ou ssh (plus simple)
Nexus/Artifactory
Installer createrepo (RPM), dpkg-dev (DEB)
Upload via web-dav (par Maven par exemple)
24. JeOS
Juste les composants essentiels de l’OS
Moins de packages installés
Taux de mise à jour plus faible
Réduction des risques de failles de sécurité
Une empreinte mémoire et disque réduite
25. De JeOS à instance
Inventaire des besoins
Pré-requis et dépendances
Spécificités applicatives
35. Conclusion
Une approche simple
Mise en oeuvre par étape
Adaptée à de petites infrastructures
Utilisable avec Puppet ou Chef pour de grosses
infrastructure
39. 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/