BBL - TDD pour les DevOps - Puppet

1 848 vues

Publié le

Le Test Driven Infrastructure, c'est un peu le TDD pour les projets DevOps. Il va vous permettre de tester votre infrastructure unitairement, de bout en bout et à chaque changement.

0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 848
Sur SlideShare
0
Issues des intégrations
0
Intégrations
18
Actions
Partages
0
Téléchargements
67
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

BBL - TDD pour les DevOps - Puppet

  1. 1. TDD pour les DevOps BBL Puppet édition
  2. 2. BrownBagLunch.fr - @bbl_fr Bagger BBL + = Profit ! 1 expert(e) 1 panier Apprendre passionné(e) repas Échanger Participer - Contribuer - Accueillir - Suivre
  3. 3. Sommaire Infrastructure As Code Test all the things! Conclusion
  4. 4. Intervenant Olivier Bazoud @obazoud DevOps Chef/Puppet Spring-*/JEE, Node.js NoSQL Co-auteur de “Spring Batch in Action”
  5. 5. Et vous ?
  6. 6. Infrastructure As Code avec Puppet
  7. 7. Infrastructure as code Coder l’infrastructure installation de logiciels, configuration, … administrateur système Technique de dévelopement logiciel Meilleures pratiques logiciels
  8. 8. Choix http://koruxypress.blogspot.fr/2013/10/art-by-venn-diagrams-lauren-panepinto.html
  9. 9. Dette technique
  10. 10. Coût d’un bug http://codefol.io/posts/ship-early
  11. 11. Test Driven Development Ecrire un test pour une fonctionnalité Vérifier que le test est “failed” Ecrire une implémentation minimale Vérifier que le test passe Répéter
  12. 12. Test Driven Development
  13. 13. Bénéfices Cercle vertueux Inspire la confiance Refactoring sécurisé Cas d’usage auto documenté
  14. 14. Allez plus loin ● “Continuous integration” ● “Continuous deployment”
  15. 15. Exemple: haproxy https://github.com/obazoud/tdd-for-devops-puppet.git ● Spécifications ○ Installer le package ‘haproxy’ ○ Configuration (basique) ○ Service up ● Installation ○ apt-get/yum install puppet ○ gem install bundler ○ bundle install
  16. 16. Rake ● Le “make” pour Ruby
  17. 17. La synthaxe
  18. 18. Vérification de la syntaxe
  19. 19. Vérification de la syntaxe
  20. 20. Les bonnes pratiques
  21. 21. Analyse statique Puppet lint: http://puppet-lint.com ● Vérification des bonnes pratiques ● Vérification de la qualité du code ● Personnalisation possible
  22. 22. Analyse statique
  23. 23. Tests unitaires
  24. 24. Tests unitaires http://rspec-puppet.com/ Tester le comportement des manifests lorsque Puppet compile un manifest vers le catalogue de ressources Puppet Ici, on ne teste pas un OS réel!
  25. 25. Exemple TDD HAProxy ● Spécifications ○ Installer le package ‘haproxy’ ○ Configuration (basique) ○ Service up Les tests doivent être “rouge”
  26. 26. Exemple TDD HAProxy
  27. 27. Exemple TDD HAProxy Implémentation
  28. 28. Exemple TDD HAProxy Le test est dans le “vert”
  29. 29. Exemple HAProxy
  30. 30. Tests acceptance
  31. 31. Tests acceptance “Puppet acceptance testing harness” ● https://github.com/puppetlabs/beaker ● https://github.com/puppetlabs/beaker-rspec Test sur un “vrai” OS Vagrant + Virtualbox Docker, Aws, ...
  32. 32. Configuration default.yml
  33. 33. Serverspec “RSpec tests for your servers configured by Puppet, Chef or anything else.”
  34. 34. Acceptance
  35. 35. Allez plus loin
  36. 36. Outils ● Guard ○ Permet de lancer des commandes à chaque modifications de fichiers ○ “Fast feedback” ● Rubocop ○ Analyse statique de code Ruby ● Bats ○ Framework de test bash
  37. 37. Outils ● Cucumber ○ Framework de type BDD ● Kitchen (Chef) ○ Equivalent à Beaker mais avec beaucoup plus de fonctionnalités et stabilité ○ Existe un PR pour intégrer Puppet ● Jenkins ○ Continuous integration / deploiment
  38. 38. Conclusion
  39. 39. Questions ?
  40. 40. ROTI J'ai perdu mon temps Bof, j'ai baillé Excellent ! Encore ! Bien, mais sans plus Intéressant, j'ai appris des choses

×