BBL - TDD pour les DevOps - Puppet

42
TDD pour les DevOps BBL Puppet édition

description

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.

Transcript of BBL - TDD pour les DevOps - Puppet

Page 1: BBL - TDD pour les DevOps - Puppet

TDD pour les DevOps

BBL

Puppet édition

Page 2: BBL - TDD pour les DevOps - Puppet

1 expert(e)passionné(e)

Participer - Contribuer - Accueillir - Suivre

Bagger1 panier

repas

BBL+ = Profit !ApprendreÉchanger

BrownBagLunch.fr - @bbl_fr

Page 3: BBL - TDD pour les DevOps - Puppet

Sommaire

Infrastructure As CodeTest all the things!Conclusion

Page 4: BBL - TDD pour les DevOps - Puppet

Intervenant

Olivier Bazoud @obazoud

DevOps Chef/PuppetSpring-*/JEE, Node.jsNoSQLCo-auteur de “Spring Batch in Action”

Page 5: BBL - TDD pour les DevOps - Puppet

Et vous ?

Page 6: BBL - TDD pour les DevOps - Puppet

InfrastructureAs Codeavec Puppet

Page 7: BBL - TDD pour les DevOps - Puppet

Infrastructure as code

Coder l’infrastructureinstallation de logiciels, configuration, …administrateur système

Technique de dévelopement logicielMeilleures pratiques logiciels

Page 8: BBL - TDD pour les DevOps - Puppet

Choix

http://koruxypress.blogspot.fr/2013/10/art-by-venn-diagrams-lauren-panepinto.html

Page 9: BBL - TDD pour les DevOps - Puppet

Dette technique

Page 10: BBL - TDD pour les DevOps - Puppet

Coût d’un bug

http://codefol.io/posts/ship-early

Page 11: BBL - TDD pour les DevOps - Puppet

Test Driven Development

Ecrire un test pour une fonctionnalitéVérifier que le test est “failed”Ecrire une implémentation minimaleVérifier que le test passeRépéter

Page 12: BBL - TDD pour les DevOps - Puppet

Test Driven Development

Page 13: BBL - TDD pour les DevOps - Puppet

Bénéfices

Cercle vertueux

Inspire la confiance

Refactoring sécurisé

Cas d’usage auto documenté

Page 14: BBL - TDD pour les DevOps - Puppet

Allez plus loin

● “Continuous integration”

● “Continuous deployment”

Page 15: BBL - TDD pour les DevOps - Puppet
Page 16: BBL - TDD pour les DevOps - Puppet

Exemple: haproxyhttps://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

Page 17: BBL - TDD pour les DevOps - Puppet

Rake

● Le “make” pour Ruby

Page 18: BBL - TDD pour les DevOps - Puppet

La synthaxe

Page 19: BBL - TDD pour les DevOps - Puppet

Vérification de la syntaxe

Page 20: BBL - TDD pour les DevOps - Puppet

Vérification de la syntaxe

Page 21: BBL - TDD pour les DevOps - Puppet

Les bonnes pratiques

Page 22: BBL - TDD pour les DevOps - Puppet

Analyse statique

Puppet lint: http://puppet-lint.com● Vérification des bonnes pratiques● Vérification de la qualité du code● Personnalisation possible

Page 23: BBL - TDD pour les DevOps - Puppet

Analyse statique

Page 24: BBL - TDD pour les DevOps - Puppet

Tests unitaires

Page 25: BBL - TDD pour les DevOps - Puppet

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!

Page 26: BBL - TDD pour les DevOps - Puppet

Exemple TDD HAProxy

● Spécifications○ Installer le package ‘haproxy’○ Configuration (basique)○ Service up

Les tests doivent être “rouge”

Page 27: BBL - TDD pour les DevOps - Puppet

Exemple TDD HAProxy

Page 28: BBL - TDD pour les DevOps - Puppet

Exemple TDD HAProxy

Implémentation

Page 29: BBL - TDD pour les DevOps - Puppet

Exemple TDD HAProxy

Le test est dans le “vert”

Page 30: BBL - TDD pour les DevOps - Puppet

Exemple HAProxy

Page 31: BBL - TDD pour les DevOps - Puppet

Tests acceptance

Page 32: BBL - TDD pour les DevOps - Puppet

Tests acceptance

“Puppet acceptance testing harness”● https://github.com/puppetlabs/beaker● https://github.com/puppetlabs/beaker-rspec

Test sur un “vrai” OSVagrant + VirtualboxDocker, Aws, ...

Page 33: BBL - TDD pour les DevOps - Puppet

Configuration

default.yml

Page 34: BBL - TDD pour les DevOps - Puppet

Serverspec“RSpec tests for your servers configured by Puppet, Chef or anything else.”

Page 35: BBL - TDD pour les DevOps - Puppet

Acceptance

Page 36: BBL - TDD pour les DevOps - Puppet
Page 37: BBL - TDD pour les DevOps - Puppet

Allez plus loin

Page 38: BBL - TDD pour les DevOps - Puppet

Outils

● Guard○ Permet de lancer des commandes à chaque

modifications de fichiers○ “Fast feedback”

● Rubocop○ Analyse statique de code Ruby

● Bats○ Framework de test bash

Page 39: BBL - TDD pour les DevOps - Puppet

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

Page 40: BBL - TDD pour les DevOps - Puppet

Conclusion

Page 41: BBL - TDD pour les DevOps - Puppet

Questions ?

Page 42: BBL - TDD pour les DevOps - Puppet

ROTI

J'ai perdu mon temps

Bof,j'ai baillé

Excellent !Encore !

Bien, mais sans plus

Intéressant, j'ai appris des choses