Puppet, la philosophie DevOps
@Jeoffreybauvin
@Versusmind
Jeoffrey Bauvin
Consultant IT chez Versusmind
Nancy, France
@jeoffreybauvin
Introduction : DevOps ?
- Équipes cloisonnées
- Mauvaise collaboration
- Lourdeur administrative / Retards de livraisons
- Besoin d’évolution rapide
- Impact sur la qualité des applications
DevOps : Pourquoi ?
Introduction : Pourquoi ?
DevOps : Popularité (1/2)
Les bénéfices du DevOps
DevOps : Composants
Automatisation IT
Déploiement manuel
- Adapté pour un serveur, mais pour 30 ?
- Un script Bash ? Est-ce maintenable ?
- Et sur d’autres systèmes d’exploitation ?
Déploiement centralisé
- Configuration centralisée
- Déploiement automatisé de masse
- Abstraction du système d’exploitation
Quels produits ?
Chef (créé en 1993, développé en Erlang)
Puppet (créé en 2005, développé en Ruby)
Ansible (créé en 2012, développé en Python)
CFEngine (créé en 2013, développé en C)
Puppet
Puppet
- Logiciel libre (Apache 2.0)
- Existe en version “Enterprise”
- Support des machines virtuelles Amazon EC2
- Dashboard centralisé
- Fonctionne sous GNU/Linux, Windows et MacOS X
- Version actuelle : 4.0, publiée le 16 avril 2015
- Communication HTTPS entre le serveur et les agents
Ils utilisent Puppet
La suite sur https://puppetlabs.com/about/customers
Architecture
SSL
Installation de l’agent
- “apt-get install puppet”
- Configuration dans /etc/puppet/puppet.conf :
[main] server=puppet.versusmind.eu
- Génération du certificat côté “Agent” et soumission au serveur Puppet
- Approbation (ou non) de la part du serveur Puppet
- puppet agent -t
Un agent Puppet
root@monserveur ~ # puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for monserveur.example.com
Info: Applying configuration version '1431791808'
Notice: /Stage[main]/Common::Install/Package[htop]/ensure: created
Notice: Finished catalog run in 7.66 seconds
Cycle de vie d’un Agent
Configuration
node /.*.domaine.com)$/ {
class { ‘jboss’: }
}
Module Jboss :
- Files : fichiers statiques
- Manifests : code Puppet
- Templates : fichiers dynamiques
La Forge PuppetLabs
https://forge.puppetlabs.com/ - Plus de 3 000 modules
Ressources natives
File : créer un fichier ou un répertoire
Bien plus d’attributs sur https://docs.puppetlabs.com/references/4.0.latest/type.html
Ressources natives
Package : installer un paquet
Providers :
- apt (Debian / Ubuntu)
- apple (Systèmes OS X)
- gem (Pour Ruby)
- pip (pour Python)
- macports (MacPorts sur OS X)
- pacman (ArchLinux)
- windows
- ...
Ressources natives
Service : gérer les services
Attributs :
- enable : service activé au démarrage du système
- hasrestart : le script possède un paramètre “restart”
- restart : spécifier une commande de restart
manuellement
- ...
Support :
- Debian
- Windows
- OS X
- ...
Ressources natives
User : créer un utilisateur
Attributs :
- uid / gid : ID (numérique) pour l’utilisateur et son
groupe
- Home : le répertoire par défaut
- ...
Ressources natives
Une multitude de ressources :
- cron : déclarer une tâche planifiée
- group : ajouter un groupe
- interface : déclarer une interface réseau
- exec : exécuter une commande personnalisée
La suite sur https://docs.puppetlabs.com/references/latest/type.html
Exemple concret
Composants : Git / Git Flow
- Git
- Git Flow (develop, master, …)
- Une branche par nouveau module
- Pull Request !
Composants : Hiera
- Séparer les données “variables” des modules
- Fichiers .yaml
Hiera - Data bindings
- Charger automatiquement les paramètres depuis Hiera
Noop / Environnements
Noop :
- /etc/puppet/puppet.conf :
[agent] noop = true
- Ne pas appliquer automatiquement le catalogue Puppet
- puppet agent -t --no-noop
Gestion des environnements :
- Un environnement par utilisateur / feature
- Une branche Git par environnement
Composants : Foreman
ENC : External Node Classifier
- Programme appelé par le serveur Puppet au moment ou l’agent demande
son catalogue
The Foreman :
- Interface Web
- Rassemble les rapports d’erreurs / succès
- Statistiques sur l’ensemble de vos agents
- Gestion des “groupes d’hôtes” : rôles
- Gestion des environnements
symposium {
ensure => finished
}
Merci !
questions {
ensure => present
}
@jeoffreybauvin

