Mixit2014_Puppet_Workshop

Post on 27-May-2015

518 views 0 download

description

Support de l'atelier Devops de mixit2014 sur Puppet

Transcript of Mixit2014_Puppet_Workshop

Puppet - Vagrant

Puppet - VagrantVotre mission

Code

12

Puppet - VagrantDéveloppement

Code

WAR

Puppet - VagrantDéploiement

Puppet - VagrantL’infrastructure

Serveur App

Base de données

Monitoring

Load balancer

Recettes

Balancer

App1App2

App3

BDD1 BDD2

Monitoring

?spare?

Puppet - VagrantL’infrastructure vue du dev

Serveur App

Base de données

Recettes

VM - BDD

VM – App

VM TemplateEx: Centos

Dev

Vagrant Virtual Box

Puppet - Vagrant•Vagrant

Puppet - VagrantCycle

Puppet - Vagrant•TP

A vos claviers

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

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)

Puppet - Vagrant•Puppet

Puppet - Vagrant•TP

A vos claviers

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

Puppet - Vagrant

Puppet - VagrantPuppetMaster

Puppet - Vagrant

Puppet - Vagrant•TP

A vos claviers

Puppet - VagrantObjectifs

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

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

Puppet - Vagrant•Puppet le code

Pensez à lancer Geppetto

Puppet - VagrantOrganisation

- Node- Module- Hiera

ll /etc/puppet

Puppet - VagrantNode

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

ll /etc/puppet/manifests/

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

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

Puppet - VagrantCode d’un module

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

Puppet - Vagrant•TP

A vos claviers

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':

Puppet - VagrantObjectifs

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

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

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':

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; …

Puppet - Vagrant

Puppet - VagrantCode d’un module

- Allons voir

Puppet - Vagrant•QCM

A vos cerveaux

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

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

Puppet - VagrantL’héritage est possible pour ?

- Node- Role- Profile- Module

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

- Node- Role- Profile- Module- Hiera

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

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

Puppet - Vagrant•Puppet Hiera

Puppet - VagrantHiera

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

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

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}’

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'

Puppet - Vagrant•TP

A vos claviers

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

Puppet - Vagrant•Processus

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é

Puppet - Vagrant•Processus

Modules

Profiles

Configuration

NodesRôles

Merge

Merci

49