SlideShare ist ein Scribd-Unternehmen logo
1 von 45
@obazoud - @joelwurtz#tdd4devops
Test Driven Infrastructure
@obazoud - @jwurtz
Kyriba, Jolicode
Chefs étoilés
@obazoud - @joelwurtz#tdd4devops 2
Speakers
•Olivier Bazoud
–Développeur, DevOps
–Spring-*/JEE, Node.js, ...
–Co-auteur de “Spring Batch in Action”
•Joel Wurtz
–Développeur pour les devs @jolicode
–PHP (haters gonna hate), Chef, Docker, ...
–Formateur Chef @humancoders
@obazoud - @joelwurtz#tdd4devops 3
Test Driven Infrastructure
•Présentation de chef - 25mn
•Cookbooks
•Tout est ressource
•Tests et qualités
•Mise en place de l'environnement de travail - 5mn
•Écriture d'un cookbook en TDD - 2h30
@obazoud - @joelwurtz#tdd4devops 4
Gestionnaire de configuration
•Automatisation de son infrastructure
•Orchestration
•Configuration unique, partagée et dynamique
•Framework de scripts
•Normalisation
@YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops
@obazoud - @joelwurtz#tdd4devops 6
Chef
•Créé en 2008
•Open-source (Apache)
•Ruby (+ Erlang pour le serveur)
•Écriture des scripts en ruby et json
•Système agent-serveur
•Exécution des scripts dans l'ordre où c'est écrit
•Disponible sans serveur (chef-solo)
•Script en mode Normalisation over Configuration
•Idempotent
@obazoud - @joelwurtz#tdd4devops 7
Bien plus que des scripts...
•Orchestration complète de votre infrastructure
•Interfaçage avec différents providers
– Amazon
– Google Cloud
– Vagrant
– ...
•Nombreux scripts open-source
– community.opscode.com
– Cookbooks TravisCi
– ...
@obazoud - @joelwurtz#tdd4devops 8
Composants
•Chef-Solo : Joue les recettes chef sur un environnement
•Chef-Client : Chef-Solo + Récuperation des recettes sur
un serveur distant (Chef-Server)
•Chef-Server : Possède la connaissance de votre
infrastructure
•Knife : Outil permettant de communiquer avec
Chef-Server
@YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops
Cookbooks
@obazoud - @joelwurtz#tdd4devops 10
Chef repository
certificats/
cookbooks/
tomcat7/
...
data_bags/
environments/
roles/
@obazoud - @joelwurtz#tdd4devops 11
Cookbooks
cookbooks/
tomcat7/
php/
mysql/
...
Ensemble de scripts décrivant l'installation d'un (et
un seul) service/application
@obazoud - @joelwurtz#tdd4devops 12
Cookbook (sans le s)
cookbooks/
tomcat7/
recipes/
default.rb Minimum requis pour un cookbook (exemple d'une
recette pour tomcat7)
@obazoud - @joelwurtz#tdd4devops 13
Exemple
# Install package
package 'tomcat7' do
action :install
end
# Use setenv.sh template
template '/usr/share/tomcat7/bin/setenv.sh' do
source 'setenv.sh.erb'
owner 'tomcat7'
group 'tomcat7'
mode '755'
end
# Service managed by Chef
service 'tomcat7' do
supports restart: true, reload: false, status: true
action [:start, :enable]
end
@obazoud - @joelwurtz#tdd4devops 14
Exemple
# Install package
package 'tomcat7' do
action :install
end
@obazoud - @joelwurtz#tdd4devops 15
Exemple
# Use setenv.sh template
template '/usr/share/tomcat7/bin/setenv.sh' do
source 'setenv.sh.erb'
owner 'tomcat7'
group 'tomcat7'
mode '755'
end
@obazoud - @joelwurtz#tdd4devops 16
Exemple
# Service managed by Chef
service 'tomcat7' do
supports restart: true, reload: false, status: true
action [:start, :enable]
end
@YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops
Ressources
@obazoud - @joelwurtz#tdd4devops 18
Tout est ressource
•DSL Chef
•package, template et service sont des ressources
•Une ressource est une définition
•Une ressource consiste en un type, un nom et des
attributs
•L’exécution de cette dernière est réalisée avec des
providers
@obazoud - @joelwurtz#tdd4devops 19
Exemple
# Install package
package 'tomcat7' do
action :install
end
@obazoud - @joelwurtz#tdd4devops 20
Ressource
•Certains attributs sont communs à toutes les ressources
– action : état souhaité de la ressource (le nom est
trompeur)
– ignore_failure : n'arrête pas l’exécution en cas
d'erreur
– provider : implémentation pour la ressource
– …
@obazoud - @joelwurtz#tdd4devops 21
Ressource
•Condition d'exécution
–attributs permettant de définir si la ressource doit
s’exécuter (permet de passer une ressource non
idempotente en ressource idempotente)
• Subscribes
–attribut permettant de dire que la ressource s'exécute
après une autre ressource
•Notifications
–exécute une action sur une autre ressource après
l'exécution de la ressource courante
@YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops
Tests
@obazoud - @joelwurtz#tdd4devops 23
Tests
•Unitaires : rspec, chefspec
•Intégrations : test-kitchen
•Bonne pratique et qualité : rubocop, foodcritic
•Indépendant de chef : bats, minitest, serverspec
@obazoud - @joelwurtz#tdd4devops 24
TDD
@obazoud - @joelwurtz#tdd4devops 25
TDD
•Écrire un test pour une fonctionnalité
•Vérifier qu'il ne passe pas
•Écrire son implémentation minimal pour qu'il passe
•Répéter le cycle sur les autres fonctionnalités en faisant
en sorte que les tests existants passent toujours
@obazoud - @joelwurtz#tdd4devops 26
Chefspec
•Rspec : Spécification en test unitaire de nos
fonctionnalites
•Chefspec : Librairie pour écrire les spécifications de nos
cookbooks avec rspec
•On ne teste pas Chef !
@obazoud - @joelwurtz#tdd4devops 27
Chefspec
require 'chefspec'
describe 'example::default' do
let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
it 'does something' do
expect(chef_run).to install_package('tomcat7')
end
end
@obazoud - @joelwurtz#tdd4devops 28
Test-kitchen
•Exécution de nos cookbooks sur plusieurs
environnements
•Permet de tester la chaine complète
•Très utile pour multi OS / multi environnement
•Driver : Utilisable avec Vagrant, Amazon EC2, Docker,
Rackspace, …
•Busser : Exécute des tests bats, serverspec, minitest,
cucumber, …
@obazoud - @joelwurtz#tdd4devops 29
Test-kitchen
driver:
name: vagrant
provisioner:
name: chef_zero
platforms:
- name: ubuntu-13.04
- name: centos-6.5
suites:
- name: client
run_list:
- recipe[postgresql::client]
- name: server
run_list:
- recipe[postgresql::server]
@obazoud - @joelwurtz#tdd4devops 30
Bats
•Bash Automated Testing System (indépendant de Chef)
•Écriture des spécifications pour vos serveurs
•Basé sur bash
@obazoud - @joelwurtz#tdd4devops 31
Bats
#!/usr/bin/env bats
@test 'it creates tomcat directory' {
test -d /var/lib/tomcat7
}
@test 'it starts tomcat' {
service tomcat7 status
}
@test 'it responses with content' {
run curl http://localhost:8080/
[ "$status" -eq 0 ]
echo "$output" | grep 'hipster'
}
@obazoud - @joelwurtz#tdd4devops 32
Minitest
•Outil en Ruby - indépendant de Chef
•Écriture des spécifications pour vos serveurs
•Offre une gamme complète : TDD, BDD, Mock, Bench,...
@obazoud - @joelwurtz#tdd4devops 33
Minitest
require 'minitest/autorun'
describe 'stack::tomcat7' do
describe 'services' do
# You can assert that a service must be running following the converge:
it 'runs as a daemon' do
assert system('service tomcat7 status')
end
# And that it will start when the server boots:
it 'boots on startup' do
assert File.exists?(Dir.glob('/etc/rc5.d/S*tomcat7').first)
end
end
end
@obazoud - @joelwurtz#tdd4devops 34
Serverspec
•Outil en Ruby (indépendant de Chef)
•Écriture des spécifications pour vos serveurs
•Basé sur rspec
•À distance (via ssh) ou en local
•Support multi OS
•Init d'un projet : serverspec-init
@obazoud - @joelwurtz#tdd4devops 35
Serverspec
require 'spec_helper'
describe package('httpd') do
it { should be_installed }
end
describe service('httpd') do
it { should be_enabled }
it { should be_running }
end
describe port(80) do
it { should be_listening }
end
describe file('/etc/httpd/conf/httpd.conf') do
it { should be_file }
its(:content) { should match /ServerName www.example.jp/ }
end
@obazoud - @joelwurtz#tdd4devops 36
Rubocop
•Vérifie les bonnes pratiques Ruby
•Analyse statique du code Ruby
•https://github.com/bbatsov/rubocop
@obazoud - @joelwurtz#tdd4devops 37
Foodcritic
•Vérifie les bonnes pratiques pour vos recettes
•Règles établies par la communauté
•http://acrmp.github.io/foodcritic/
•Vous pouvez rajouter vos propres règles
@YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops
Environnement de travail
@obazoud - @joelwurtz#tdd4devops 39
Environnement de travail
•Ruby 1.9.3
– bundle install --local
•Vagrant 1.4.3
•VirtualBox 4.3.10
•Git 1.9
•Et votre éditeur de texte préféré :)
•Voir les instructions
@YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops
Cookbook en TDD
@obazoud - @joelwurtz#tdd4devops 41
Cookbook en TDD
• Cookbook « Stack »
– Mysql
– Tomcat 7
– Jhipster
Disclaimer « bonnes pratiques »
– Il faudrait séparer en plusieurs cookbooks « stack »
– Il faudrait créer une ressource pour la création de la
base de données
@obazoud - @joelwurtz#tdd4devops 42
Cookbook en TDD
@obazoud - @joelwurtz#tdd4devops 43
Cookbook en TDD
• Mysql
– Déploiement du fichier seed
– Installation du package mysql-server / mysql-client
– Création de la base 'jhipster'
• Tomcat 7
– Installation du package tomcat7
– Personnalisation de setenv.sh
• JHipster
– Application java / spring
– Déploiement du WAR
@obazoud - @joelwurtz#tdd4devops 44
#tdd4devops
@obazoud - @joelwurtz#tdd4devops 45
Liens utiles
• http://docs.opscode.com/just_enough_ruby_for_chef.html
• http://docs.opscode.com/resource.html
• http://community.opscode.com/
• https://github.com/travis-ci/travis-cookbooks
• http://code.sethvargo.com/chefspec/
• http://serverspec.org/

