industrialisation des environnements de dev avec puppet et amazon (mais en fait avec chef)
DESCRIPTION
Retour d'experience du Groupe Express Roularta sur l'intégration de Puppet (mais finalement Chef) dans leur système d'information, permettant en quelques cliques et quelques minutes de mettre en place une ou plusieurs machines de développement parfaitement fonctionnelle et à jour, le tout hébergé sur le cloud Amazon.TRANSCRIPT
![Page 1: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/1.jpg)
et un peu de Chef aussi...
Forum PHP 2014
![Page 2: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/2.jpg)
SÉBASTIEN ANGÈLE DIRECTEUR ADJOINT DES NOUVEAUX MÉDIAS -‐ GROUPE EXPRESS ROULARTA
NICOLAS SILBERMAN CONSULTANT EN ARCHITECTURE IT -‐ VANILLE CARAMEL ENSEIGNANT -‐ ESSEC BUSINESS SCHOOL ANCIEN PRÉSIDENT DE L’AFUP
![Page 3: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/3.jpg)
¡ Groupe historique de presse L’Express, L’Expansion, L’Entreprise, Mieux Vivre Votre Argent, L’Express Styles, Côté Sud, Côté Ouest, Zeste, Point de Vue, Studio Ciné Live, Lire, Classica, A nous Paris, L’Etudiant…
¡ Sur le web :
7 millions de VU/mois TOP 5 des sites d’actu
1 million de VU/mois Leader de la déco
![Page 4: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/4.jpg)
![Page 5: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/5.jpg)
¡ « Non, chez moi, ça marche… »
¡ « C’est normal, je ne t’ai pas tout installé, ne regarde pas cette partie du site... »
¡ « Ah bon, tu voulais tester ça aussi ? »
¡ “T’inquiète pas, ça marchera en prod… »
![Page 6: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/6.jpg)
¡ Les postes de dev : standalone ou avec serveur de dev
¡ La recette / demo / staging
¡ La preprod
¡ La prod
![Page 7: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/7.jpg)
![Page 8: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/8.jpg)
L’Express en 2005: ¡ 1 application ¡ 1 base de données
![Page 9: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/9.jpg)
L’Express en 2014 : ¡ 6 applications PHP ¡ 15 bdd métiers
sous MySQL + mongoDB + SQL Server
¡ Redis ¡ RabbitMQ
![Page 10: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/10.jpg)
![Page 11: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/11.jpg)
● Reproduire un bout : trop de dépendances
● Le faire à la main : long et toujours quelque chose qui manque
![Page 12: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/12.jpg)
● Espérer que ça marche en prod...
![Page 13: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/13.jpg)
● le middleware
● les applicatifs
● les BDDs
● les fichiers (images, pdfs,...)
![Page 14: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/14.jpg)
¡ Industrialisation du code : Git
¡ Expérience du déploiement continu (Capistrano)
¡ Des compétences DevOps
![Page 15: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/15.jpg)
¡ C’est un mouvement
¡ Réduire les frictions entre § Les devs § Les ops (aka admin sys ou barbus)
¡ Pour une belle phrase commune : « travailler ensemble pour produire de la valeur pour l'entreprise »
sources wikipedia
![Page 16: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/16.jpg)
● Offres de service
● API
● Instances proposées ● … et envie de s’amuser !
![Page 17: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/17.jpg)
![Page 18: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/18.jpg)
¡ Démarrer une instance EC2 chez Amazon est très facile, on choisit les caractéristiques de la machine et c'est parti
¡ Démarrer une stack complète est également assez simple avec CloudFormation
¡ On peut par exemple demander via l'API d'Amazon: § Créer un serveur MySQL Master/Slave § Démarrer une instance EC2 et lui communiquer le EndPoint MySQL afin qu'il configure ses applications en fonction
![Page 19: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/19.jpg)
¡ Facile de se noyer et de se perdre dans les offres : § Se faire accompagner par quelqu’un qui connait pour gagner du temps
¡ Si aucune expérience dans le Cloud, attention à la maîtrise du budget § Poser des alertes sur des seuils budgétaires
¡ Gouvernance des machines et optimisation des ressources
§ Optimiser au plus près : une machine qui ne fait rien n’a aucune raison d’ être allumée
![Page 20: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/20.jpg)
¡ Logiciel qui permet de gérer les déploiements système et applicatif
¡ Historiquement : scripts Bash et Cfengine
¡ Deux candidats open source : § Puppet (Ruby) § Chef (Erlang)
¡ Et Ansible ? On ne connaissait pas !
![Page 21: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/21.jpg)
![Page 22: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/22.jpg)
¡ Précédentes expériences sur des stacks plus petites dans l’équipe
¡ Expérience significative de Nicolas Silberman chez Mediapart sur les problématiques d'environnement de développement
¡ Volonté de rapidement démarrer sur le projet.
![Page 23: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/23.jpg)
¡ Pour démarrer : utiliser Foreman directement
¡ Attention : configuration de type hiera (fichiers YAML fournissant des variables) non compatible avec Foreman: lourd travail d'adaptation pour repasser en Foreman.
¡ Recettes de la communauté sont utilisés par un grand nombre et quand elles sont maintenues, elles sont d'excellente qualité.
![Page 24: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/24.jpg)
¡ Complexité avec l'arbre de dépendances.
¡ Il n'est pas rare de se poser la question: cette action doit-‐elle être réalisée avant celle la ?
¡ Exemple de Dépendance: § install_apache § créer un Vhost § restart_apache
![Page 25: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/25.jpg)
¡ Puppet compile l'ensemble des recettes, réalise un arbre de dépendances et joue les modifications à faire sur le système dans l'ordre des dépendances qu'il a déterminé
¡ Quand on atteint la vingtaine (ou même cinquantaine) de niveau de dépendances, trouver d'où est le problème devient compliqué.
![Page 26: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/26.jpg)
![Page 27: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/27.jpg)
![Page 28: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/28.jpg)
![Page 29: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/29.jpg)
¡ Tutoriaux de la communauté et la documentation fournie par AWS faisait uniquement mention de Chef (même si la doc Puppet arrive doucement sur AWS)
¡ Choix de Chef par notre hébergeur pour la prod
¡ Recettes plus simples à écrire
![Page 30: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/30.jpg)
¡ Pas de « , » !
( ça le fait hein ! )
![Page 31: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/31.jpg)
¡ Au début : images de Base (AMI) des distributions linux
¡ Maintenant : Packer.io pour construire des images avec : § Nginx compilé (gestion des SSI) § Autres briques : MySQL, Redis, MemCache, RabbitMQ, Apache, Php,…
![Page 32: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/32.jpg)
![Page 33: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/33.jpg)
![Page 34: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/34.jpg)
¡ Un tableau de variable pour : § Créer les Vhost Nginx § Cloner le projet, exécuter un composer install § Cloner un sous repository dans un sous-‐dossier § Remplacer des fichiers au sein du dépot (fichiers de configuration)
§ Créer des règles spécifiques dans Varnish § Lancer des commandes de warmup, de générations de cache, …
![Page 35: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/35.jpg)
![Page 36: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/36.jpg)
![Page 37: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/37.jpg)
![Page 38: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/38.jpg)
¡ A remonter de la prod tous les jours : § 10 bases de donnée MySQL § 5 Bases MongoDB § 1 Dump Redis § 1 base SQL Serveur
¡ 30h pour tout remonter § Arbitrer la fraîcheur des données § Optimiser les bases de données
![Page 39: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/39.jpg)
¡ Pas de solutions idéales pour l’instant
¡ Warmup avec un disque dur (si, si)
¡ Rsync
![Page 40: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/40.jpg)
¡ Permet de faire des tests unitaires et fonctionnel sur les recettes
¡ Compatible avec beaucoup de provisionner (Puppet, Chef), bootstrapper (Amazon EC2).
¡ Concept de "Infrastructure as Code"
![Page 41: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/41.jpg)
¡ Faire le moins de choses à la main
¡ Gérer son parc
¡ Ne pas être devops dépendant
![Page 42: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/42.jpg)
![Page 43: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/43.jpg)
![Page 44: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/44.jpg)
¡ Très bonne documentation
¡ Disponibilité et temps de réponses
¡ SDK fourni pour PHP : se base sur Guzzle pour envoyer les requêtes et clients distincts pour chaque service (EC2Client, CloudFormationClient, S3Client, etc)
¡ Intégration rapide du SDK dans un projet Symfony2 grâce à l'injection de dépendance et l'event dispatcher
![Page 45: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/45.jpg)
¡ Beaucoup de documentation à parcourir
¡ Nécessaire de savoir précisément ce que l'on souhaite faire pour ne pas prendre une mauvaise direction
![Page 46: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/46.jpg)
¡ Investissement lourd au début
¡ Se mette en mode projet avec une équipe dédiée
¡ Travailler en agile et en lean...
¡ … tout en restant ambitieux !
![Page 47: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/47.jpg)
¡ Finir à 100% !
¡ Gérer le fichier de config pour les développeurs
¡ Faire des projections budgétaires
![Page 48: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)](https://reader036.vdocuments.site/reader036/viewer/2022081516/558d53a4d8b42a87338b463d/html5/thumbnails/48.jpg)
@sangele
@nsilberman