DEVOPS
L’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)

• Ducode 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 RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
                                Nom
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
                              Version
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
                                              Release (corrective)
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
                                              Résumé du package
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
                                          URL du fournisseur (ex: www.mysql.com)
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch
                                Licence
%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch                  Architecture (processeur, model ou neutre)
%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0              Pré-requis à l’exécution (zero à plusieurs)
Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz   Source (un à plusieurs)
%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat                Description complète du package
%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c                    Préparation de construction (décompression des sources généralement)
%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build                        Construction (depuis sources mais pas seulement)
%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install                 Organisation dans le système de fichiers
%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre                            Opérations pré installation
%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post                         Opérations post installation
%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun                        Opérations pre désinstallation
%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun                       Opérations post désinstallation
%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp powered by Apache Tomcat

%prep
%setup -q -c

%build

%install

%clean

%pre

%post

%preun

%postun

%files                     Listes des fichiers
SOURCE D’UN RPM
Name: myapp
Version: 1.0.0
Release: 1
Summary: MyApp powered by Apache Tomcat
Group: Applications/Communications
URL: http://www.mycorp.org/
Vendor: MyCorp
Packager: MyPackager
License: AGPLv1
BuildArch: noarch

%define tomcat_rel      7.0.22

Requires:      java = 1.6.0

Source0: apache-tomcat-%{tomcat_rel}.tar.gz

%description
MyApp 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 OS
RPMs OS
 RPMs OS
TYPES DE RPMS

        RPMs OS
        RPMs OS
         RPMs OS
Fournis par votre distribution Linux
TYPES DE RPMS

        RPMs OS
        RPMs OS
         RPMs OS
Fournis par votre distribution Linux

                                       RPMs Applicatif
                                       RPMs Applicatif
                                        RPMs Applicatif
TYPES DE RPMS

        RPMs OS
        RPMs OS
         RPMs OS
Fournis par votre distribution Linux

                                       RPMs Applicatif
                                       RPMs Applicatif
                                        RPMs Applicatif
                                       Produits par les Devs & Ops
TYPES DE RPMS

        RPMs OS
        RPMs OS
         RPMs OS
Fournis par votre distribution Linux

                                       RPMs Applicatif
                                       RPMs Applicatif
                                        RPMs Applicatif
                                       Produits par les Devs & Ops
  RPMs Configuration
  RPMs Configuration
   RPMs Configuration
    RPMs Configuration
TYPES DE RPMS

        RPMs OS
        RPMs OS
         RPMs OS
Fournis par votre distribution Linux

                                       RPMs Applicatif
                                       RPMs Applicatif
                                        RPMs Applicatif
                                       Produits par les Devs & Ops
  RPMs Configuration
  RPMs Configuration
   RPMs Configuration
    RPMs Configuration
           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

