DEVOPSL’approche packaging natif
PACKAGING NATIF
• Coeur de la pile applicative des OS
• Gestion des dépendances
•Mise à jour automatique ou sélective
• Utilisé par les Ops
PACKAGING SOUS UNIX
• RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse, Mandriva
•DEB sous Debian/Ubuntu
• PKG sous Solaris
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)
POINTS COMMUNS AVEC MAVEN
• Construction par DSL simple
•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
UN DSL POUR LES OPS
• Simple
•Quelques macros
• SH powered
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Nom
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Version
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Release (corrective)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Résumé du package
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
URL du fournisseur (ex: www.mysql.com)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Licence
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Architecture (processeur, model ou neutre)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Pré-requis à l’exécution (zero à plusieurs)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Source (un à plusieurs)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Description complète du package
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Préparation de construction (décompression des sources généralement)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Construction (depuis sources mais pas seulement)
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Organisation dans le système de fichiers
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Opérations pré installation
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Opérations post installation
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Opérations pre désinstallation
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
Opérations post désinstallation
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files Listes des fichiers
SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch
%define tomcat_rel 7.0.22
Requires: java = 1.6.0
Source0: apache-tomcat-%{tomcat_rel}.tar.gz
%descriptionMyApp powered by Apache Tomcat
%prep%setup -q -c
%build
%install
%clean
%pre
%post
%preun
%postun
%files
AUTO-SUFFISANT
• Un package est auto-suffisant
• Programmes principaux et annexes (ex: logrotate)
•Données
• Comptes utilisateurs
• Contrôle total sur le cycle de vie ‘en situation’
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
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 runtime
TYPES DE RPMS
TYPES DE RPMS
RPMs OSRPMs OSRPMs OS
TYPES DE RPMS
RPMs OSRPMs OSRPMs OS
Fournis par votre distribution Linux
TYPES DE RPMS
RPMs OSRPMs OSRPMs OS
RPMs ApplicatifRPMs ApplicatifRPMs Applicatif
Fournis par votre distribution Linux
TYPES DE RPMS
RPMs OSRPMs OSRPMs OS
RPMs ApplicatifRPMs ApplicatifRPMs Applicatif
Fournis par votre distribution Linux
Produits par les Devs & Ops
TYPES DE RPMS
RPMs OSRPMs OSRPMs OS
RPMs ApplicatifRPMs ApplicatifRPMs Applicatif
RPMs ConfigurationRPMs ConfigurationRPMs ConfigurationRPMs Configuration
Fournis par votre distribution Linux
Produits par les Devs & Ops
TYPES DE RPMS
RPMs OSRPMs OSRPMs OS
RPMs ApplicatifRPMs ApplicatifRPMs Applicatif
RPMs ConfigurationRPMs ConfigurationRPMs ConfigurationRPMs Configuration
Fournis par votre distribution Linux
Produits par les Devs & Ops
Produits par les Ops
L’ASSEMBLAGE
• Installer une usine à packages (Jenkins)
• Créer un dépôt de packages
• Apache HTTPd
•Nexus/Artifactory
• Préparer des images Linux (JeOS)
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)
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)
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
DE JEOS À INSTANCE
• Inventaire des besoins
• Pré-requis et dépendances
• Spécificités applicatives
LES COMMUNS
• Serveur SSH
• Comptes administrateur
•Monitoring (SNMP)
• Firewall (port 22 et SNMP autorisés)
MA PETITE FORGE
• Subversion
• Git
• Jenkins
•Nexus
• Sonar
SUBVERSION
• Apache HTTPd server
• Subversion
• Viewvc
• Comptes utilisateurs
GIT
• Environnement Java (OpenJDK, Sun/Oracle ou IBM)
• GitBlit
• Compte utilisateur spécifique
• Tomcat 7 powered & single webapp
JENKINS
• Environnement Java (OpenJDK, Sun/Oracle ou IBM)
• Jenkins
• Compte utilisateur spécifique
• Tomcat 7 powered & single webapp
NEXUS
• Environnement Java (OpenJDK, Sun/Oracle ou IBM)
•Nexus
• Compte utilisateur spécifique
• Tomcat 7 powered & single webapp
SONAR
• Environnement Java (OpenJDK, Sun/Oracle ou IBM)
• Sonar
• Compte utilisateur spécifique
• Tomcat 7 powered & single webapp
• SQL backend (Derby ou MySQL)
MYSQL BACKEND
•MySQL
• Comptes utilisateurs
• Configuration InnoDB
GLOBAL FRONT-END
• Apache HTTPd VHosts
• Subversion
• Jenkins
•Nexus
• Sonar
RPM DEVOPS
• http://code.google.com/p/devops-incubator/
• RPMs pour Subversion, GitBlit, Jenkins, Nexus, Sonar
• Pour OpenSuse 12.1
LIRE
• http://www.rpm.org/max-rpm/
• http://fedoraproject.org/wiki/Packaging/Guidelines
• http://en.opensuse.org/openSUSE:Specfile_guidelines
•Nexus : http://code.google.com/p/nexus-yum-plugin/
• Artifactory : http://wiki.jfrog.org/confluence/display/RTF/YUM