Puppet, la philosophie DevOps

  • 1.
    Puppet, la philosophieDevOps @Jeoffreybauvin @Versusmind
  • 2.
    Jeoffrey Bauvin Consultant ITchez Versusmind Nancy, France @jeoffreybauvin
  • 3.
  • 4.
    - Équipes cloisonnées -Mauvaise collaboration - Lourdeur administrative / Retards de livraisons - Besoin d’évolution rapide - Impact sur la qualité des applications DevOps : Pourquoi ?
  • 5.
  • 6.
    DevOps : Popularité(1/2) Les bénéfices du DevOps
  • 7.
  • 8.
  • 9.
    Déploiement manuel - Adaptépour un serveur, mais pour 30 ? - Un script Bash ? Est-ce maintenable ? - Et sur d’autres systèmes d’exploitation ?
  • 10.
    Déploiement centralisé - Configurationcentralisée - Déploiement automatisé de masse - Abstraction du système d’exploitation
  • 11.
    Quels produits ? Chef(créé en 1993, développé en Erlang) Puppet (créé en 2005, développé en Ruby) Ansible (créé en 2012, développé en Python) CFEngine (créé en 2013, développé en C)
  • 12.
  • 13.
    Puppet - Logiciel libre(Apache 2.0) - Existe en version “Enterprise” - Support des machines virtuelles Amazon EC2 - Dashboard centralisé - Fonctionne sous GNU/Linux, Windows et MacOS X - Version actuelle : 4.0, publiée le 16 avril 2015 - Communication HTTPS entre le serveur et les agents
  • 14.
    Ils utilisent Puppet Lasuite sur https://puppetlabs.com/about/customers
  • 15.
  • 16.
    Installation de l’agent -“apt-get install puppet” - Configuration dans /etc/puppet/puppet.conf : [main] server=puppet.versusmind.eu - Génération du certificat côté “Agent” et soumission au serveur Puppet - Approbation (ou non) de la part du serveur Puppet - puppet agent -t
  • 17.
    Un agent Puppet root@monserveur~ # puppet agent -t Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Info: Caching catalog for monserveur.example.com Info: Applying configuration version '1431791808' Notice: /Stage[main]/Common::Install/Package[htop]/ensure: created Notice: Finished catalog run in 7.66 seconds
  • 18.
    Cycle de vied’un Agent
  • 19.
    Configuration node /.*.domaine.com)$/ { class{ ‘jboss’: } } Module Jboss : - Files : fichiers statiques - Manifests : code Puppet - Templates : fichiers dynamiques
  • 20.
  • 21.
    Ressources natives File :créer un fichier ou un répertoire Bien plus d’attributs sur https://docs.puppetlabs.com/references/4.0.latest/type.html
  • 22.
    Ressources natives Package :installer un paquet Providers : - apt (Debian / Ubuntu) - apple (Systèmes OS X) - gem (Pour Ruby) - pip (pour Python) - macports (MacPorts sur OS X) - pacman (ArchLinux) - windows - ...
  • 23.
    Ressources natives Service :gérer les services Attributs : - enable : service activé au démarrage du système - hasrestart : le script possède un paramètre “restart” - restart : spécifier une commande de restart manuellement - ... Support : - Debian - Windows - OS X - ...
  • 24.
    Ressources natives User :créer un utilisateur Attributs : - uid / gid : ID (numérique) pour l’utilisateur et son groupe - Home : le répertoire par défaut - ...
  • 25.
    Ressources natives Une multitudede ressources : - cron : déclarer une tâche planifiée - group : ajouter un groupe - interface : déclarer une interface réseau - exec : exécuter une commande personnalisée La suite sur https://docs.puppetlabs.com/references/latest/type.html
  • 26.
  • 27.
    Composants : Git/ Git Flow - Git - Git Flow (develop, master, …) - Une branche par nouveau module - Pull Request !
  • 28.
    Composants : Hiera -Séparer les données “variables” des modules - Fichiers .yaml
  • 29.
    Hiera - Databindings - Charger automatiquement les paramètres depuis Hiera
  • 30.
    Noop / Environnements Noop: - /etc/puppet/puppet.conf : [agent] noop = true - Ne pas appliquer automatiquement le catalogue Puppet - puppet agent -t --no-noop Gestion des environnements : - Un environnement par utilisateur / feature - Une branche Git par environnement
  • 31.
    Composants : Foreman ENC: External Node Classifier - Programme appelé par le serveur Puppet au moment ou l’agent demande son catalogue The Foreman : - Interface Web - Rassemble les rapports d’erreurs / succès - Statistiques sur l’ensemble de vos agents - Gestion des “groupes d’hôtes” : rôles - Gestion des environnements
  • 34.
    symposium { ensure =>finished } Merci ! questions { ensure => present } @jeoffreybauvin

