TECHLUNCH – DEVOPS & PUPPET 
05 Novembre 2014 
1 Techlunch – DEVOPS & Puppet
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
1- INTRODUCTION AU CONCEPT DEVOPS 
3 Techlunch – DEVOPS & Puppet
1- INTRODUCTION AU CONCEPT DEVOPS 
4 Techlunch – DEVOPS & Puppet
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
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
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
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
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
1- INTRODUCTION AU CONCEPT DEVOPS 
Techlunch – DEVOPS & Puppet 
10
2 - DEVOPS À SOPRA ? 
11 Techlunch – DEVOPS & Puppet
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
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
3 - INTRODUCTION PUPPET 
14 Techlunch – DEVOPS & Puppet
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
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
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
3- INTRODUCTION PUPPET 
Script 
Chaque module contient une ou plusieurs class qui utilise des « ressources » 
18 Techlunch – DEVOPS & Puppet
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'] 
}
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
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
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
4 – PUPPET SUR MSS 
23 Techlunch – DEVOPS & Puppet
4 – PUPPET SUR MSS 
24 Techlunch – DEVOPS & Puppet
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
4 – PUPPET SUR MSS 
26 Techlunch – DEVOPS & Puppet
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
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
5 - BONNES PRATIQUES PUPPET 
29 Techlunch – DEVOPS & Puppet
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
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
6- QUESTION 
32 Techlunch – DEVOPS & Puppet
6- BONUS 
33 Techlunch – DEVOPS & Puppet
6- PRÉSENTATION D’ELK 
ELK : ElasticSearch / Logstash / Kibana 
34 Techlunch – DEVOPS & Puppet
6- PRÉSENTATION D’ELK 
Logstash 
35 Techlunch – DEVOPS & Puppet
6- PRÉSENTATION D’ELK 
ElasticSearch 
36 Techlunch – DEVOPS & Puppet
6- PRÉSENTATION D’ELK 
Kibana 
37 Techlunch – DEVOPS & Puppet
6- PRÉSENTATION D’ELK 
Des dashboards adaptés 
38 Techlunch – DEVOPS & Puppet
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
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
6- JENKINS PIPELINE 
41 Techlunch – DEVOPS & Puppet

Présentation devops&puppet 04112014

  • 1.
    TECHLUNCH – DEVOPS& PUPPET 05 Novembre 2014 1 Techlunch – DEVOPS & Puppet
  • 2.
    SOMMAIRE 1|Introduction auconcept 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 AUCONCEPT DEVOPS 3 Techlunch – DEVOPS & Puppet
  • 4.
    1- INTRODUCTION AUCONCEPT DEVOPS 4 Techlunch – DEVOPS & Puppet
  • 5.
    1- INTRODUCTION AUCONCEPT 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 AUCONCEPT 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 AUCONCEPT 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 AUCONCEPT 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 AUCONCEPT 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 AUCONCEPT 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 - INTRODUCTIONPUPPET 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 – PUPPETSUR MSS 23 Techlunch – DEVOPS & Puppet
  • 24.
    4 – PUPPETSUR MSS 24 Techlunch – DEVOPS & Puppet
  • 25.
    4 – PUPPETSUR 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 – PUPPETSUR MSS 26 Techlunch – DEVOPS & Puppet
  • 27.
    4 – PUPPETSUR 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 – PUPPETSUR 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 - BONNESPRATIQUES PUPPET 29 Techlunch – DEVOPS & Puppet
  • 30.
    5 - BONNESPRATIQUES 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 - BONNESPRATIQUES 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 32Techlunch – DEVOPS & Puppet
  • 33.
    6- BONUS 33Techlunch – 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 DEVAGRANT 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 OUTILSD’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