présentation devops&puppet 04112014

41
TECHLUNCH – DEVOPS & PUPPET 05 Novembre 2014 Techlunch – DEVOPS & Puppet 1

Upload: robert-de-sousa

Post on 07-Jul-2015

249 views

Category:

Engineering


4 download

DESCRIPTION

Présentation DevOps et Puppet

TRANSCRIPT

Page 1: Présentation devops&puppet 04112014

TECHLUNCH – DEVOPS & PUPPET

05 Novembre 2014

Techlunch – DEVOPS & Puppet1

Page 2: Présentation devops&puppet 04112014

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

Page 3: Présentation devops&puppet 04112014

1- INTRODUCTION AU CONCEPT DEVOPS

Techlunch – DEVOPS & Puppet3

Page 4: Présentation devops&puppet 04112014

1- INTRODUCTION AU CONCEPT DEVOPS

Techlunch – DEVOPS & Puppet4

Page 5: Présentation devops&puppet 04112014

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 ?

Page 6: Présentation devops&puppet 04112014

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

Page 7: Présentation devops&puppet 04112014

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 »

Page 8: Présentation devops&puppet 04112014

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

Page 9: Présentation devops&puppet 04112014

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

Page 10: Présentation devops&puppet 04112014

1- INTRODUCTION AU CONCEPT DEVOPS

Techlunch – DEVOPS & Puppet10

Page 11: Présentation devops&puppet 04112014

2 - DEVOPS À SOPRA ?

Techlunch – DEVOPS & Puppet11

Page 12: Présentation devops&puppet 04112014

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

Page 13: Présentation devops&puppet 04112014

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

Page 14: Présentation devops&puppet 04112014

3 - INTRODUCTION PUPPET

Techlunch – DEVOPS & Puppet14

Page 15: Présentation devops&puppet 04112014

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

Page 16: Présentation devops&puppet 04112014

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

Page 17: Présentation devops&puppet 04112014

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

Page 18: Présentation devops&puppet 04112014

3- INTRODUCTION PUPPET

Techlunch – DEVOPS & Puppet18

Script

Chaque module contient une ou plusieurs class qui utilise des « ressources »

Page 19: Présentation devops&puppet 04112014

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'] }

Page 20: Présentation devops&puppet 04112014

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

Page 21: Présentation devops&puppet 04112014

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

Page 22: Présentation devops&puppet 04112014

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

Page 23: Présentation devops&puppet 04112014

4 – PUPPET SUR MSS

Techlunch – DEVOPS & Puppet23

Page 24: Présentation devops&puppet 04112014

4 – PUPPET SUR MSS

Techlunch – DEVOPS & Puppet24

Page 25: Présentation devops&puppet 04112014

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)

Page 26: Présentation devops&puppet 04112014

4 – PUPPET SUR MSS

Techlunch – DEVOPS & Puppet26

Page 27: Présentation devops&puppet 04112014

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

Page 28: Présentation devops&puppet 04112014

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

Page 29: Présentation devops&puppet 04112014

5 - BONNES PRATIQUES PUPPET

Techlunch – DEVOPS & Puppet29

Page 30: Présentation devops&puppet 04112014

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

}

Page 31: Présentation devops&puppet 04112014

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

Page 32: Présentation devops&puppet 04112014

6- QUESTION

Techlunch – DEVOPS & Puppet32

Page 33: Présentation devops&puppet 04112014

6- BONUS

Techlunch – DEVOPS & Puppet33

Page 34: Présentation devops&puppet 04112014

6- PRÉSENTATION D’ELK

Techlunch – DEVOPS & Puppet34

ELK : ElasticSearch / Logstash / Kibana

Page 35: Présentation devops&puppet 04112014

6- PRÉSENTATION D’ELK

Techlunch – DEVOPS & Puppet35

Logstash

Page 36: Présentation devops&puppet 04112014

6- PRÉSENTATION D’ELK

Techlunch – DEVOPS & Puppet36

ElasticSearch

Page 37: Présentation devops&puppet 04112014

6- PRÉSENTATION D’ELK

Techlunch – DEVOPS & Puppet37

Kibana

Page 38: Présentation devops&puppet 04112014

6- PRÉSENTATION D’ELK

Techlunch – DEVOPS & Puppet38

Des dashboards adaptés

Page 39: Présentation devops&puppet 04112014

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

Page 40: Présentation devops&puppet 04112014

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)

Page 41: Présentation devops&puppet 04112014

6- JENKINS PIPELINE

Techlunch – DEVOPS & Puppet41