Transcript
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