Mixit2014_Puppet_Workshop

49
Puppet - Vagrant

description

Support de l'atelier Devops de mixit2014 sur Puppet

Transcript of Mixit2014_Puppet_Workshop

Page 1: Mixit2014_Puppet_Workshop

Puppet - Vagrant

Page 2: Mixit2014_Puppet_Workshop

Puppet - VagrantVotre mission

Code

12

Page 3: Mixit2014_Puppet_Workshop

Puppet - VagrantDéveloppement

Code

WAR

Page 4: Mixit2014_Puppet_Workshop

Puppet - VagrantDéploiement

Page 5: Mixit2014_Puppet_Workshop

Puppet - VagrantL’infrastructure

Serveur App

Base de données

Monitoring

Load balancer

Recettes

Balancer

App1App2

App3

BDD1 BDD2

Monitoring

?spare?

Page 6: Mixit2014_Puppet_Workshop

Puppet - VagrantL’infrastructure vue du dev

Serveur App

Base de données

Recettes

VM - BDD

VM – App

VM TemplateEx: Centos

Dev

Vagrant Virtual Box

Page 7: Mixit2014_Puppet_Workshop

Puppet - Vagrant•Vagrant

Page 8: Mixit2014_Puppet_Workshop

Puppet - VagrantCycle

Page 9: Mixit2014_Puppet_Workshop

Puppet - Vagrant•TP

A vos claviers

Page 10: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Valider les installations- Créer une VM from scratch- Cycle de vie de la VMhttps://github.com/smougenot/devops_puppet_workshop

vagrant vagrant box list vagrant init centos-6.x...box vagrant up vagrant ssh vagrant destroy -f

Page 11: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Idem avec la box de pour puppet

- https://github.com/smougenot/devops_puppet_workshop.git

git clone https://github.com/smougenot/devops_puppet_workshop.git

vagrant ???

Comment tout faire d’un coup (vm propre & ssh)

Page 12: Mixit2014_Puppet_Workshop

Puppet - Vagrant•Puppet

Page 13: Mixit2014_Puppet_Workshop

Puppet - Vagrant•TP

A vos claviers

Page 14: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Lancer puppet en ‘standalone’- Installer le PuppetMasterVoir le fichier puppet/vm-centOS6-64/README

sudo –s service puppetmaster status puppet apply --modulepath=… -dv -e "include

puppet::master_install" service puppetmaster status

Page 15: Mixit2014_Puppet_Workshop

Puppet - Vagrant

Page 16: Mixit2014_Puppet_Workshop

Puppet - VagrantPuppetMaster

Page 17: Mixit2014_Puppet_Workshop

Puppet - Vagrant

Page 18: Mixit2014_Puppet_Workshop

Puppet - Vagrant•TP

A vos claviers

Page 19: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Lancer le client puppet- Installer des modules depuis le PuppetMaster

sudo –s puppet agent –tdv --noop hostname vworkshopint_ZZZ puppet agent -tdv

Page 20: Mixit2014_Puppet_Workshop

Puppet - Vagrant•Puppet le code

Pensez à lancer Geppetto

Page 21: Mixit2014_Puppet_Workshop

Puppet - VagrantOrganisation

- Node- Module- Hiera

ll /etc/puppet

Page 22: Mixit2014_Puppet_Workshop

Puppet - VagrantNode

- Identifier les machines- Définir leur Rôle

ll /etc/puppet/manifests/

Page 23: Mixit2014_Puppet_Workshop