Weitere ähnliche Inhalte

Was ist angesagt?

Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectFlorent DENIS
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Débridez les performances de vos applications avec Chronicle Queue
Débridez les performances de vos applications avec Chronicle QueueDébridez les performances de vos applications avec Chronicle Queue
Débridez les performances de vos applications avec Chronicle QueueThierryAbalea
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en devOlivier Doucet
 
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Agilbee (Patrice Petit)
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
Ma boîte à outils DevOps
Ma boîte à outils DevOpsMa boîte à outils DevOps
Ma boîte à outils DevOpsNoël Bardelot
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs13p
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueVincent Composieux
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBTJean Detoeuf
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudsonxmacina
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 

Was ist angesagt? (20)

Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnect
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Débridez les performances de vos applications avec Chronicle Queue
Débridez les performances de vos applications avec Chronicle QueueDébridez les performances de vos applications avec Chronicle Queue
Débridez les performances de vos applications avec Chronicle Queue
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en dev
 
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Ma boîte à outils DevOps
Ma boîte à outils DevOpsMa boîte à outils DevOps
Ma boîte à outils DevOps
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
VSTS Git
VSTS GitVSTS Git
VSTS Git
 

Andere mochten auch

Chef for OpenStack - OpenStack Fall 2012 Summit
Chef for OpenStack  - OpenStack Fall 2012 SummitChef for OpenStack  - OpenStack Fall 2012 Summit
Chef for OpenStack - OpenStack Fall 2012 SummitMatt Ray
 
