Gérer ses environnements de développement avec Vagrant RMLL 2012



Documents pareils
VAGRANT POUR LES DÉVELOPPEURS

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

Automatisation de l administration système

Préparation d un serveur Apache pour Zend Framework

Automatisation de l administration système avec

GESTION D INFRASTRUCTURE AVEC PUPPET

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

REPARTITION DE CHARGE LINUX

Virtualisation et le hosting. Christophe Lucas Sébastien Bonnegent rouen.fr>

Virtualisation Vserver et OpenVz en entreprise

Tutoriel compte-rendu Mission 1

Serveur Subversion Debian GNU/Linux

LXC : Une technologie de contextualisation ultra light intégrée au kernel Linux

BTS SIO Dossier BTS. PURCHLA Romain

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Puppet - l infrastructure automatisée

Chapitre IX : Virtualisation

Mise en place d un firewall d entreprise avec PfSense

Virtual Box Mettez un PC dans votre... PC

Faire fonctionner symfony sous wamp et windows avec des vhost. Installation de wamp

Stéphane DERACO, DSI CNRS l Argos Devops : de l hyperviseur aux conteneurs l 11/12/2014 DOCKER

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Procédure d'installation

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

But de cette présentation. Bac à sable (Sandbox) Principes. Principes. Hainaut P

Installation d un hébergement Web à domicile

Présentation OpenVZ. Marc SCHAEFER. 9 janvier 2009

SERVEUR HTTP Administration d apache

EN Télécom & Réseau S Utiliser VMWARE

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 5

Guide Installation Serveur Extensive Testing

A Libre Ouvert. Médiathèque Jacques Ellul. le

Configurer la supervision pour une base MS SQL Server Viadéis Services

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Installation GLPI-OCSNG-SSL Linux Debian Sarge

TD4 - Supervision et métrologie des réseaux. 1 Supervision des applications et services réseaux et des ressources locales

Réaliser un inventaire Documentation utilisateur

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications

Virtualisation: définitions. Problème des datacenters actuels. Le DATA Center aujourd'hui. Le Data Center d'hier

Joomla! Création et administration d'un site web - Version numérique

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Virtualisation open source État de l'art

Virtualisation sous Linux L'age de raison. Daniel Veillard

Guide Installation Serveur Extensive Testing

Sébastien Geiger IPHC Strasbourg

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Installation de Zabbix

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Visualization sur Ubuntu: Quels Choix? Nicolas Barcet

Point sur la virtualisation

Le serveur web Apache

EN Télécom & Réseau S Utiliser VMWARE

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Les différentes méthodes pour se connecter

Environnement Informatique EMSE Linux

Retour d expérience de la plateforme de virtualisation sous Proxmox VE à l IPHC journée SysAdmin du 04/12/2014 à l INRA de Toulouse

TP Service HTTP Serveur Apache Linux Debian

Guide d installation de SugarCRM Open Source version 4.5.1

L'automatisation open source pour SI complexes

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

Tour d'horizon Bureau client Daemon's Aller plus loin

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

sshgate Patrick Guiran Chef de projet support

Tutoriel Création d une source Cydia et compilation des packages sous Linux

INSTALLATION DEBIAN 7 (NETINSTALL) SUR VM

Systèmes informatiques

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

THEME : Mise en place d une plateforme d enseignement à distance

Concept de machine virtuelle

Exercice sur les Dockers

CDS Invenio Installation et configuration de base

PPE 1 PRISE EN MAIN DE VMWARE VSPHERE 5.5 & CONFIGURATION D UNE MACHINE VIRTUELLE

Réseau - VirtualBox. Sommaire

vsphere 5 TP2 La virtualisation avec VMware CNFETP F. GANGNEUX technologie GANGNEUX F. 17/12/2012

JOSY VIRTUALISATION 9 ET 10 JUIN 2011 POSTE DE TRAVAIL ET VIRTUALISATION. Sébastien Geiger IPHC

Documentation d'installation Plateforme femme actuelle

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

