présentation devops&puppet 04112014
DESCRIPTION
Présentation DevOps et PuppetTRANSCRIPT
TECHLUNCH – DEVOPS & PUPPET
05 Novembre 2014
Techlunch – DEVOPS & Puppet1
SOMMAIRE
1|Introduction au concept DevOps
2|DevOps à Sopra ?
3|Introduction Puppet
4|Puppet sur MSS
5|Bonnes pratiques
6|Questions
7|Bonus
Techlunch – DEVOPS & Puppet2
1- INTRODUCTION AU CONCEPT DEVOPS
Techlunch – DEVOPS & Puppet3
1- INTRODUCTION AU CONCEPT DEVOPS
Techlunch – DEVOPS & Puppet4
1- INTRODUCTION AU CONCEPT DEVOPS
Techlunch – DEVOPS & Puppet5
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 ?
1- INTRODUCTION AU CONCEPT DEVOPS
Techlunch – DEVOPS & Puppet6
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
1- INTRODUCTION AU CONCEPT DEVOPS
Techlunch – DEVOPS & Puppet7
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 »
1- INTRODUCTION AU CONCEPT DEVOPS
MSSanté V1 Équipe8
Gestion de configuration
-Écrit: DSL Ruby / JSON-Licence: GNU GPL / Apache-Bdd: PuppetDB/Hiera-Divers: Communauté d’utilisateur + grande,Documentation Excellente,Twitter
-É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
Techlunch – DEVOPS & Puppet9
Conteneur virtuel
- 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 & Puppet10
2 - DEVOPS À SOPRA ?
Techlunch – DEVOPS & Puppet11
2- DEVOPS À SOPRA ?
Techlunch – DEVOPS & Puppet12
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
2- DEVOPS À SOPRA ?
Techlunch – DEVOPS & Puppet13
Problèmes…
Veille technologique
Manque de processus d’industrialisation
Souvent mis de coté dans le projet
Pas « les bonnes ressources » sur le sujet
3 - INTRODUCTION PUPPET
Techlunch – DEVOPS & Puppet14
3- INTRODUCTION PUPPET
Techlunch – DEVOPS & Puppet15
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
3- INTRODUCTION PUPPET
Techlunch – DEVOPS & Puppet16
É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
3- INTRODUCTION PUPPET
Techlunch – DEVOPS & Puppet17
Arborescence
Import
Files
‐ Import.pl
Manifests
‐ Init.pp
Templates
‐ Config.pl.erb
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
Techlunch – DEVOPS & Puppet18
Script
Chaque module contient une ou plusieurs class qui utilise des « ressources »
3- INTRODUCTION PUPPET
Techlunch – DEVOPS & Puppet19
Attribut des ressources
Exemple
Fichier de templateworking_folder=<%= @WORKING_FOLDER %>
template_folder=<%= @TEMPLATE_FOLDER %>
import_folder=<%= @IMPORT_FOLDER %>
wsdl_url=<%= @WSDL_URL %>
Nodenode "bdd1.prod.mssante.fr" {
include bdd;
}
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
Techlunch – DEVOPS & Puppet20
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 standardnotice /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
3- INTRODUCTION PUPPET
Techlunch – DEVOPS & Puppet21
Puppet Master
Des certificats signés par le Puppet Master doivent être générés pour chaque Puppet agent
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
Techlunch – DEVOPS & Puppet22
Des outils liés à Puppet
MCollective: Framework pour orchestrer le déploiement (middleware)
Dashboard : Interface web de management pour analyser les rapports
4 – PUPPET SUR MSS
Techlunch – DEVOPS & Puppet23
4 – PUPPET SUR MSS
Techlunch – DEVOPS & Puppet24
4 – PUPPET SUR MSS
Techlunch – DEVOPS & Puppet25
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)
4 – PUPPET SUR MSS
Techlunch – DEVOPS & Puppet26
4 – PUPPET SUR MSS
Techlunch – DEVOPS & Puppet27
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
4 – PUPPET SUR MSS
Techlunch – DEVOPS & Puppet28
Jenkins
Outil d’intégration continue (build, tests, analyse de code)
Déploiement automatique sur les environnements internes avec mCollective
5 - BONNES PRATIQUES PUPPET
Techlunch – DEVOPS & Puppet29
5 - BONNES PRATIQUES PUPPET
Techlunch – DEVOPS & Puppet30
Installation FULL / DIFF (simplification des docs)
Document d’installation différentiel n’existe plus !
Centralisation des variables
Utilisation de l’articulation en nœud en deux niveaux :
<<Niveau 1>>
Node hostname_machine inherits composant1{
}
<<Niveau 2>>
Node composant1 {
include module1
}
5 - BONNES PRATIQUES PUPPET
Techlunch – DEVOPS & Puppet31
Mise en œuvre 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
6- QUESTION
Techlunch – DEVOPS & Puppet32
6- BONUS
Techlunch – DEVOPS & Puppet33
6- PRÉSENTATION D’ELK
Techlunch – DEVOPS & Puppet34
ELK : ElasticSearch / Logstash / Kibana
6- PRÉSENTATION D’ELK
Techlunch – DEVOPS & Puppet35
Logstash
6- PRÉSENTATION D’ELK
Techlunch – DEVOPS & Puppet36
ElasticSearch
6- PRÉSENTATION D’ELK
Techlunch – DEVOPS & Puppet37
Kibana
6- PRÉSENTATION D’ELK
Techlunch – DEVOPS & Puppet38
Des dashboards adaptés
6- PRÉSENTATION DE VAGRANT
Techlunch – DEVOPS & Puppet39
Création d’environnement virtuel
Configuration automatique
Système de BOX
VM « jetable »
S’affranchir de Vmware, VirtualBox, etc…
Échange de VM
6- LES OUTILS D’INDUSTRIALISATION UTILISÉS SUR MSS
Techlunch – DEVOPS & Puppet40
Jenkins
Moins utilisé pour :
Livraison
Déploiement
Le principe du déploiement continu (pipelining)
6- JENKINS PIPELINE
Techlunch – DEVOPS & Puppet41