Puppet - VagrantNodenode /^.*vpeint.*$/ inherits base{ # Role class{ role::p2es::v3::inte::bo_pe: }}

Page 24: Mixit2014_Puppet_Workshop

Puppet - VagrantModule

- Le code : fichier.pp- Doc de rérérence

Nommage :- [a-z][a-z0-9_]* - Espace de nommage : role::p2es::v3::inte::bo_pe- Répertoires :

- role:: => modules/role/init.pp

- role::p2es::v3::inte::bo_pe => modules/role/manifests/p2es/v3/inte/bo_pe.pp

Page 25: Mixit2014_Puppet_Workshop

Puppet - VagrantCode d’un module

- commun::ftp (ouvrir dans Geppetto)- Ressources prédéfinies

Page 26: Mixit2014_Puppet_Workshop

Puppet - Vagrant•TP

A vos claviers

Page 27: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Créer un module « workshop »- Installer le package httpd, - En faire un service lancé au démarrage- Ajouter un fichier accessible via http (/var/www/html)

package { 'TTT':service { 'TTT':file { 'TTT':

Page 28: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Tester en local sans PuppetMaster- puppet/vm-centOS6-64/README

/vagrant_puppet/hiera_test_deploy.shpuppet apply --modulepath= …

Page 29: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Ajouter un fichier accessible via http à l’aide d’un template- Il affiche le hostname de la machine et son adresse IP- Puppet/VM/centOS6-64/README

file { 'TTT':

Page 30: Mixit2014_Puppet_Workshop

Puppet - VagrantOrganisation des modules

- Rôles (modules/role)- rôle business de la machine (ex : bdd)

- Profiles (modules/profile)- Installation et paramétrage d’un applicatif (ex:

postgresql)- Modules (modules/*)

- Segmentation des éléments- Installer- Configurer- …

- Ressources- Brique de base

- File, User, Package (yum), Perso; …

Page 31: Mixit2014_Puppet_Workshop

Puppet - Vagrant

Page 32: Mixit2014_Puppet_Workshop

Puppet - VagrantCode d’un module

- Allons voir

Page 33: Mixit2014_Puppet_Workshop

Puppet - Vagrant•QCM

A vos cerveaux

Page 34: Mixit2014_Puppet_Workshop

Puppet - VagrantDans la déclaration du node je vais?

- Définir l’environnement (dev, inté, …)- Référencer un unique rôle- Référencer un ou plusieurs profiles- Référencer un ou plusieurs modules

Page 35: Mixit2014_Puppet_Workshop

Puppet - VagrantLa déclaration des nodes?

- Est dans un fichier du répertoire manifests- Est dans un fichier configuré par

manifests/site.pp- Contient une seule déclaration par fichier- Référence un rôle- Référence une combinaison de rôles

Page 36: Mixit2014_Puppet_Workshop

Puppet - VagrantL’héritage est possible pour ?

- Node- Role- Profile- Module

Page 37: Mixit2014_Puppet_Workshop

Puppet - VagrantUne application a besoin d’un nouveau package.Quel type de contenu Puppet est impacté?

- Node- Role- Profile- Module- Hiera

Page 38: Mixit2014_Puppet_Workshop

Puppet - VagrantJe peux rendre ma classe (module) paramétrable si

elle est de type?- Node- Role- Profile- Module

Page 39: Mixit2014_Puppet_Workshop

Puppet - Vagrant•Puppet Hiera

Page 40: Mixit2014_Puppet_Workshop

Puppet - VagrantHiera

- Paramétrage / configuration- Des fichiers yaml- Organisés par environnement

Page 41: Mixit2014_Puppet_Workshop

Puppet - VagrantNode

- Identifier les machines- Définir leur Rôle

+---integration¦ +---dict-v6¦ +---gendoc¦ +---map¦ +---mongo¦ +---octopus¦ +---p2es¦ +---sa¦ +---v6+---production¦ +---dict-v6¦ +---gendoc¦ +---map¦ +---mongo¦ +---octopus¦ +---p2es¦ +---sa¦ +---v6...

Page 42: Mixit2014_Puppet_Workshop

Puppet - VagrantNode

- Identifier les machines- Définir leur Rôle

Hierarchie : hiera.yaml

ls -1 integration/dict-v6 common.yaml configuration.yaml password.yaml

vTcReferencement2.yaml vTcReferencementPreprod2.yaml...

:hierarchy: - %{::fqdn} - configuration - password - common

:yaml: :datadir: '/etc/puppet/hieradata/%{::environment}/%{projet}’

Page 43: Mixit2014_Puppet_Workshop

Puppet - VagrantUtilisation

- Dans les profiles- Sans valeur par défaut

profile::p2es::v3::pe

configuration.yaml

$DATASRC_HOST = hiera('bdd_pe_host')$DATASRC_LOGIN = hiera('bdd_pe_login')$DATASRC_PASSWORD = hiera('bdd_pe_password')

# Base de données de PE, hostbdd_pe_host : 'pgp2es'

Page 44: Mixit2014_Puppet_Workshop

Puppet - Vagrant•TP

A vos claviers

Page 45: Mixit2014_Puppet_Workshop

Puppet - VagrantObjectifs

- Dans la page info faire afficher un texte paramétré qui dépend de l’environnement

- Paramétrer le module- Créer le profile- Ajouter le paramétrage dans hiera- Ajouter le paramétrage pour un autre

environnement

Page 46: Mixit2014_Puppet_Workshop

Puppet - Vagrant•Processus

Page 47: Mixit2014_Puppet_Workshop

Puppet - VagrantCoder

- Une branche par environnement- Chaque branche à toute la config / tous les rôles

- Ex: ajout d’un nouveau paramétrage- Merge entre branche à la demande (livraison)- Un tag c’est bien aussi- Seul les Sys peuvent modifier la config hors inté

Page 48: Mixit2014_Puppet_Workshop

Puppet - Vagrant•Processus

Modules

Profiles

Configuration

NodesRôles

Merge

Page 49: Mixit2014_Puppet_Workshop

Merci

49