Vous êtes sur la page 1sur 42

Pup

pet
édit
TDD ion

pour les DevOps


BBL
BrownBagLunch.fr - @bbl_fr

Bagger + BBL = Profit !


1 expert(e) 1 panier Apprendre
passionné(e) repas Échanger

Participer - Contribuer - Accueillir - Suivre


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 Action”
Et vous ?
Infrastructure
As Code
avec Puppet
Infrastructure as code
Coder l’infrastructure
installation de logiciels, configuration, …
administrateur système
Technique de dévelopement logiciel
Meilleures 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 minimale
Vérifier que le test passe
Ré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: 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
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” OS
Vagrant + Virtualbox
Docker, 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

Excellent ! Intéressant, j'ai


Encore ! appris des
choses

Bien, J'ai
mais Bof, perdu
sans j'ai mon
plus baillé temps