BBL - TDD pour les DevOps - Puppet
-
Upload
olivier-bazoud -
Category
Documents
-
view
254 -
download
3
description
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