MyApps, 1er bouquet d'applications packagées pour l'industrie
Mixit2014_Puppet_Workshop
description
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