Invox - Présentation Générale - Content Marketing & Marketing Automation
Invox - Présentation Générale - Content Marketing & Marketing AutomationInvox - Présentation Générale - Content Marketing & Marketing Automation
Invox - Présentation Générale - Content Marketing & Marketing AutomationGuilhem Bertholet
 
Compliance Automation Workshop
Compliance Automation WorkshopCompliance Automation Workshop
Compliance Automation WorkshopChef
 
Infrastructure Automation with Chef
Infrastructure Automation with ChefInfrastructure Automation with Chef
Infrastructure Automation with ChefAdam Jacob
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèseCOMPETENSIS
 
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Publicis Sapient Engineering
 
Chef human talks montpellier lite
Chef   human talks montpellier liteChef   human talks montpellier lite
Chef human talks montpellier liteStephane Jourdan
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche DevopsRomain Chalumeau
 

Andere mochten auch (9)

Chef for OpenStack - OpenStack Fall 2012 Summit
Chef for OpenStack  - OpenStack Fall 2012 SummitChef for OpenStack  - OpenStack Fall 2012 Summit
Chef for OpenStack - OpenStack Fall 2012 Summit
 
Invox - Présentation Générale - Content Marketing & Marketing Automation
Invox - Présentation Générale - Content Marketing & Marketing AutomationInvox - Présentation Générale - Content Marketing & Marketing Automation
Invox - Présentation Générale - Content Marketing & Marketing Automation
 
