Puppet, la philosophie DevOps

Post on 08-Aug-2015

432 views 2 download

Transcript of Puppet, la philosophie DevOps

Puppet, la philosophie DevOps

@Jeoffreybauvin@Versusmind

Jeoffrey BauvinConsultant 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 Puppetroot@monserveur ~ # puppet agent -tInfo: Retrieving pluginfactsInfo: Retrieving pluginInfo: Loading factsInfo: Caching catalog for monserveur.example.comInfo: Applying configuration version '1431791808'Notice: /Stage[main]/Common::Install/Package[htop]/ensure: createdNotice: Finished catalog run in 7.66 seconds

Cycle de vie d’un Agent

Configurationnode /.*\.domaine.com)$/ {

class { ‘jboss’: }}

Module Jboss :

- Files : fichiers statiques- Manifests : code Puppet- Templates : fichiers dynamiques

La Forge PuppetLabshttps://forge.puppetlabs.com/ - Plus de 3 000 modules

Ressources nativesFile : créer un fichier ou un répertoire

Bien plus d’attributs sur https://docs.puppetlabs.com/references/4.0.latest/type.html

Ressources nativesPackage : 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 nativesService : 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 nativesUser : créer un utilisateur

Attributs :- uid / gid : ID (numérique) pour l’utilisateur et son

groupe- Home : le répertoire par défaut- ...

Ressources nativesUne 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 / EnvironnementsNoop :

- /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 : ForemanENC : 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