si … “ça fait que ça dit et ça dit ce que ça fait” Keep It Simple Stupid (KISS) Exemple : un module mysql, n’installe que mysql, pas emacs en plus parceque les DBA préferent
si … “je comprends comment ça marche” Clean Code Exemple : on fait du puppet avec “package”, “file” etc pas des oneliner shell de 400 signes dans un exec Exemple : on n’abuse pas de l’héritage, des ancres partout ou des collecteurs pour modifier des ressources
pour l’équipe sécurité, intégrer des confs durcies par défaut dans le module Apache … pour les astreintes, des noms de modules tellement clairs que le rapport Puppet devient la référence quand on se réveille à 3h
les user stories “Je développe ${telle fonctionnalité} pour que ${telle personne} puisse effectuer ${telle action} qui a du sens parce que ${telle plus value}”
… des revues de codes ... … du pair programming pour améliorer le “collective code ownership” ... … et des coding dojo pour faire progresser tout le monde
Ne perdez pas d'énergie là dedans “Faut absolument livrer pour le 30 juin” “Pourquoi?” “Parce que dans la roadmap d’octobre, on a dit que c’était un projet du 2e trimestre !”
poste... Souvent associé avec la paperasserie aigüe ! Soyez efficients, aller voir les bonnes personnes directement “Pour faire X, il faut demander la validation à Y et Z doit valider l’architecture”
démarche… Vous passerez votre temps à vous justifier “Faire des tests? Tester c’est douter !” “Vous avez besoin de quoi? Faire du refactoring??” “Ça marche, pourquoi revenir dessus?
à fait les mêmes propriétés que du python/java/autre langage Souvent, la difficulté/fragilité réside dans l’ installation/configuration/exploitation d’un composant Au lieu de principalement refactorer une fonction de 20-50 lignes, on va refactorer une classe de 300 lignes
code produit OBJECTIFS Vérifie la syntaxe : • .pp avec le Puppet DSL • .erb templates ruby DSL • .yml fichiers hiera YAML • .rb plugins en Ruby FONCTIONNEMENT • Ça ne vérifie que la syntaxe, pas que les commandes existent OÙ EXÉCUTER ? Secondes TEMPS D'EXÉCUTION Serveur d’intégration continue Pre-commit hook sur les postes de travail POINTS CLÉS Carte d’identité : Puppet files parser
style sont bien suivies OBJECTIFS Vérifie des choses comme : • Tabs au lieu des double espaces • String avec double quote sans variable dedans • Paramètres dupliqués dans les ressources • Switch case sans case par défaut • “ensure” qui n’est pas le premier paramètre • … FONCTIONNEMENT • Utilise les conventions de la communauté • Possibilité d’étendre avec ses propres règles OÙ EXÉCUTER ? Secondes TEMPS D'EXÉCUTION Serveur d’intégration continue Pre-commit hook sur les postes de travail POINTS CLÉS Carte d’identité : Puppet Lint
vite la logique du code n’est pas perdue Particulièrement utile pour conserver l’ intention lors de l'écriture d’un profile Ou pour écrire des modules ultra polyvalents (comme ceux de puppetlabs)
est censé faire dans différentes situations (OS, paramètres d’entrée) • Cela va valider la logique algorithmique (if/else), la propagation de variables... OBJECTIFS 1) Puppet compile un catalogue avec certains facts (c’est l’idée, pas exactement ce qui est fait) 2) RSpec-Puppet compare ce qu’il y a dans le catalogue et ce que les tests disent FONCTIONNEMENT • Le plus difficile est de ne pas traduire son code dans un autre langage… • Les tests ne tournent pas sur une vraie machine : si le package n’existe pas, ça ne le dira pas OÙ EXÉCUTER ? 2 secondes à 2 minutes TEMPS D'EXÉCUTION Serveur d’intégration continue Pre-commit hook sur les postes de travail POINTS CLÉS Carte d’identité : RSpec-Puppet
le module fonctionne bien en vrai Attention, il y a certains pré-requis au niveau de votre SI : création de VM via API, isolation des environnements etc
fournit une infrastructure utilisable • S’assurer que le code est bien idempotent OBJECTIFS 1) Demande une VM (vagrant, AWS, voir même Docker) 2) Applique le module Puppet 3) Verifie à l’aide de Serverspec que tout est ok FONCTIONNEMENT • L’idée est de tester les voies royales • L’idée est d’automatiser ce que vous testez manuellement : création d’une vm, puppet apply, netstat + ps pour vérifier que ça tourne ... OÙ EXÉCUTER ? 2 minutes (docker simple) à plusieurs dizaines de minutes TEMPS D'EXÉCUTION Serveur d’intégration continue POINTS CLÉS Carte d’identité : Beaker
vérifier la résilience Tir de performances via Gatling Scénarios de pentests ou vérification de conformité SCAP pour la sécurité Tests end-to-end des applications déployées