Compliance Automation Workshop
Compliance Automation WorkshopCompliance Automation Workshop
Compliance Automation Workshop
 
Infrastructure Automation with Chef
Infrastructure Automation with ChefInfrastructure Automation with Chef
Infrastructure Automation with Chef
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
 
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
Journée DevOps : Les piliers du déploiement applicatif avec XL Deploy de Xebi...
 
Chef human talks montpellier lite
Chef   human talks montpellier liteChef   human talks montpellier lite
Chef human talks montpellier lite
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 

Ähnlich wie TDD for DevOps with Chef

Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Olivier Gutknecht
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Publicis Sapient Engineering
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationWescale
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerJean-Baptiste Claramonte
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésMathieu Elie
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructurecontinuousphp
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaCédric Leblond
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsFactoVia
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsAZUG FR
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1easyopenerp
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...AbdellahELMAMOUN
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 

Ähnlich wie TDD for DevOps with Chef (20)

Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructure
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructure
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 

Mehr von Olivier BAZOUD

BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyribaOlivier BAZOUD
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaOlivier BAZOUD
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring BatchOlivier BAZOUD
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011Olivier BAZOUD
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011Olivier BAZOUD
 

Mehr von Olivier BAZOUD (7)

Ippevent Ogury 2016
Ippevent Ogury 2016Ippevent Ogury 2016
Ippevent Ogury 2016
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring Batch
 
Spring Batch Avance
Spring Batch AvanceSpring Batch Avance
Spring Batch Avance
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
 

Kürzlich hochgeladen

Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileMBouderbala
 
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud PorcsBOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud Porcsidelewebmestre
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en Franceidelewebmestre
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesangevaleryn
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsidelewebmestre
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinidelewebmestre
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...idelewebmestre
 
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasBOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasidelewebmestre
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogneidelewebmestre
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsidelewebmestre
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresidelewebmestre
 
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...idelewebmestre
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLidelewebmestre
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresidelewebmestre
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineidelewebmestre
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresidelewebmestre
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 

Kürzlich hochgeladen (20)

Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huile
 
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud PorcsBOW 2024 - 3-6 - Adaptation climat chaud Porcs
BOW 2024 - 3-6 - Adaptation climat chaud Porcs
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en France
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniques
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcin
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
 
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasBOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogne
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
 
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitières
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 