20111205 breizh jug-packaging-natif

  • 1.
  • 2.
    PACKAGING NATIF • Coeur de la pile applicative des OS • Gestion des dépendances • Mise à jour automatique ou sélective • Utilisé par les Ops
  • 3.
    PACKAGING SOUS UNIX •RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse, Mandriva • DEB sous Debian/Ubuntu • PKG sous Solaris
  • 4.
    QU’EST-CE QU’UN PACKAGE? • Un fichier (.rpm, .deb) • Des données (fichiers et programmes) • Ducode 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)
  • 5.
    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
  • 6.
    UN DSL POURLES OPS • Simple • Quelques macros • SH powered
  • 7.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 8.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Nom Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 9.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 10.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Version Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 11.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 12.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Release (corrective) Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 13.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 14.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications Résumé du package URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 15.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 16.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp URL du fournisseur (ex: www.mysql.com) Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 17.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 18.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch Licence %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 19.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 20.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch Architecture (processeur, model ou neutre) %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 21.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 22.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Pré-requis à l’exécution (zero à plusieurs) Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 23.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 24.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz Source (un à plusieurs) %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 25.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 26.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat Description complète du package %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 27.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 28.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c Préparation de construction (décompression des sources généralement) %build %install %clean %pre %post %preun %postun %files
  • 29.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 30.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build Construction (depuis sources mais pas seulement) %install %clean %pre %post %preun %postun %files
  • 31.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 32.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install Organisation dans le système de fichiers %clean %pre %post %preun %postun %files
  • 33.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 34.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre Opérations pré installation %post %preun %postun %files
  • 35.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 36.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post Opérations post installation %preun %postun %files
  • 37.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 38.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun Opérations pre désinstallation %postun %files
  • 39.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 40.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun Opérations post désinstallation %files
  • 41.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 42.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files Listes des fichiers
  • 43.
    SOURCE D’UN RPM Name:myapp Version: 1.0.0 Release: 1 Summary: MyApp powered by Apache Tomcat Group: Applications/Communications URL: http://www.mycorp.org/ Vendor: MyCorp Packager: MyPackager License: AGPLv1 BuildArch: noarch %define tomcat_rel 7.0.22 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz %description MyApp powered by Apache Tomcat %prep %setup -q -c %build %install %clean %pre %post %preun %postun %files
  • 44.
    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’
  • 45.
    CYCLE DE VIEIN 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
  • 46.
    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
  • 47.
  • 48.
    TYPES DE RPMS RPMsOS RPMs OS RPMs OS
  • 49.
    TYPES DE RPMS RPMs OS RPMs OS RPMs OS Fournis par votre distribution Linux
  • 50.
    TYPES DE RPMS RPMs OS RPMs OS RPMs OS Fournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif
  • 51.
    TYPES DE RPMS RPMs OS RPMs OS RPMs OS Fournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif Produits par les Devs & Ops
  • 52.
    TYPES DE RPMS RPMs OS RPMs OS RPMs OS Fournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif Produits par les Devs & Ops RPMs Configuration RPMs Configuration RPMs Configuration RPMs Configuration
  • 53.
    TYPES DE RPMS RPMs OS RPMs OS RPMs OS Fournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif Produits par les Devs & Ops RPMs Configuration RPMs Configuration RPMs Configuration RPMs Configuration Produits par les Ops
  • 54.
    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)
  • 55.
    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)
  • 56.
    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)
  • 57.
    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
  • 58.
    DE JEOS ÀINSTANCE • Inventaire des besoins • Pré-requis et dépendances • Spécificités applicatives
  • 59.
    LES COMMUNS • Serveur SSH • Comptes administrateur • Monitoring (SNMP) • Firewall (port 22 et SNMP autorisés)
  • 60.
    MA PETITE FORGE •Subversion • Git • Jenkins • Nexus • Sonar
  • 61.
    SUBVERSION • Apache HTTPd server • Subversion • Viewvc • Comptes utilisateurs
  • 62.
    GIT • Environnement Java (OpenJDK, Sun/Oracle ou IBM) • GitBlit • Compte utilisateur spécifique • Tomcat 7 powered & single webapp
  • 63.
    JENKINS • Environnement Java (OpenJDK, Sun/Oracle ou IBM) • Jenkins • Compte utilisateur spécifique • Tomcat 7 powered & single webapp
  • 64.
    NEXUS • Environnement Java (OpenJDK, Sun/Oracle ou IBM) • Nexus • Compte utilisateur spécifique • Tomcat 7 powered & single webapp
  • 65.
    SONAR • Environnement Java (OpenJDK, Sun/Oracle ou IBM) • Sonar • Compte utilisateur spécifique • Tomcat 7 powered & single webapp • SQL backend (Derby ou MySQL)
  • 66.
    MYSQL BACKEND • MySQL • Comptes utilisateurs • Configuration InnoDB
  • 67.
    GLOBAL FRONT-END • Apache HTTPd VHosts • Subversion • Jenkins • Nexus • Sonar
  • 68.
    RPM DEVOPS • http://code.google.com/p/devops-incubator/ • RPMs pour Subversion, GitBlit, Jenkins, Nexus, Sonar • Pour OpenSuse 12.1
  • 69.
    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