Notes de l'éditeur

  • #3 Puppet : Logiciel libre Fait en ruby diffusé sous licence Apache 2.0 depuis la version 2.7.0 Pour les développeurs, Gepetto http://docs.puppetlabs.com/geppetto/latest/index.html Un IDE basé sous Eclipse How Puppet Works http://fr.slideshare.net/PuppetLabs/manageable-puppet-infrastructure?qid=b9e5faa1-f204-459a-8af4-b9321a20ad96&v=qf1&b=&from_search=13 http://fr.slideshare.net/PuppetLabs/puppet-camp-2015 http://fr.slideshare.net/PuppetLabs/getting-started-with-puppet-puppetconf-2013?qid=b9e5faa1-f204-459a-8af4-b9321a20ad96&v=default&b=&from_search=30 http://fr.slideshare.net/PuppetLabs/puppet-introlukelondon?qid=b9e5faa1-f204-459a-8af4-b9321a20ad96&v=default&b=&from_search=25
  • #4 Revenons un peu sur l’historique. Il y a encore peu de temps, on pouvait se représenter le monde de l’informatique comme coup éen deux : les développeurs d’un côté, et les administrateurs sytèmes de l’autre. Bien souvent, le développeur ne se soucie pas des ressources nécessaires au bon fonctionnement de son programme, ni de l’état de santé de son application lorsqu’elle est en production.
  • #7  Etude CA Technologies 2014 49 % des entreprises mettent le cap sur le DevOps 95% des entreprises françaises planifient actuellement la mise en oeuvre du DevOps. La France, leader dans le domaine (un des meilleurs)
  • #8  Etude CA Technologies 2014 49 % des entreprises mettent le cap sur le DevOps 95% des entreprises françaises planifient actuellement la mise en oeuvre du DevOps. La France, leader dans le domaine (un des meilleurs)
  • #14 Enterprise : Support de VMware Interface graphique de gestion Orchestration des déploiements Gérer plus finement les droits utilisateurs Version 4.0 : Dépréciation de bcp de choses Packagé avec sa propre de version de Ruby
  • #20 Concentré de code et de donnée 2 types de modules : Les modules génériques (Apache, Jboss, PHP, …) Les modules “personnels” Orienté objet : classes / héritage
  • #21 PAS REINVENTER LA ROUE