Puppet, la philosophie DevOps

  • View
    426

  • Download
    2

Embed Size (px)

Text of Puppet, la philosophie DevOps

  1. 1. Puppet, la philosophie DevOps @Jeoffreybauvin @Versusmind
  2. 2. Jeoffrey Bauvin Consultant IT chez Versusmind Nancy, France @jeoffreybauvin
  3. 3. Introduction : DevOps ?
  4. 4. - quipes cloisonnes - Mauvaise collaboration - Lourdeur administrative / Retards de livraisons - Besoin dvolution rapide - Impact sur la qualit des applications DevOps : Pourquoi ?
  5. 5. Introduction : Pourquoi ?
  6. 6. DevOps : Popularit (1/2) Les bnfices du DevOps
  7. 7. DevOps : Composants
  8. 8. Automatisation IT
  9. 9. Dploiement manuel - Adapt pour un serveur, mais pour 30 ? - Un script Bash ? Est-ce maintenable ? - Et sur dautres systmes dexploitation ?
  10. 10. Dploiement centralis - Configuration centralise - Dploiement automatis de masse - Abstraction du systme dexploitation
  11. 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. 12. Puppet
  13. 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. 14. Ils utilisent Puppet La suite sur https://puppetlabs.com/about/customers
  15. 15. Architecture SSL
  16. 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. 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
  18. 18. Cycle de vie dun Agent
  19. 19. Configuration node /.*.domaine.com)$/ { class { jboss: } } Module Jboss : - Files : fichiers statiques - Manifests : code Puppet - Templates : fichiers dynamiques
  20. 20. La Forge PuppetLabs https://forge.puppetlabs.com/ - Plus de 3 000 modules
  21. 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. 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. 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. 24. Ressources natives User : crer un utilisateur Attributs : - uid / gid : ID (numrique) pour lutilisateur et son groupe - Home : le rpertoire par dfaut - ...
  25. 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. 26. Exemple concret
  27. 27. Composants : Git / Git Flow - Git - Git Flow (develop, master, ) - Une branche par nouveau module - Pull Request !
  28. 28. Composants : Hiera - Sparer les donnes variables des modules - Fichiers .yaml
  29. 29. Hiera - Data bindings - Charger automatiquement les paramtres depuis Hiera
  30. 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. 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
  32. 32. symposium { ensure => finished } Merci ! questions { ensure => present } @jeoffreybauvin