20111205 breizh jug-packaging-natif

Preview:

DESCRIPTION

Présentation DevOps au BreitzJUG. Approche Packaging Natif

Citation preview

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

Recommended