BBL - TDD pour les DevOps - Puppet

Post on 12-Jan-2015

254 views 3 download

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

TDD pour les DevOps

BBL

Puppet édition

1 expert(e)passionné(e)

Participer - Contribuer - Accueillir - Suivre

Bagger1 panier

repas

BBL+ = Profit !ApprendreÉchanger

BrownBagLunch.fr - @bbl_fr

Sommaire

Infrastructure As CodeTest all the things!Conclusion

Intervenant

Olivier Bazoud @obazoud

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

Et vous ?

InfrastructureAs Codeavec Puppet

Infrastructure as code

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

Technique de dévelopement logicielMeilleures pratiques logiciels

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émentation minimaleVérifier que le test passeRépéter

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: 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

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é du code● Personnalisation possible

Analyse statique

Tests unitaires

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!

Exemple TDD HAProxy

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

Les tests doivent être “rouge”

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/puppetlabs/beaker-rspec

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

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○ Analyse statique de code Ruby

● Bats○ Framework de test bash

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

Conclusion

Questions ?

ROTI

J'ai perdu mon temps

Bof,j'ai baillé

Excellent !Encore !

Bien, mais sans plus

Intéressant, j'ai appris des choses