Module 7 : Configuration du serveur WEB Apache

Différentes installations sur un serveur Windows 2000 ou 2003.

Mise en place d une infrastructure de virtualisation de poste de travail

vcenter Server 1. Interface Lancez le vsphere Client et connectez vous à vcenter Server. Voici la page d accueil de vcenter Server.

Comment avoir le logiciel? Le serveur web APACHE peut être téléchargé gratuitement du site web de APACHE:

Debian Lenny - Virtualisation avec Libvirt/KVM Debian GNU/Linux

Hyper-V R2 (Module 1) : Introduction

Cloud Computing. Groupe : Vincent, Mohammed, Yannick, Allan Tuteur : Mr. NUSSBAUM Lucas Année : 2009/2010

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

JAN OLIVIER Expert Supervision Architecte & Administrateur système

Configuration matériel. Tâche 2 : Installation proprement dite de l application sur un serveur de test virtualisé sous VmWare Workstation.

Cours Linux. Cours en ligne Administrateur Systèmes Linux. Académie Libre

Transcription:

Gérer ses environnements de développement avec Vagrant RMLL 2012 1

Jean-Marc Fontaine Passionné de web depuis 1996, de PHP depuis 2000 et de musique depuis 1977 Consultant PHP chez Alter Way Ex-Président de l AFUP Co-Auteur du livre blanc «Industrialisation PHP» Auteur du blog industrialisation-php.com 2

Qu'est-ce qu'un environnement de développement? 3

Développement Recette Production 4

Développement Recette Production 5

Plusieurs approches 6

Copie sur l environnement de production Rapide à mettre en œuvre Risque important d impact sur la production Très mauvaise idée! 7

Environnement dédié Serveur spécifique Espace pour chacun des développeurs Configuration centralisée Effets de bords possibles entre développeurs Obligation d être connecté au serveur 8

Machine locale Indépendance totale des autres développeurs Possibilité de travailler sans connexion réseau Difficulté à gérer des projets avec des besoins incompatibles Limité à un seul système d exploitation 9

Les problèmes 10

Comment maintenir (facilement) la parité entre dévelopemment et production? 11

Comment lutter contre le syndrome «Pourtant ça marche chez moi»? 12

Comment faire cohabiter sur une même machine des projets très différents? 13

Comment permettre à un nouveau développeur d être rapidement opérationnel sur le projet? 14

Comment faire évoluer la configuration du sytème une fois le le développement commencé? 15

Comment tester sans risque des montées de versions, de nouveaux outils ou une nouvelle configuration? 16

La virtualisation à la rescousse 17

Définition Possibilité d installer un ou plusieurs systèmes d exploitation invités sur un système d exploitation hôte. 18

Là encore, plusieurs approches 19

Virtualisation complète Emulation quasi-complète du matériel Pas de modification du système d exploitation invité Outils VirtualBox VMWare 20

Paravirtualisation Pas d émulation du matériel Nécessite des modifications du système d exploitation invité Outils Xen 21

Virtualisation matériellement assistée Usage des fonctionnalités spécialisées des CPU CPU de type Intel VT-x et AMD-V Pas de modification du système d exploitation invité Outils KVM VirtualBox VMWare Xen 22

Virtualisation logiciellement assistée Usage des fonctionnalités spécialisées de l OS hôte Implémentation au niveau du système d exploitation hôte Le système d exploitation invité partage le kernel de l hôte Pas de modification du système d exploitation invité Outils OpenVZ LXC 23

Avantages de la virtualisation Possibilité de lancer (presque) n importe quel système d exploitation sur (presque) n importe quelle machine Possibilité d installer les mêmes versions qu en production Fonctionnement en «bac à sable» Possibilité de distribuer les images des VM Possibilité de travailler hors-ligne 24

Inconvénients de la virtualisation La plupart des solutions Open Source nécessitent d avoir un hôte Unix Certaines solutions nécessitent des connaissances avancées 25

