Pup
pet
édit
TDD ion
pour les DevOps
BBL
[Link] - @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, [Link]
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
[Link]
Dette technique
Coût d’un bug
[Link]
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
[Link]
● 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: [Link]
● Vérification des bonnes pratiques
● Vérification de la qualité du code
● Personnalisation possible
Analyse statique
Tests unitaires
Tests unitaires
[Link]
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”
● [Link]
● [Link]
Test sur un “vrai” OS
Vagrant + Virtualbox
Docker, Aws, ...
Configuration
[Link]
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