Publicité
Publicité

Contenu connexe

Publicité
Publicité

Présentation devops&puppet 04112014

  1. TECHLUNCH – DEVOPS & PUPPET 05 Novembre 2014 1 Techlunch – DEVOPS & Puppet
  2. SOMMAIRE 1|Introduction au concept DevOps 2|DevOps à Sopra ? 3|Introduction Puppet 4|Puppet sur MSS 5|Bonnes pratiques 6|Questions 7|Bonus 2 Techlunch – DEVOPS & Puppet
  3. 1- INTRODUCTION AU CONCEPT DEVOPS 3 Techlunch – DEVOPS & Puppet
  4. 1- INTRODUCTION AU CONCEPT DEVOPS 4 Techlunch – DEVOPS & Puppet
  5. 1- INTRODUCTION AU CONCEPT DEVOPS Problèmes Différentes approches métier => Différents besoins => Problématiques différentes Communication parfois peu évidente Qui automatise les tâches ? Qui industrialise ? A quel moment ? 5 Techlunch – DEVOPS & Puppet
  6. 1- INTRODUCTION AU CONCEPT DEVOPS Deux entités : Mouvement visant à réduire la friction organisationnelle entre les "devs" (chargés de faire évoluer le système d'information) et les "ops" (chargés d'exploiter les applications existantes) Personne qui fait le pont entre les deux parties en connaissant l’univers de l’un et de l’autre. Chargé d’apporter l’industrialisation au sein du projet (ou de l’améliorer) En résumé : Travailler ensemble, promouvoir la coopération Gain de temps sur des taches répétitives Automatisation des processus Culture basée sur la veille technologique DevopsDay : journées de conférences et de forums ouverts au public sur le thème du DevOps 6 Techlunch – DEVOPS & Puppet
  7. 1- INTRODUCTION AU CONCEPT DEVOPS DevOps Engineer Comprend les problématiques du Dev et de l’Ops Améliore la mise en production Facilite les échanges Industrialise les environnements / tâches Parfois on parle même du prochain « PM » 7 Techlunch – DEVOPS & Puppet
  8. 1- INTRODUCTION AU CONCEPT DEVOPS Gestion de configuration -Écrit: DSL Ruby / JSON -Licence: GNU GPL / Apache -Bdd: PuppetDB/Hiera -Divers: Communauté d’utilisateur + grande, Documentation Excellente, Twitter 8 MSSanté V1 Équipe -Écrit: Language Ruby / Earlang -Licence: Apache -Bdd: Postgres, Solr -Divers: Bonne documentation, Facebook -Écrit: Langage C -Licence: GNU GPL -Divers: Très rapide, Consomme très peu, Documentation…, Difficile d’accès -Écrit: Python -Licence: Apache -Divers:Très rapide, Très à l’écoute de la communauté, Linkedin
  9. 1- INTRODUCTION AU CONCEPT DEVOPS Conteneur virtuel 9 Techlunch – DEVOPS & Puppet - Type: LXC(Linux Containers) - Licence: GNU LGPL -Écrit: C -Divers: Plus rapide, Ebay -Type: VM -Licence: MIT Licence -Écrit: Ruby - Divers: Supporté par plus OS
  10. 1- INTRODUCTION AU CONCEPT DEVOPS Techlunch – DEVOPS & Puppet 10
  11. 2 - DEVOPS À SOPRA ? 11 Techlunch – DEVOPS & Puppet
  12. 2- DEVOPS À SOPRA ? Qui ? SB ? ARC ? PM ?? Filière à part entière ? A quel moment du projet ? Début ? Pendant ? Fin ? Les outils ? Jenkins Sonar Maven SVN/GIT Puppet 12 Techlunch – DEVOPS & Puppet
  13. 2- DEVOPS À SOPRA ? Problèmes… Veille technologique Manque de processus d’industrialisation Souvent mis de coté dans le projet Pas « les bonnes ressources » sur le sujet 13 Techlunch – DEVOPS & Puppet
  14. 3 - INTRODUCTION PUPPET 14 Techlunch – DEVOPS & Puppet
  15. 3- INTRODUCTION PUPPET Puppet Outil de gestion de configuration Permet de gérer les déploiements système et applicatif Intégré dans le repository RedHat-Base DSL Ruby/JSON Utilise une architecture client/serveur ou juste client 15 Techlunch – DEVOPS & Puppet
  16. 3- INTRODUCTION PUPPET Éviter les tâches répétitives : on ne fait le travail de configuration qu’une seule fois Configuration des hôtes Gestion des applications, services, etc. … Permettre une configuration homogène de parc (recette, pré-production, production) Déployer rapidement des machines Gain de temps lors de l’exécution d’une MEP et lors de la création de nouveaux environnements / machines Installer complètement un composant ou le mettre à jour… avec le même script 16 Techlunch – DEVOPS & Puppet
  17. 3- INTRODUCTION PUPPET Arborescence Import Files ‐ Import.pl Manifests ‐ Init.pp Templates ‐ Config.pl.erb 17 Techlunch – DEVOPS & Puppet Module : est une structure qui permet l’installation d’un composant. Par convention le fichier dit « main » du module est le init.pp. On doit déclarer une classe dans chacun des fichiers du dossier manifest. La class dite « mère » doit porter le nom du module. Tous les fichiers templates doivent avoir comme extension .erb
  18. 3- INTRODUCTION PUPPET Script Chaque module contient une ou plusieurs class qui utilise des « ressources » 18 Techlunch – DEVOPS & Puppet
  19. 3- INTRODUCTION PUPPET Attribut des ressources Exemple Fichier de template working_folder=<%= @WORKING_FOLDER %> template_folder=<%= @TEMPLATE_FOLDER %> import_folder=<%= @IMPORT_FOLDER %> wsdl_url=<%= @WSDL_URL %> Node node "bdd1.prod.mssante.fr" { include bdd; } 19 Techlunch – DEVOPS & Puppet service{ httpd: ensure=> true } file { '/etc/passwd': owner => root, group => root, mode => 644 } exec { 'extract_tgz': command => "/bin/tar --strip-components=1 -xvf $WORKING_FOLDER/$PAERPA_TGZ", cwd => "$WORKING_FOLDER/$PAERPA_BATCH_FOLDER" , require => File['copy_tgz'] }
  20. 3- INTRODUCTION PUPPET Puppet agent Lancement de module puppet apply -e "include module“ puppet apply --modulepath=/tmp/puppet_install -e "include module“ Lancement de fichier nodes Rapport sur la sortie standard notice /Stage[main]//Node[dbmy-master]/Automysqlbackup::Backup[automysqlbackup]/File[/etc/cron.daily/automysqlbackup-automysqlbackup]/ content: content changed '{md5}ab094dbf90957a96d7c5960aec7db107' to '{md5}b746e8f3d54780c8aae3c8568d0c0913‘ notice:/Stage[main]/Mysqlsocle::Mysqlsoclemaster/Mysql_user[replication@%DBMY_SLAVE_IP]/ensure: created notice: /Stage[main]/Mysqlsocle::Mysqlsoclemaster/Mysql_grant[replication@%DBMY_SLAVE_IP/*.*]/ensure: created notice: /Stage[main]//Node[dbmy-master]/Exec[mkdir -p /var/backup/mysql]/returns: executed successfully notice: /Stage[main]//Node[dbmy-master]/Automysqlbackup::Backup[automysqlbackup]/File[/usr/local/etc/automysqlbackup.conf]/content: content changed '{md5}d1149a15b29302ddd7378270345d1ceb' to '{md5}6d421cd0a3cb98d36b2b4d981bdec2de‘ notice: /Stage[main]//Node[dbmy-master]/Automysqlbackup::Backup[automysqlbackup]/File[/var/backup/mysql/db]/ensure: created notice: Finished catalog run in 0.94 seconds 20 Techlunch – DEVOPS & Puppet
  21. 3- INTRODUCTION PUPPET Puppet Master Des certificats signés par le Puppet Master doivent être générés pour chaque Puppet agent 21 Techlunch – DEVOPS & Puppet Serveur de déploiement / Puppet Master Machine à gérer / Puppet Agent Machine à gérer / Puppet Agent Machine à gérer / Puppet Agent Machine à gérer / Puppet Agent Machine à gérer / Puppet Agent
  22. 3- INTRODUCTION PUPPET Des outils liés à Puppet MCollective: Framework pour orchestrer le déploiement (middleware) Dashboard : Interface web de management pour analyser les rapports 22 Techlunch – DEVOPS & Puppet
  23. 4 – PUPPET SUR MSS 23 Techlunch – DEVOPS & Puppet
  24. 4 – PUPPET SUR MSS 24 Techlunch – DEVOPS & Puppet
  25. 4 – PUPPET SUR MSS Les grands principes d’industrialisation mis en place Automatisation des installations (Puppet) Automatisation des déploiements en intégration (Jenkins + Mcollective) Automatisation de la gestion de configuration de plateforme (Puppet) 25 Techlunch – DEVOPS & Puppet
  26. 4 – PUPPET SUR MSS 26 Techlunch – DEVOPS & Puppet
  27. 4 – PUPPET SUR MSS Utilisation de Puppet : en mode standalone en prod en mode standalone et serveur/client chez nous Éléments connexes au projet ‐ Centralisation des variables ‐ Système de nodes ‐ Installation FULL ou Différentielle ‐ Ordonnancement des tâches 27 Techlunch – DEVOPS & Puppet
  28. 4 – PUPPET SUR MSS Jenkins Outil d’intégration continue (build, tests, analyse de code) Déploiement automatique sur les environnements internes avec mCollective 28 Techlunch – DEVOPS & Puppet
  29. 5 - BONNES PRATIQUES PUPPET 29 Techlunch – DEVOPS & Puppet
  30. 5 - BONNES PRATIQUES PUPPET Installation FULL / DIFF (simplification des docs) Document d’installation différentiel n’existe plus ! Centralisation des variables Utilisation de l’articulation en noeud en deux niveaux : <<Niveau 1>> Node hostname_machine inherits composant1{ } <<Niveau 2>> Node composant1 { include module1 } 30 Techlunch – DEVOPS & Puppet
  31. 5 - BONNES PRATIQUES PUPPET Mise en oeuvre d’un outil de gestion de version (SVN, GIT, …) au niveau du serveur de référence Découpage en module « mono-fonctionnalité » (ex : apache) S’appuyer sur les modules déjà existant (testé et approuvé) sous puppetlabs / puppetforge / github 31 Techlunch – DEVOPS & Puppet
  32. 6- QUESTION 32 Techlunch – DEVOPS & Puppet
  33. 6- BONUS 33 Techlunch – DEVOPS & Puppet
  34. 6- PRÉSENTATION D’ELK ELK : ElasticSearch / Logstash / Kibana 34 Techlunch – DEVOPS & Puppet
  35. 6- PRÉSENTATION D’ELK Logstash 35 Techlunch – DEVOPS & Puppet
  36. 6- PRÉSENTATION D’ELK ElasticSearch 36 Techlunch – DEVOPS & Puppet
  37. 6- PRÉSENTATION D’ELK Kibana 37 Techlunch – DEVOPS & Puppet
  38. 6- PRÉSENTATION D’ELK Des dashboards adaptés 38 Techlunch – DEVOPS & Puppet
  39. 6- PRÉSENTATION DE VAGRANT Création d’environnement virtuel Configuration automatique Système de BOX VM « jetable » S’affranchir de Vmware, VirtualBox, etc… Échange de VM 39 Techlunch – DEVOPS & Puppet
  40. 6- LES OUTILS D’INDUSTRIALISATION UTILISÉS SUR MSS Jenkins Moins utilisé pour : Livraison Déploiement Le principe du déploiement continu (pipelining) 40 Techlunch – DEVOPS & Puppet
  41. 6- JENKINS PIPELINE 41 Techlunch – DEVOPS & Puppet
Publicité