2. 2 PuppetQu'est-ce que c'est ? A quoi ça sert ?
Système de gestion centralisée des configurations (SCM)
• Chef
• CFEngine
• Puppet
• Salt
• Ansible
• …
→ Résoud les problèmes d'administration systèmes de
grands parcs
• Tâches répétitives
• Supervision de l'état du parc
• Audit
• etc.
3. 3 PuppetQu'est-ce que c'est ? A quoi ça sert ?
Méthodes possibles d'administration de grands parcs
• Manuellement → long et source d'erreurs humaines
• Boucle SSH (script)
→ Long!
→ Comment vérifier les résultats ?
→ Reprise sur erreur
→ Pré-requis: s'assurer que tous les systèmes sont iso (ou s'assurer que
tous les cas de figure sont gérés)
• Update.sh (script au boot ou par cron/scheduler)
→ comment s'assurer que tous les noeuds ont bien exécuté le script ?
→ mêmes problèmes
→ comment distinguer les noeuds ?
• Agent
→ Puppet
→ Intrusif (Ruby)
5. 5 Avantages du déclaratifLes concepts principaux
Avantages du déclaratif
• On décrit l'état voulu, pas ce qu'il faut faire pour y arriver
• Rapide, tout le parc applique les règles en parallèle
• Pas de vérification des résultats. Un noeud est soit dans l'état désiré, soit pas
• Pas de reprise sur erreur. Il faut simplement investiguer pourquoi un noeud ne
tend pas vers l'état désiré
• Pas de nécessité de s'assurer que les noeuds sont dans un certain état initial
→ Le même code déclaratif amène vers l'état désiré un noeud vierge ou un
noeud presque dans l'état désiré
• Le code déclaratif a accès aux caractéristiques des noeuds
→ Il est très facile de distinguer les noeuds
6. 6 Avantages de PuppetArchitecture
Avantages de Puppet
• Gestion centralisée, interfaces
de gestion permettant de voir
l'état du parc
• Inventaire
→ facter récupère
automatiquement de façon
centralisée toute valeur
intéressante
→ PuppetDB
7. 7 Avantages du langage PuppetLes concepts principaux
Avantages du langage
• Graphe de dépendences
• Idempotence
• Modules (https://forge.puppet.com/)
→ réutilisation de code
→ exemple mysql::db
• Cross-platform
Exemple 1
group { 'web':
ensure => present,
gid => 502,
}
user { 'john':
ensure => present,
gid => “web”,
groups => [“adm”, “staff”],
shell => “/bin/bash”,
require => Group['web'],
}
Exemple 2
package { 'htop':
ensure => present,
}
9. 9 Infrastructure As CodeEnvironnements et versioning
Versioning du code
• Environnements (dev, valid, prod, windows, linux, mac, etc.)
• Utilisation de Subversion ou Git pour versionner le code
→ Audit (qui a modifié quoi à quel moment)
→ Risque et compliance
→ Possibilité de retour en arrière
→ Multi-utilisateurs
→ Branches