DevOps Day 2014
Puppet:
Un outil pour les installer tous
Chapitre 1
Le mouvement DevOps
1
Un projet informatique
3
La faute de l’Agile
4
La faute de l’Agile
5
L’infrastructure est peu Agile
6
Chapitre 2
Pourquoi Puppet ?
2
Pourquoi Puppet ?
Installer un projet ?
!
!
!
!
Diversité des plateformesA
C D
B
8
Cohérence des
environnements




Un langage commun
Chapitre 3
Architecture
3
Un run Puppet
11
PuppetMaster
Puppet
1
2
34
Chapitre 4
Infrastructure as
Code
4
A
C
Un ensemble de ressources
D
B
Un paquet ?
package{‘ntp’:

ensure => present

}



Un utilisateur ?
user{‘bob’:

ensure => present

}
Un fichier ?
file {‘/etc/profile’:

ensure => present

}
Un service ?
service {‘apache’:

ensure => ‘running’

}
13
Un module
14
class ntp{
package { 'ntp':
ensure => present,
before => File['/etc/ntp.conf']
}
file { '/etc/ntp.conf':
ensure => file,
owner => 0,
group => 0,
mode => '0644',
content => template("ntp/ntp_${::osfamily}.conf.erb"),
}
service { 'ntp':
ensure => present,
enable => true,
subscribe => File['/etc/ntp.conf']
}
}
Assigner un module à une machine
15
node 'agent1.localdomain' {
class{'ntp':}
}
Extensibilité
Ajout de ressources






Ajout de fonctions




















Ajout de facts




!
Et bien plus…
A
C
B
16
D
Le développement appliqué à l’infrastructure
Tests unitaires
Rspec-Puppet





Couverture de code
Total resources:   12
Touched resources: 7
Resource coverage: 58.33%
Untouched resources:
!
  Anchor[ntp::begin]
  Anchor[ntp::end]
  Class[Ntp::Params]
  Package[ntp]
  Service[ntp]



Tests d’intégration
serverspec, beaker





A
C
B
17
Chapitre 5
Retour d’expérience
5
La Poste
• Tri 60 millions d’enveloppes
par jour 

• Reparti sur 30 centres de tri

• Plus de 1000 serveurs en
production !
19
Infrastructure Puppet
• Un PuppetMaster 

• 2 runs Puppet par jour

• Version 0.25…

• Un ENC

• Des machines vierges en
« stand-by »
20
Boot
PXE
Run Puppet
ENC
o/
Provisioning d’une nouvelle machine
21
Chapitre 6
Demo !
6
Chapitre 7
Questions ?
7
Merci!

Journée DevOps : Puppet, un outil pour les installer tous