puppet, la philosophie devops

34
Puppet, la philosophie DevOps @Jeoffreybauvin @Versusmind

Upload: jeoffrey-bauvin

Post on 08-Aug-2015

432 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: Puppet, la philosophie DevOps

Puppet, la philosophie DevOps

@Jeoffreybauvin@Versusmind

Page 2: Puppet, la philosophie DevOps

Jeoffrey BauvinConsultant IT chez Versusmind

Nancy, France

@jeoffreybauvin

Page 3: Puppet, la philosophie DevOps

Introduction : DevOps ?

Page 4: Puppet, la philosophie DevOps

- Équipes cloisonnées

- Mauvaise collaboration

- Lourdeur administrative / Retards de livraisons

- Besoin d’évolution rapide

- Impact sur la qualité des applications

DevOps : Pourquoi ?

Page 5: Puppet, la philosophie DevOps

Introduction : Pourquoi ?

Page 6: Puppet, la philosophie DevOps

DevOps : Popularité (1/2)

Les bénéfices du DevOps

Page 7: Puppet, la philosophie DevOps

DevOps : Composants

Page 8: Puppet, la philosophie DevOps

Automatisation IT

Page 9: Puppet, la philosophie DevOps

Déploiement manuel

- Adapté pour un serveur, mais pour 30 ?

- Un script Bash ? Est-ce maintenable ?

- Et sur d’autres systèmes d’exploitation ?

Page 10: Puppet, la philosophie DevOps

Déploiement centralisé- Configuration centralisée

- Déploiement automatisé de masse

- Abstraction du système d’exploitation

Page 11: Puppet, la philosophie DevOps

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)

Page 12: Puppet, la philosophie DevOps

Puppet

Page 13: Puppet, la philosophie DevOps

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

Page 14: Puppet, la philosophie DevOps

Ils utilisent Puppet

La suite sur https://puppetlabs.com/about/customers

Page 15: Puppet, la philosophie DevOps

Architecture

SSL

Page 16: Puppet, la philosophie DevOps

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

Page 17: Puppet, la philosophie DevOps

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

Page 18: Puppet, la philosophie DevOps

Cycle de vie d’un Agent

Page 19: Puppet, la philosophie DevOps

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

class { ‘jboss’: }}

Module Jboss :

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

Page 20: Puppet, la philosophie DevOps

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

Page 21: Puppet, la philosophie DevOps

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

Page 22: Puppet, la philosophie DevOps

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- ...

Page 23: Puppet, la philosophie DevOps

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 - ...

Page 24: Puppet, la philosophie DevOps

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- ...

Page 25: Puppet, la philosophie DevOps

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

Page 26: Puppet, la philosophie DevOps

Exemple concret

Page 27: Puppet, la philosophie DevOps

Composants : Git / Git Flow- Git

- Git Flow (develop, master, …)

- Une branche par nouveau module

- Pull Request !

Page 28: Puppet, la philosophie DevOps

Composants : Hiera- Séparer les données “variables” des modules- Fichiers .yaml

Page 29: Puppet, la philosophie DevOps

Hiera - Data bindings- Charger automatiquement les paramètres depuis Hiera

Page 30: Puppet, la philosophie DevOps

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

Page 31: Puppet, la philosophie DevOps

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

Page 32: Puppet, la philosophie DevOps
Page 33: Puppet, la philosophie DevOps
Page 34: Puppet, la philosophie DevOps

symposium { ensure => finished}

Merci !

questions {

ensure => present

}

@jeoffreybauvin