1. Puppet, la philosophie DevOps @Jeoffreybauvin @Versusmind
2. Jeoffrey Bauvin Consultant IT chez Versusmind Nancy, France @jeoffreybauvin
3. Introduction : DevOps ?
4. - quipes cloisonnes - Mauvaise collaboration - Lourdeur administrative / Retards de livraisons - Besoin dvolution rapide - Impact sur la qualit des applications DevOps : Pourquoi ?
5. Introduction : Pourquoi ?
6. DevOps : Popularit (1/2) Les bnfices du DevOps
7. DevOps : Composants
8. Automatisation IT
9. Dploiement manuel - Adapt pour un serveur, mais pour 30 ? - Un script Bash ? Est-ce maintenable ? - Et sur dautres systmes dexploitation ?
10. Dploiement centralis - Configuration centralise - Dploiement automatis de masse - Abstraction du systme dexploitation
11. Quels produits ? Chef (cr en 1993, dvelopp en Erlang) Puppet (cr en 2005, dvelopp en Ruby) Ansible (cr en 2012, dvelopp en Python) CFEngine (cr en 2013, dvelopp en C)
12. Puppet
13. Puppet - Logiciel libre (Apache 2.0) - Existe en version Enterprise - Support des machines virtuelles Amazon EC2 - Dashboard centralis - Fonctionne sous GNU/Linux, Windows et MacOS X - Version actuelle : 4.0, publie le 16 avril 2015 - Communication HTTPS entre le serveur et les agents
14. Ils utilisent Puppet La suite sur https://puppetlabs.com/about/customers
15. Architecture SSL
16. Installation de lagent - apt-get install puppet - Configuration dans /etc/puppet/puppet.conf : [main] server=puppet.versusmind.eu - Gnration du certificat ct Agent et soumission au serveur Puppet - Approbation (ou non) de la part du serveur Puppet - puppet agent -t
17. Un agent Puppet root@monserveur ~ # puppet agent -t Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Info: Caching catalog for monserveur.example.com Info: Applying configuration version '1431791808' Notice: /Stage[main]/Common::Install/Package[htop]/ensure: created Notice: Finished catalog run in 7.66 seconds
20. La Forge PuppetLabs https://forge.puppetlabs.com/ - Plus de 3 000 modules
21. Ressources natives File : crer un fichier ou un rpertoire Bien plus dattributs sur https://docs.puppetlabs.com/references/4.0.latest/type.html
22. Ressources natives Package : installer un paquet Providers : - apt (Debian / Ubuntu) - apple (Systmes OS X) - gem (Pour Ruby) - pip (pour Python) - macports (MacPorts sur OS X) - pacman (ArchLinux) - windows - ...
23. Ressources natives Service : grer les services Attributs : - enable : service activ au dmarrage du systme - hasrestart : le script possde un paramtre restart - restart : spcifier une commande de restart manuellement - ... Support : - Debian - Windows - OS X - ...
24. Ressources natives User : crer un utilisateur Attributs : - uid / gid : ID (numrique) pour lutilisateur et son groupe - Home : le rpertoire par dfaut - ...
25. Ressources natives Une multitude de ressources : - cron : dclarer une tche planifie - group : ajouter un groupe - interface : dclarer une interface rseau - exec : excuter une commande personnalise La suite sur https://docs.puppetlabs.com/references/latest/type.html
26. Exemple concret
27. Composants : Git / Git Flow - Git - Git Flow (develop, master, ) - Une branche par nouveau module - Pull Request !
28. Composants : Hiera - Sparer les donnes variables des modules - Fichiers .yaml
29. Hiera - Data bindings - Charger automatiquement les paramtres depuis Hiera
30. Noop / Environnements Noop : - /etc/puppet/puppet.conf : [agent] noop = true - Ne pas appliquer automatiquement le catalogue Puppet - puppet agent -t --no-noop Gestion des environnements : - Un environnement par utilisateur / feature - Une branche Git par environnement
31. Composants : Foreman ENC : External Node Classifier - Programme appel par le serveur Puppet au moment ou lagent demande son catalogue The Foreman : - Interface Web - Rassemble les rapports derreurs / succs - Statistiques sur lensemble de vos agents - Gestion des groupes dhtes : rles - Gestion des environnements