TDD 
pour les DevOps 
BBL 
Puppet édition
BrownBagLunch.fr - @bbl_fr 
Bagger 
BBL + = Profit ! 
1 expert(e) 
1 panier 
Apprendre 
passionné(e) 
repas 
Échanger 
Par...
Sommaire 
Infrastructure As Code 
Test all the things! 
Conclusion
Intervenant 
Olivier Bazoud @obazoud 
DevOps Chef/Puppet 
Spring-*/JEE, Node.js 
NoSQL 
Co-auteur de “Spring Batch in Acti...
Et vous ?
Infrastructure 
As Code 
avec Puppet
Infrastructure as code 
Coder l’infrastructure 
installation de logiciels, configuration, … 
administrateur système 
Techn...
Choix 
http://koruxypress.blogspot.fr/2013/10/art-by-venn-diagrams-lauren-panepinto.html
Dette technique
Coût d’un bug 
http://codefol.io/posts/ship-early
Test Driven Development 
Ecrire un test pour une fonctionnalité 
Vérifier que le test est “failed” 
Ecrire une implémentat...
Test Driven Development
Bénéfices 
Cercle vertueux 
Inspire la confiance 
Refactoring sécurisé 
Cas d’usage auto documenté
Allez plus loin 
● “Continuous integration” 
● “Continuous deployment”
Exemple: haproxy 
https://github.com/obazoud/tdd-for-devops-puppet.git 
● Spécifications 
○ Installer le package ‘haproxy’...
Rake 
● Le “make” pour Ruby
La synthaxe
Vérification de la syntaxe
Vérification de la syntaxe
Les bonnes pratiques
Analyse statique 
Puppet lint: http://puppet-lint.com 
● Vérification des bonnes pratiques 
● Vérification de la qualité d...
Analyse statique
Tests unitaires
Tests unitaires 
http://rspec-puppet.com/ 
Tester le comportement des manifests lorsque 
Puppet compile un manifest vers l...
Exemple TDD HAProxy 
● Spécifications 
○ Installer le package ‘haproxy’ 
○ Configuration (basique) 
○ Service up 
Les test...
Exemple TDD HAProxy
Exemple TDD HAProxy 
Implémentation
Exemple TDD HAProxy 
Le test est dans le “vert”
Exemple HAProxy
Tests acceptance
Tests acceptance 
“Puppet acceptance testing harness” 
● https://github.com/puppetlabs/beaker 
● https://github.com/puppet...
Configuration 
default.yml
Serverspec 
“RSpec tests for your servers configured by Puppet, Chef 
or anything else.”
Acceptance
Allez plus loin
Outils 
● Guard 
○ Permet de lancer des commandes à chaque 
modifications de fichiers 
○ “Fast feedback” 
● Rubocop 
○ Ana...
Outils 
● Cucumber 
○ Framework de type BDD 
● Kitchen (Chef) 
○ Equivalent à Beaker mais avec beaucoup plus de 
fonctionn...
Conclusion
Questions ?
ROTI 
J'ai 
perdu 
mon 
temps 
Bof, 
j'ai 
baillé 
Excellent ! 
Encore ! 
Bien, 
mais 
sans 
plus 
Intéressant, j'ai 
appr...
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
Prochain SlideShare
Chargement dans…5
×

BBL - TDD pour les DevOps - Puppet

2 040 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
2 040
Sur SlideShare
0
Issues des intégrations
0
Intégrations
18
Actions
Partages
0
Téléchargements
72
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

×