Peut mieux faire La virtualisation n est pas toute la solution Lutter contre le syndrome «Pourtant ça marche chez moi»? Faire cohabiter sur une même machine des projets très différents? Permettre à un nouveau développeur d être rapidement opérationnel sur le projet? Tester sans risque des montées de versions, de nouveaux outils ou une nouvelle configuration? Maintenir (facilement) la parité entre dévelopemment et production? Permettre de faire évoluer la configuration du système une fois le le développement commencé? 26

Vagrant 27

Vagrant vagrantup.com Outil en ligne de commande Utilise VirtualBox Ecrit en Ruby 28

Installation Paquets disponibles pour la plupart des systèmes d exploitation : downloads.vagrantup.com Via Ruby Gem : gem install vagrant 29

Créer sa première instance $ vagrant box add precise32 http://files.vagrantup.com/precise32.box $ vagrant init precise32 $ vagrant up 30

Se connecter à l instance $ vagrant ssh 31

Aperçu des commandes # Suspendre l instance $ vagrant suspend # Reprendre l instance $ vagrant resume # Stopper l instance $ vagrant halt # Recharger l instance $ vagrant reload # Détruire l instance $ vagrant destroy # Connaître l état de l instance $ vagrant status 32

Fichier Vagrantfile Example simplifié Vagrant::Config.run do config config.vm.box = "precise32" config.vm.box_url = "http://files.vagrantup.com/precise32.box" # config.vm.boot_mode = :gui config.vm.network :bridged # config.vm.forward_port 80, 8080 # config.vm.share_folder "v-data", "/vagrant_data", "../data" end 33

Fichier Vagrantfile Box de base Vagrant::Config.run do config config.vm.box = "precise32" Nom de la box de base config.vm.box_url = "http://files.vagrantup.com/precise32.box" end URL de la box de base 34

Fichier Vagrantfile Réseau «hostonly» IP de l instance Vagrant::Config.run do config config.vm.network :hostonly, "192.168.33.10" config.vm.forward_port 80, 8080 end Port hôte Port invité 35

Fichier Vagrantfile Réseau «bridged» Vagrant::Config.run do config config.vm.network :briged end 36

Fichier Vagrantfile Répertoires partagés Identifiant Chemin invité Chemin hôte Vagrant::Config.run do config config.vm.share_folder "v-app", "/vagrant_app", "./application" config.vm.share_folder "v-other-app", "/vagrant_other_app", "./ other_application", :nfs => true end Partage NFS 37

Performances des partages NFS Exécution de 6 000 tests d une application Ruby on Rails Durée Système de fichiers hôte 10s Système de fichiers invité 13s Répertoires partagés VirtualBox 5m 14s Répertoire partagé NFS 22s Répertoire partagé NFS (Cache chaud) 14s 38

Fichier Vagrantfile Paramétrage fin de la VM Identifiant de la VM injecté par Vagrant Vagrant::Config.run do config db_config.vm.customize [ "modifyvm", :id, "--memory", 1024 ] db_config.vm.customize [ "modifyvm", :id, "--cpus", 2 ] db_config.vm.customize [ "modifyvm", :id, "--chipset", "ich9" ] end 39

Fichier Vagrantfile Gestion de plusieurs VM Première VM Vagrant::Config.run do config config.vm.define :web do web_config web_config.vm.box = "precise32" web_config.vm.network :hostonly, "192.168.33.10" web_config.vm.share_folder "v-app", "/vagrant_app", "./ application" Seconde VM end config.vm.define :db do db_config db_config.vm.box = "lucid32" db_config.vm.network :hostonly, "192.168.33.11" db_config.vm.customize [ "modifyvm", :id, "--memory", 1024 ] end end 40

Provisionnement 41

Outils de provisionnement Gestion de la configuration des VM Créé en 2009 Syntaxe Ruby Versions indépendante et serveur Créé en 2005 Syntaxe spécifique Versions indépendante et serveur 42

Provisionnement avec Puppet Quelques précisions sur le langage proposé Langage spécifique (DSL) Langage déclaratif Concepts de base Utilisateurs / Groupes / Droits Commandes Paquets Services 43

