20111205 breizh jug-packaging-natif

982 views
938 views

Published on

Présentation DevOps au BreitzJUG.

Approche Packaging Natif

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
982
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20111205 breizh jug-packaging-natif

  1. 1. DEVOPSL’approche packaging natif
  2. 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. 3. PACKAGING SOUS UNIX• RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse, Mandriva• DEB sous Debian/Ubuntu• PKG sous Solaris
  4. 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. 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. 6. UN DSL POUR LES OPS• Simple• Quelques macros• SH powered
  7. 7. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  8. 8. SOURCE D’UN RPMName: myappVersion: 1.0.0 NomRelease: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  9. 9. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  10. 10. SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1 VersionSummary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  11. 11. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  12. 12. SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache Tomcat Release (corrective)Group: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  13. 13. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  14. 14. SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/Communications Résumé du packageURL: http://www.mycorp.org/Vendor: MyCorpPackager: MyPackagerLicense: AGPLv1BuildArch: noarch%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  15. 15. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  16. 16. SOURCE D’UN RPMName: myappVersion: 1.0.0Release: 1Summary: MyApp powered by Apache TomcatGroup: Applications/CommunicationsURL: http://www.mycorp.org/Vendor: MyCorp URL du fournisseur (ex: www.mysql.com)Packager: MyPackagerLicense: AGPLv1BuildArch: noarch%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  17. 17. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  18. 18. 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 Licence%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  19. 19. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  20. 20. 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 Architecture (processeur, model ou neutre)%define tomcat_rel 7.0.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  21. 21. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  22. 22. 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.22Requires: java = 1.6.0 Pré-requis à l’exécution (zero à plusieurs)Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  23. 23. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  24. 24. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz Source (un à plusieurs)%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  25. 25. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  26. 26. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat Description complète du package%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  27. 27. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  28. 28. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp 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. 29. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  30. 30. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build Construction (depuis sources mais pas seulement)%install%clean%pre%post%preun%postun%files
  31. 31. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  32. 32. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install Organisation dans le système de fichiers%clean%pre%post%preun%postun%files
  33. 33. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  34. 34. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre Opérations pré installation%post%preun%postun%files
  35. 35. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  36. 36. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post Opérations post installation%preun%postun%files
  37. 37. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  38. 38. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun Opérations pre désinstallation%postun%files
  39. 39. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  40. 40. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun Opérations post désinstallation%files
  41. 41. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  42. 42. 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.22Requires: java = 1.6.0Source0: 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
  43. 43. 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.22Requires: java = 1.6.0Source0: apache-tomcat-%{tomcat_rel}.tar.gz%descriptionMyApp powered by Apache Tomcat%prep%setup -q -c%build%install%clean%pre%post%preun%postun%files
  44. 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. 45. 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
  46. 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. 47. TYPES DE RPMS
  48. 48. TYPES DE RPMSRPMs OSRPMs OS RPMs OS
  49. 49. TYPES DE RPMS RPMs OS RPMs OS RPMs OSFournis par votre distribution Linux
  50. 50. TYPES DE RPMS RPMs OS RPMs OS RPMs OSFournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif
  51. 51. TYPES DE RPMS RPMs OS RPMs OS RPMs OSFournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif Produits par les Devs & Ops
  52. 52. TYPES DE RPMS RPMs OS RPMs OS RPMs OSFournis par votre distribution Linux RPMs Applicatif RPMs Applicatif RPMs Applicatif Produits par les Devs & Ops RPMs Configuration RPMs Configuration RPMs Configuration RPMs Configuration
  53. 53. TYPES DE RPMS RPMs OS RPMs OS RPMs OSFournis 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. 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. 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. 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. 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. 58. DE JEOS À INSTANCE• Inventaire des besoins• Pré-requis et dépendances• Spécificités applicatives
  59. 59. LES COMMUNS• Serveur SSH• Comptes administrateur• Monitoring (SNMP)• Firewall (port 22 et SNMP autorisés)
  60. 60. MA PETITE FORGE• Subversion• Git• Jenkins• Nexus• Sonar
  61. 61. SUBVERSION• Apache HTTPd server• Subversion• Viewvc• Comptes utilisateurs
  62. 62. GIT• Environnement Java (OpenJDK, Sun/Oracle ou IBM)• GitBlit • Compte utilisateur spécifique • Tomcat 7 powered & single webapp
  63. 63. JENKINS• Environnement Java (OpenJDK, Sun/Oracle ou IBM)• Jenkins • Compte utilisateur spécifique • Tomcat 7 powered & single webapp
  64. 64. NEXUS• Environnement Java (OpenJDK, Sun/Oracle ou IBM)• Nexus • Compte utilisateur spécifique • Tomcat 7 powered & single webapp
  65. 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. 66. MYSQL BACKEND• MySQL • Comptes utilisateurs • Configuration InnoDB
  67. 67. GLOBAL FRONT-END• Apache HTTPd VHosts • Subversion • Jenkins • Nexus • Sonar
  68. 68. RPM DEVOPS• http://code.google.com/p/devops-incubator/ • RPMs pour Subversion, GitBlit, Jenkins, Nexus, Sonar • Pour OpenSuse 12.1
  69. 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

×