SlideShare une entreprise Scribd logo
DevOps
L’approche packaging natif
ParisJUG 10 Janvier 2012
Henri Gomez
CI Architect @ Axway


+20 ans dans l’industrie logicielle
Architecte Java, CI et Direction de production
OpenSource Activist
  Apache Tomcat
  JPackage
  openjdk-osx-build
3,2,1 - Rocket Launched




Courtesy Steve Jurvetson
Définition d’un livrable



C’est un artefact utilisable par les équipes up-stream
Pour un Dev ce sont donc les équipes QA et/ou Ops
Jar, war, zip, tarball ?



Ce sont des archives simples, non opérables directement
Les questions à se poser

Gestion des pré-requis
Cycle de vie (mise à jour, suppression)
Quid du déploiement (qui, quoi, comment)
Localisation dans le FileSystem (FHS rules)
Les droits d'exécutions et accès dans le FileSystem
Packaging Natif


Coeur de la pile applicative des OS
Gestion des dépendances
Mise à jour automatique ou sélective
Largement 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
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
Construire un RPM


Des fichiers binaires - depuis l’entrepôt de livrables
Des sources - depuis le SCM
Un fichier de construction, le SPECFILE
Entête déclaratif
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
%define   myapp             myapp
%define   myappusername     myuser
%define   myappuserid       1234
%define   myappgroupid      1234

Requires:             java = 1.6.0

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

%description
MyApp powered by Apache Tomcat
Construction

%prep
%setup -q -c

%build

%install
# Prep the install location.
rm -rf $RPM_BUILD_ROOT

mkdir -p $RPM_BUILD_ROOT%{_initrddir}
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
Hook de pré-install


%pre
%if 0%{?suse_version} > 1140
%service_add_pre %{myapp}.service
%endif
# add user and group
%{_sbindir}/groupadd -r -g %{myappgroupid} %{myappusername} 2>/dev/null || :
%{_sbindir}/useradd -s /sbin/nologin -c "%{myapp} user" -g %{myappusername} -r -d %
{myappdir} -u %{myappuserid} %{myappusername} 2>/dev/null || :
Hook de post-install
%post
%if 0%{?suse_version} > 1140
%service_add_post %{myapp}.service
%endif
if [ "$1" == "1" ]; then
  # register app as service
  systemctl enable %{myapp}.service >/dev/null 2>&1

     # Generated random password for RO and RW accounts
     RANDOMVAL=`echo $RANDOM | md5sum | sed "s| -||g" | tr -d " "`
     sed -i "s|@@SKEL_RO_PWD@@|$RANDOMVAL|g" %{_sysconfdir}/sysconfig/%{myapp}
     RANDOMVAL=`echo $RANDOM | md5sum | sed "s| -||g" | tr -d " "`
     sed -i "s|@@SKEL_RW_PWD@@|$RANDOMVAL|g" %{_sysconfdir}/sysconfig/%{myapp}

     pushd %{myappdir} >/dev/null
       ln -s %{myapplogdir} logs
       ln -s %{myapptempdir} temp
       ln -s %{myappworkdir} work
     popd >/dev/null