TDD for DevOps with Chef

  • 1. @obazoud - @joelwurtz#tdd4devops Test Driven Infrastructure @obazoud - @jwurtz Kyriba, Jolicode Chefs étoilés
  • 2. @obazoud - @joelwurtz#tdd4devops 2 Speakers •Olivier Bazoud –Développeur, DevOps –Spring-*/JEE, Node.js, ... –Co-auteur de “Spring Batch in Action” •Joel Wurtz –Développeur pour les devs @jolicode –PHP (haters gonna hate), Chef, Docker, ... –Formateur Chef @humancoders
  • 3. @obazoud - @joelwurtz#tdd4devops 3 Test Driven Infrastructure •Présentation de chef - 25mn •Cookbooks •Tout est ressource •Tests et qualités •Mise en place de l'environnement de travail - 5mn •Écriture d'un cookbook en TDD - 2h30
  • 4. @obazoud - @joelwurtz#tdd4devops 4 Gestionnaire de configuration •Automatisation de son infrastructure •Orchestration •Configuration unique, partagée et dynamique •Framework de scripts •Normalisation
  • 6. @obazoud - @joelwurtz#tdd4devops 6 Chef •Créé en 2008 •Open-source (Apache) •Ruby (+ Erlang pour le serveur) •Écriture des scripts en ruby et json •Système agent-serveur •Exécution des scripts dans l'ordre où c'est écrit •Disponible sans serveur (chef-solo) •Script en mode Normalisation over Configuration •Idempotent
  • 7. @obazoud - @joelwurtz#tdd4devops 7 Bien plus que des scripts... •Orchestration complète de votre infrastructure •Interfaçage avec différents providers – Amazon – Google Cloud – Vagrant – ... •Nombreux scripts open-source – community.opscode.com – Cookbooks TravisCi – ...
  • 8. @obazoud - @joelwurtz#tdd4devops 8 Composants •Chef-Solo : Joue les recettes chef sur un environnement •Chef-Client : Chef-Solo + Récuperation des recettes sur un serveur distant (Chef-Server) •Chef-Server : Possède la connaissance de votre infrastructure •Knife : Outil permettant de communiquer avec Chef-Server
  • 9. @YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops Cookbooks
  • 10. @obazoud - @joelwurtz#tdd4devops 10 Chef repository certificats/ cookbooks/ tomcat7/ ... data_bags/ environments/ roles/
  • 11. @obazoud - @joelwurtz#tdd4devops 11 Cookbooks cookbooks/ tomcat7/ php/ mysql/ ... Ensemble de scripts décrivant l'installation d'un (et un seul) service/application
  • 12. @obazoud - @joelwurtz#tdd4devops 12 Cookbook (sans le s) cookbooks/ tomcat7/ recipes/ default.rb Minimum requis pour un cookbook (exemple d'une recette pour tomcat7)
  • 13. @obazoud - @joelwurtz#tdd4devops 13 Exemple # Install package package 'tomcat7' do action :install end # Use setenv.sh template template '/usr/share/tomcat7/bin/setenv.sh' do source 'setenv.sh.erb' owner 'tomcat7' group 'tomcat7' mode '755' end # Service managed by Chef service 'tomcat7' do supports restart: true, reload: false, status: true action [:start, :enable] end
  • 14. @obazoud - @joelwurtz#tdd4devops 14 Exemple # Install package package 'tomcat7' do action :install end
  • 15. @obazoud - @joelwurtz#tdd4devops 15 Exemple # Use setenv.sh template template '/usr/share/tomcat7/bin/setenv.sh' do source 'setenv.sh.erb' owner 'tomcat7' group 'tomcat7' mode '755' end
  • 16. @obazoud - @joelwurtz#tdd4devops 16 Exemple # Service managed by Chef service 'tomcat7' do supports restart: true, reload: false, status: true action [:start, :enable] end
  • 17. @YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops Ressources
  • 18. @obazoud - @joelwurtz#tdd4devops 18 Tout est ressource •DSL Chef •package, template et service sont des ressources •Une ressource est une définition •Une ressource consiste en un type, un nom et des attributs •L’exécution de cette dernière est réalisée avec des providers
  • 19. @obazoud - @joelwurtz#tdd4devops 19 Exemple # Install package package 'tomcat7' do action :install end
  • 20. @obazoud - @joelwurtz#tdd4devops 20 Ressource •Certains attributs sont communs à toutes les ressources – action : état souhaité de la ressource (le nom est trompeur) – ignore_failure : n'arrête pas l’exécution en cas d'erreur – provider : implémentation pour la ressource – …
  • 21. @obazoud - @joelwurtz#tdd4devops 21 Ressource •Condition d'exécution –attributs permettant de définir si la ressource doit s’exécuter (permet de passer une ressource non idempotente en ressource idempotente) • Subscribes –attribut permettant de dire que la ressource s'exécute après une autre ressource •Notifications –exécute une action sur une autre ressource après l'exécution de la ressource courante
  • 23. @obazoud - @joelwurtz#tdd4devops 23 Tests •Unitaires : rspec, chefspec •Intégrations : test-kitchen •Bonne pratique et qualité : rubocop, foodcritic •Indépendant de chef : bats, minitest, serverspec
  • 25. @obazoud - @joelwurtz#tdd4devops 25 TDD •Écrire un test pour une fonctionnalité •Vérifier qu'il ne passe pas •Écrire son implémentation minimal pour qu'il passe •Répéter le cycle sur les autres fonctionnalités en faisant en sorte que les tests existants passent toujours
  • 26. @obazoud - @joelwurtz#tdd4devops 26 Chefspec •Rspec : Spécification en test unitaire de nos fonctionnalites •Chefspec : Librairie pour écrire les spécifications de nos cookbooks avec rspec •On ne teste pas Chef !
  • 27. @obazoud - @joelwurtz#tdd4devops 27 Chefspec require 'chefspec' describe 'example::default' do let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) } it 'does something' do expect(chef_run).to install_package('tomcat7') end end
  • 28. @obazoud - @joelwurtz#tdd4devops 28 Test-kitchen •Exécution de nos cookbooks sur plusieurs environnements •Permet de tester la chaine complète •Très utile pour multi OS / multi environnement •Driver : Utilisable avec Vagrant, Amazon EC2, Docker, Rackspace, … •Busser : Exécute des tests bats, serverspec, minitest, cucumber, …
  • 29. @obazoud - @joelwurtz#tdd4devops 29 Test-kitchen driver: name: vagrant provisioner: name: chef_zero platforms: - name: ubuntu-13.04 - name: centos-6.5 suites: - name: client run_list: - recipe[postgresql::client] - name: server run_list: - recipe[postgresql::server]
  • 30. @obazoud - @joelwurtz#tdd4devops 30 Bats •Bash Automated Testing System (indépendant de Chef) •Écriture des spécifications pour vos serveurs •Basé sur bash
  • 31. @obazoud - @joelwurtz#tdd4devops 31 Bats #!/usr/bin/env bats @test 'it creates tomcat directory' { test -d /var/lib/tomcat7 } @test 'it starts tomcat' { service tomcat7 status } @test 'it responses with content' { run curl http://localhost:8080/ [ "$status" -eq 0 ] echo "$output" | grep 'hipster' }
  • 32. @obazoud - @joelwurtz#tdd4devops 32 Minitest •Outil en Ruby - indépendant de Chef •Écriture des spécifications pour vos serveurs •Offre une gamme complète : TDD, BDD, Mock, Bench,...
  • 33. @obazoud - @joelwurtz#tdd4devops 33 Minitest require 'minitest/autorun' describe 'stack::tomcat7' do describe 'services' do # You can assert that a service must be running following the converge: it 'runs as a daemon' do assert system('service tomcat7 status') end # And that it will start when the server boots: it 'boots on startup' do assert File.exists?(Dir.glob('/etc/rc5.d/S*tomcat7').first) end end end
  • 34. @obazoud - @joelwurtz#tdd4devops 34 Serverspec •Outil en Ruby (indépendant de Chef) •Écriture des spécifications pour vos serveurs •Basé sur rspec •À distance (via ssh) ou en local •Support multi OS •Init d'un projet : serverspec-init
  • 35. @obazoud - @joelwurtz#tdd4devops 35 Serverspec require 'spec_helper' describe package('httpd') do it { should be_installed } end describe service('httpd') do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end describe file('/etc/httpd/conf/httpd.conf') do it { should be_file } its(:content) { should match /ServerName www.example.jp/ } end
  • 36. @obazoud - @joelwurtz#tdd4devops 36 Rubocop •Vérifie les bonnes pratiques Ruby •Analyse statique du code Ruby •https://github.com/bbatsov/rubocop
  • 37. @obazoud - @joelwurtz#tdd4devops 37 Foodcritic •Vérifie les bonnes pratiques pour vos recettes •Règles établies par la communauté •http://acrmp.github.io/foodcritic/ •Vous pouvez rajouter vos propres règles
  • 38. @YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops Environnement de travail
  • 39. @obazoud - @joelwurtz#tdd4devops 39 Environnement de travail •Ruby 1.9.3 – bundle install --local •Vagrant 1.4.3 •VirtualBox 4.3.10 •Git 1.9 •Et votre éditeur de texte préféré :) •Voir les instructions
  • 40. @YourTwitterHandle#DVXFR14{session hashtag} @obazoud - @joelwurtz#tdd4devops Cookbook en TDD
  • 41. @obazoud - @joelwurtz#tdd4devops 41 Cookbook en TDD • Cookbook « Stack » – Mysql – Tomcat 7 – Jhipster Disclaimer « bonnes pratiques » – Il faudrait séparer en plusieurs cookbooks « stack » – Il faudrait créer une ressource pour la création de la base de données
  • 42. @obazoud - @joelwurtz#tdd4devops 42 Cookbook en TDD
  • 43. @obazoud - @joelwurtz#tdd4devops 43 Cookbook en TDD • Mysql – Déploiement du fichier seed – Installation du package mysql-server / mysql-client – Création de la base 'jhipster' • Tomcat 7 – Installation du package tomcat7 – Personnalisation de setenv.sh • JHipster – Application java / spring – Déploiement du WAR
  • 45. @obazoud - @joelwurtz#tdd4devops 45 Liens utiles • http://docs.opscode.com/just_enough_ruby_for_chef.html • http://docs.opscode.com/resource.html • http://community.opscode.com/ • https://github.com/travis-ci/travis-cookbooks • http://code.sethvargo.com/chefspec/ • http://serverspec.org/