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
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
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
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
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
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
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- 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