fi
Hook de pre-uninstall
%preun
%if 0%{?suse_version} > 1140
%service_del_preun %{myapp}.service
%endif
if [ "$1" == "0" ]; then
  # Uninstall time, stop App and cleanup

     # stop Application
     [ -x "/etc/init.d/%{myapp}" ] && /etc/init.d/%{myapp} stop

     %{_sbindir}/userdel %{myappusername}
     %{_sbindir}/groupdel %{myappusername}

     rm -rf %{myappworkdir}/* %{myapptempdir}/*

     # unregister app from services
     systemctl disable %{myapp}.service >/dev/null 2>&1

     # finalize housekeeping
     rm -rf %{myappdir}
     rm -rf %{myapplogdir}
     rm -rf %{myapptempdir}
     rm -rf %{myappworkdir}

fi
Hook de post-uninstall



%postun
%if 0%{?suse_version} > 1140
%service_del_postun %{myapp}.service
%endif
Déclaration du contenu
%files
%defattr(-,root,root)
%attr(0755,%{myappusername},%{myappusername}) %dir %{myapplogdir}
%attr(0755, root,root) %{_initrddir}/%{myapp}
%attr(0644,root,root) %{_systemdir}/%{myapp}.service
%config(noreplace) %{_sysconfdir}/sysconfig/%{myapp}
%config %{_sysconfdir}/logrotate.d/%{myapp}
%config %{_sysconfdir}/security/limits.d/%{myapp}
%{myappdir}/bin
%{myappdir}/conf
%{myappdir}/lib
%attr(-,%{myappusername}, %{myappusername}) %{myappdir}/webapps
%attr(0755,%{myappusername},%{myappusername}) %dir %{myappdatadir}
%attr(0755,%{myappusername},%{myappusername}) %dir %{myapptempdir}
%attr(0755,%{myappusername},%{myappusername}) %dir %{myappworkdir}
%doc %{myappdir}/NOTICE
%doc %{myappdir}/RUNNING.txt
%doc %{myappdir}/LICENSE
%doc %{myappdir}/RELEASE-NOTES
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
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’
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 d’exécution
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
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)
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)
Global FRONT-END

Apache HTTPd VHosts
 Subversion
 Git
 Jenkins
 Nexus
 Sonar
Conclusion

Une approche simple
Mise en oeuvre par étape
Adaptée à de petites infrastructures
Utilisable avec Puppet ou Chef
RPM DevOPS


http://code.google.com/p/devops-incubator/
  RPMs pour Subversion, GitBlit, Jenkins, Nexus, Sonar
  Pour OpenSuse 11.4 & 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+Repositories
Des questions ?
Licences et copyright


 Photos et logos appartiennent à leur auteurs/
 propriétaires respectifs.
 Contenu sous Creative Commons 3.0
 http://creativecommons.org/licenses/by-nc-sa/3.0/us/

Contenu connexe

Tendances

Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
SmartnSkilled
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
Stephane Manciot
 
Les paquets snaps « les paquets d’applications linux universels, nouvelle g...
Les paquets snaps   « les paquets d’applications linux universels, nouvelle g...Les paquets snaps   « les paquets d’applications linux universels, nouvelle g...
Les paquets snaps « les paquets d’applications linux universels, nouvelle g...
Vincent JOBARD
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
Guillaume Sauthier
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
Christophe Furmaniak
 
Puppet slides
Puppet slidesPuppet slides
Puppet slides
Pierre Mavro
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Aurelien Navarre
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tous
Publicis Sapient Engineering
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
Arnaud Héritier
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Membré Guillaume
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
Web à Québec
 
Presentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetPresentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration Puppet
Aurélie Henriot
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
tcouery
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm
 
Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *
Thierry M.
 
Présentation de Vagrant
Présentation de VagrantPrésentation de Vagrant
Présentation de Vagrant
clmntlxndr
 

Tendances (20)

Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Les paquets snaps « les paquets d’applications linux universels, nouvelle g...
Les paquets snaps   « les paquets d’applications linux universels, nouvelle g...Les paquets snaps   « les paquets d’applications linux universels, nouvelle g...
Les paquets snaps « les paquets d’applications linux universels, nouvelle g...
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
 
Gdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetesGdg lille-intro-to-kubernetes
Gdg lille-intro-to-kubernetes
 
Ansib formation-ansible
Ansib formation-ansibleAnsib formation-ansible
Ansib formation-ansible
 
Puppet slides
Puppet slidesPuppet slides
Puppet slides
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tous
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
Presentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetPresentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration Puppet
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *
 
Présentation de Vagrant
Présentation de VagrantPrésentation de Vagrant
Présentation de Vagrant
 

En vedette

Formation Flash
Formation FlashFormation Flash
Formation Flash
jplesault
 
Ux076 formation-administration-tomcat
Ux076 formation-administration-tomcatUx076 formation-administration-tomcat
Ux076 formation-administration-tomcatCERTyou Formation
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
Roberto Barros De Sousa
 
Cobbler puppet
Cobbler puppetCobbler puppet
Cobbler puppet
Fedora-Fr
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
tarkaus
 
Webinar "La plateforme Alfresco"
Webinar "La plateforme Alfresco"Webinar "La plateforme Alfresco"
Webinar "La plateforme Alfresco"
Michael Harlaut
 
Redmine présentation sug 2012
Redmine présentation sug 2012Redmine présentation sug 2012
Redmine présentation sug 2012
Yannick Quenec'hdu
 
Webinar "Alfresco en une heure"
Webinar "Alfresco en une heure"Webinar "Alfresco en une heure"
Webinar "Alfresco en une heure"
Michael Harlaut
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
Fabien SABATIER
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
Guillaume MOCQUET
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
Rachid NID SAID
 
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
Riadh Tebourbi (Ai1990)
 
Body language
Body languageBody language
Body language
Oussama Bessrour
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Ahmed Archive
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Jérôme Mainaud
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm
 
alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2
Alphorm
 

En vedette (20)

Formation Flash
Formation FlashFormation Flash
Formation Flash
 
Ux076 formation-administration-tomcat
Ux076 formation-administration-tomcatUx076 formation-administration-tomcat
Ux076 formation-administration-tomcat
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
Cobbler puppet
Cobbler puppetCobbler puppet
Cobbler puppet
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
 
Webinar "La plateforme Alfresco"
Webinar "La plateforme Alfresco"Webinar "La plateforme Alfresco"
Webinar "La plateforme Alfresco"
 
Redmine présentation sug 2012
Redmine présentation sug 2012Redmine présentation sug 2012
Redmine présentation sug 2012
 
Webinar "Alfresco en une heure"
Webinar "Alfresco en une heure"Webinar "Alfresco en une heure"
Webinar "Alfresco en une heure"
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
Alphorm.com Support de la Formation Red Hat Administrateur de Virtualization ...
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
 
Gestes
GestesGestes
Gestes
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
Body language
Body languageBody language
Body language
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
 
alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2
 

Similaire à 20120110 paris jug-packaging-natif

Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
hibnico
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Olivier DASINI
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
Christophe Villeneuve
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
Microsoft
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
Khalid ALLILI
 
Dev ops@kelkoo
Dev ops@kelkoo Dev ops@kelkoo
Dev ops@kelkoo
Alain Delafosse
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
vincent aniort
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
Arnaud Héritier
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
Julien Wittouck
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
gcatt
 
Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
Laurent RUAUD
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
Rachid NID SAID
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
Syrine Ben aziza
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
AbdellahELMAMOUN
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
Mohamed Ben Bouzid
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
XavierPestel
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Alexandre Touret
 

Similaire à 20120110 paris jug-packaging-natif (20)

Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Dev ops@kelkoo
Dev ops@kelkoo Dev ops@kelkoo
Dev ops@kelkoo
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
Nagios
NagiosNagios
Nagios
 
Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 

Plus de Henri Gomez

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

Plus de Henri Gomez (14)

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

20120110 paris jug-packaging-natif

  • 2. Henri Gomez CI Architect @ Axway +20 ans dans l’industrie logicielle Architecte Java, CI et Direction de production OpenSource Activist Apache Tomcat JPackage openjdk-osx-build
  • 3. 3,2,1 - Rocket Launched Courtesy Steve Jurvetson
  • 4. Définition d’un livrable C’est un artefact utilisable par les équipes up-stream Pour un Dev ce sont donc les équipes QA et/ou Ops
  • 5. Jar, war, zip, tarball ? Ce sont des archives simples, non opérables directement
  • 6. Les questions à se poser Gestion des pré-requis Cycle de vie (mise à jour, suppression) Quid du déploiement (qui, quoi, comment) Localisation dans le FileSystem (FHS rules) Les droits d'exécutions et accès dans le FileSystem
  • 7. Packaging Natif Coeur de la pile applicative des OS Gestion des dépendances Mise à jour automatique ou sélective Largement utilisé par les Ops
  • 8. Packaging sous Unix RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse, Mandriva DEB sous Debian/Ubuntu PKG sous Solaris
  • 9. 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)
  • 10. 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
  • 11. Un DSL pour les Ops Simple Quelques macros SH powered
  • 12. Construire un RPM Des fichiers binaires - depuis l’entrepôt de livrables Des sources - depuis le SCM Un fichier de construction, le SPECFILE
  • 13. Entête déclaratif 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 %define myapp myapp %define myappusername myuser %define myappuserid 1234 %define myappgroupid 1234 Requires: java = 1.6.0 Source0: apache-tomcat-%{tomcat_rel}.tar.gz Source1: myapp.war %description MyApp powered by Apache Tomcat
  • 14. Construction %prep %setup -q -c %build %install # Prep the install location. rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT%{_initrddir} mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
  • 15. Hook de pré-install %pre %if 0%{?suse_version} > 1140 %service_add_pre %{myapp}.service %endif # add user and group %{_sbindir}/groupadd -r -g %{myappgroupid} %{myappusername} 2>/dev/null || : %{_sbindir}/useradd -s /sbin/nologin -c "%{myapp} user" -g %{myappusername} -r -d % {myappdir} -u %{myappuserid} %{myappusername} 2>/dev/null || :
  • 16. Hook de post-install %post %if 0%{?suse_version} > 1140 %service_add_post %{myapp}.service %endif if [ "$1" == "1" ]; then # register app as service systemctl enable %{myapp}.service >/dev/null 2>&1 # Generated random password for RO and RW accounts RANDOMVAL=`echo $RANDOM | md5sum | sed "s| -||g" | tr -d " "` sed -i "s|@@SKEL_RO_PWD@@|$RANDOMVAL|g" %{_sysconfdir}/sysconfig/%{myapp} RANDOMVAL=`echo $RANDOM | md5sum | sed "s| -||g" | tr -d " "` sed -i "s|@@SKEL_RW_PWD@@|$RANDOMVAL|g" %{_sysconfdir}/sysconfig/%{myapp} pushd %{myappdir} >/dev/null ln -s %{myapplogdir} logs ln -s %{myapptempdir} temp ln -s %{myappworkdir} work popd >/dev/null fi
  • 17. Hook de pre-uninstall %preun %if 0%{?suse_version} > 1140 %service_del_preun %{myapp}.service %endif if [ "$1" == "0" ]; then # Uninstall time, stop App and cleanup # stop Application [ -x "/etc/init.d/%{myapp}" ] && /etc/init.d/%{myapp} stop %{_sbindir}/userdel %{myappusername} %{_sbindir}/groupdel %{myappusername} rm -rf %{myappworkdir}/* %{myapptempdir}/* # unregister app from services systemctl disable %{myapp}.service >/dev/null 2>&1 # finalize housekeeping rm -rf %{myappdir} rm -rf %{myapplogdir} rm -rf %{myapptempdir} rm -rf %{myappworkdir} fi
  • 18. Hook de post-uninstall %postun %if 0%{?suse_version} > 1140 %service_del_postun %{myapp}.service %endif
  • 19. Déclaration du contenu %files %defattr(-,root,root) %attr(0755,%{myappusername},%{myappusername}) %dir %{myapplogdir} %attr(0755, root,root) %{_initrddir}/%{myapp} %attr(0644,root,root) %{_systemdir}/%{myapp}.service %config(noreplace) %{_sysconfdir}/sysconfig/%{myapp} %config %{_sysconfdir}/logrotate.d/%{myapp} %config %{_sysconfdir}/security/limits.d/%{myapp} %{myappdir}/bin %{myappdir}/conf %{myappdir}/lib %attr(-,%{myappusername}, %{myappusername}) %{myappdir}/webapps %attr(0755,%{myappusername},%{myappusername}) %dir %{myappdatadir} %attr(0755,%{myappusername},%{myappusername}) %dir %{myapptempdir} %attr(0755,%{myappusername},%{myappusername}) %dir %{myappworkdir} %doc %{myappdir}/NOTICE %doc %{myappdir}/RUNNING.txt %doc %{myappdir}/LICENSE %doc %{myappdir}/RELEASE-NOTES
  • 20. 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
  • 21. 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’
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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)
  • 26. 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)
  • 27. 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)
  • 28. 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
  • 29. De JeOS à instance Inventaire des besoins Pré-requis et dépendances Spécificités applicatives
  • 30. Les communs Serveur SSH Comptes administrateur Monitoring (SNMP) Firewall (port 22 et SNMP autorisés)
  • 33. GIT Environnement Java (OpenJDK, Sun/Oracle ou IBM) GitBlit Compte utilisateur spécifique Tomcat 7 powered & single webapp
  • 34. Jenkins Environnement Java (OpenJDK, Sun/Oracle ou IBM) Jenkins Compte utilisateur spécifique Tomcat 7 powered & single webapp
  • 35. Nexus Environnement Java (OpenJDK, Sun/Oracle ou IBM) Nexus Compte utilisateur spécifique Tomcat 7 powered & single webapp
  • 36. SONAR Environnement Java (OpenJDK, Sun/Oracle ou IBM) Sonar Compte utilisateur spécifique Tomcat 7 powered & single webapp SQL backend (Derby ou MySQL)
  • 37. Global FRONT-END Apache HTTPd VHosts Subversion Git Jenkins Nexus Sonar
  • 38. Conclusion Une approche simple Mise en oeuvre par étape Adaptée à de petites infrastructures Utilisable avec Puppet ou Chef
  • 39. RPM DevOPS http://code.google.com/p/devops-incubator/ RPMs pour Subversion, GitBlit, Jenkins, Nexus, Sonar Pour OpenSuse 11.4 & 12.1
  • 42. 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/