Fichier Vagrantfile Provisionnement avec Puppet Vagrant::Config.run do config config.vm.provision :puppet do puppet puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "application.pp" end end puppet.module_path = "puppet/modules" 44

Provisionnement avec Puppet Exemple d arborescence Application de démonstration Configuration de Puppet Fichier de configuration de Vagrant 45

manifests/application.pp Fichier de déclaration de base # Set default path for Exec calls Exec { path => [ "/bin/", "/sbin/", "/usr/bin/", "/usr/sbin/" ] } node default { include params include system include apache } Inclusion de manifests 46

manifests/params.pp Fichier de configuration class params { # Apache server name # Make sure this server name points to the IP defined in the Vagranfile $servername = "www.application.local" # Apache port $port = "80" # Message of the day to be displayed at login $motd = "Welcome to your application development virtual machine!" } 47

modules/system/manifests/init.pp (1/2) Fichier de déclaration du module «system» class system { # Create "puppet" group group { "puppet": ensure => "present", } # Define default files permissions File { owner => 0, group => 0, mode => 0644 } # Update packages list before doing anything exec { "apt.update" : command => "apt-get update", } Exec["apt.update"]->Package < > 48

modules/system/manifests/init.pp (2/2) Fichier de déclaration du module «system» # Define message of the day file { "motd" : path => "/etc/motd.tail", ensure => present, content => $motd } } # Install some useful packages package { [ "htop" ] : ensure => present, } 49

modules/apache/manifests/init.pp (1/2) Fichier de déclaration du module «apache» class apache { package { "apache" : ensure => "present", name => "apache2", } file { "apache.vhost" : path => "/etc/apache2/sites-available/default", ensure => present, content => template("apache/vhost.erb"), owner => "root", group => "root", notify => Exec["apache.reload"], require => Package["apache"] } 50

modules/apache/manifests/init.pp (2/2) Fichier de déclaration du module «apache» Exec["apache.reload"], require => Package["apache"] } service { "apache" : ensure => "running", name => "apache2", enable => true, require => Package["apache"], } } exec { "apache.reload" : command => "service apache2 reload", refreshonly => true, } 51

modules/apache/templates/vhost.erb Gabarit pour le VirtualHost Apache NameVirtualHost *:<%= scope.lookupvar('params::port') %> <VirtualHost *:<%= scope.lookupvar('params::port') %>> ServerName <%= scope.lookupvar('params::servername') %> ## Apache AddDefaultCharset UTF-8 DocumentRoot "/vagrant_app/" <Directory "/vagrant_app/"> ## Apache Options -Indexes AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> Injection de paramètres 52

Démo 53

Démonstration Usage de Vagrant avec Puppet L ensemble des fichiers de la démonstration sont disponibles sur Github : https://github.com/jmfontaine/vagrant-talk 54

Créer ses propres boxes Ce n est pas parce que je suis paranoïaque qu ils ne sont pas après moi Veewee (https://github.com/jedi4ever/veewee/) Recettes de création d une box Possibilité de modifier la recette Nombreuses recettes disponibles Linux (Debian, Fedora, CentOS, ArchLinux, OpenSUSE) BSD (FreeBSD) Windows (Windows 2008, Windows 7, Windows 8) 55

Merci! Slides : http://www.slideshare.net/jmf Blog : http://www.industrialisation-php.com/ Twitter : @jmfontaine / @indusphp Email : jean-marc.fontaine@alterway.fr 56

Crédits photographiques Les photos et illustrations suivantes ont été utilisées dans cette présentation. Merci à leurs auteurs! https://secure.flickr.com/photos/wiccked/69537422/ https://secure.flickr.com/photos/r000pert/136999467 https://secure.flickr.com/photos/knolleary/6212065238 https://secure.flickr.com/photos/kevinomara/4665065738/ Logo de Vagrant tiré du site officiel : http://vagrantup.com/ Photo de Jérôme Bonaldi d origine inconnue 57