Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
-
Upload
olivier-dasini -
Category
Documents
-
view
1.732 -
download
0
description
Transcript of Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
![Page 1: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/1.jpg)
This is time for the «Puppet» show !
Ops@viadeo : Puppet & Co.
Xavier Krantz
Viadeo Tech Days 2012
![Page 2: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/2.jpg)
Plats à la carte
1. L’infra de Viadeo : aperçu
2. Retour vers le futur
3. The Puppet Master, «evil comes in all sizes»
4. The Foreman, le compagnon incontournable
5. Puppet «in da Pipe»
6. Retours d’expérience
7. Et maintenant ?
8. Questions
![Page 3: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/3.jpg)
1 - L’infra : Aperçu
Is that so bad ?
![Page 4: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/4.jpg)
1 - L’infrastructure Aujourd’hui
App1 App2 App3
Cluster1
App3...
Cluster1Cluster1
~ 40 MySQL
~15 Memcached
~ 60 Fronts
~ 20 Solr Neo4j Hadoop
2 Fw2 Lb
![Page 5: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/5.jpg)
1 - L’infrastructure Aujourd’hui
~ 60 Fronts Applicatifs (Tomcat5, Tomcat6, Tomcat7, NodeJS, Rubby)
~ 40 MySQL
~ 15 Memcached
~ 20 Solr
~ 5 Neo4J
~ 30 Hadoop
~ 5 Internal Workers
~ 15 Infrastructures tools
Total ~ 150 Serveurs de Production Physiques !
![Page 6: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/6.jpg)
2 - Retour vers le Futur
Nice car by the way !
![Page 7: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/7.jpg)
2 - Retour vers le futurUne infrastructure croissante petit à petit
1,2 puis 3 serveurs
L’Artisanat du serveurInstallation manuelleTests de versions en prodScp, mon ami ! (Ou NFS ...)
The «bleeding Edge»Archive *.tar.gz dans /usr/localCompilation manuelle des programmes
Accès à la productionRoot every where (Je suis l’admin et pis c’est tout !)Privilèges d’ancien
Les DNS ? Pourquoi faire ?
![Page 8: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/8.jpg)
2 - Retour vers le Futur
Viadeo.com45 Millions de membres3 Millions de profils vue par joursY Posts200 000 Mise en relations quotidienne
80 développeurs4 Sites de développement1 écosystème varié
Tomcat5, Tomcat6, Tomcat7Java, Spring, NodeJS, Ruby
Des technologies à maitriserHadoopSolrNeo4J
+ de 200 Serveurs toutes plateformes confondues
Une BI (Des datas, des datas, encore des datas)Des process métiers complexes
![Page 9: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/9.jpg)
Et seulement 3 Ops !
2 - Retour vers le Futur
![Page 10: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/10.jpg)
2 - Retour vers le Futur
Besoins :
QAConsistanceStandardisationFlexibilitéAutomatisation
Une idée ?
![Page 11: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/11.jpg)
2 - Retour vers le Futur
Besoins :
QAConsistanceStandardisationFlexibilitéAutomatisation
Une idée ?
![Page 12: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/12.jpg)
3 - The Puppet MasterIt is going to change !
![Page 13: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/13.jpg)
3 - Mise en place de PuppetAmorce :
1 Plateforme de productionUbuntu 10.04 LTS - instable (Kernel Panic)PXE + ~ KickStart + Scripts d’installation maisonsDes scripts (ou morceaux) à droite et à gaucheEt c’est tout !
1 Puppet Master1 Nouvel OS : Debian1 Apache + Mod_passengerQuelques modules «maisons»1 Objectif de standardisation (Packages Debian)
1 Repository SVN pour l’exploitDétaché du produit viadeo (quand même)
![Page 14: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/14.jpg)
3 - Mise en place de PuppetNouveau Dogme : « Infrastructure As Code »
(so deal with it)
SVN Monolithique -> Git
Modèle de branche intuitif : « Git Flow »
Hook Pre-commit : Check de SyntaxHook Post-commit : Création d’environnements Puppet
Git Hub Pull Request + Mode collaboratif– « It So easy ! »
Evolution : Ops -> «Dev» Ops (un jour)
![Page 15: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/15.jpg)
3 - Mise en place de PuppetDes outils
![Page 16: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/16.jpg)
3 - Mise en place de PuppetNotre dépôt
Des modules «maisons»Encore trop spécifique
– Pas de Submodules Git– Pas de suivit de la puppet-forge
Trop de données «viadeo» dans les modules
Evolutions en cours– Généralisation (Classes paramétrées)– Augeas > Templates > Files– Module «viadeo» core
![Page 17: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/17.jpg)
3 - Mise en place de PuppetNotre dépôt
[ xkrantz@jumper ] ~/Sources/exploit-puppet (development) $ tree -L 2 -F.!"" README.rdoc!"" autosign.conf!"" fileserver.conf|!"" manifests/# !"" nodes/# !"" site.pp# $"" templates.pp|!"" modules/# !"" apache/# !"" apt/# !"" archive/# !"" common/# !"" concat/# !"" dell/| ...| !"" viadeo/
![Page 18: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/18.jpg)
3 - Mise en place de PuppetNotre dépôt
class baseclass {
## Includes Environments Variables class {'viadeo::params': stage => 'first', }
## Modules class {'locale': } class {'timezone': } class {'system': } class {'ntp': ntp_servers => $viadeo::params::ntp_servers, } class {'postfix': relayhost => $viadeo::params::relayhost, alias_root => $viadeo::params::alias_root, external_domain => $viadeo::params::external_domain, }
..}
![Page 19: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/19.jpg)
3 - Mise en place de PuppetNotre dépôt
class viadeo::webapp inherits viadeo {
## Main Modules include viadeo::webapp::apache include viadeo::webapp::tomcat include viadeo::webapp::config
...}
![Page 20: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/20.jpg)
4 - The Foreman Now build it baby !
![Page 21: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/21.jpg)
4 - The Foreman
![Page 22: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/22.jpg)
4 - The Foreman
![Page 23: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/23.jpg)
4 - The Foreman
![Page 24: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/24.jpg)
4 - The Foreman
Provision de serveurs
![Page 25: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/25.jpg)
4 - The Foreman
![Page 26: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/26.jpg)
4 - The Foreman
Suivi de synchronisation
![Page 27: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/27.jpg)
4 - The Foreman
![Page 28: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/28.jpg)
4 - The Foreman
Unique point d’entrée des serveursOutils central de provisioning
Dashboard « Puppet »Etat des agentsInventaire des machinesAperçu de l’infrastructure (Environnements)
Inventaire automatiqueFacts : Etat de configuration matériel / logiciel « temps réel » des serveurs
LA « CMDB » : Adieux spreadsheet !
![Page 29: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/29.jpg)
5 -Puppet « In Da Pippe »You can find me in the pipe
![Page 30: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/30.jpg)
Objectif :Assurer une infra «ISO» tout au long de la chaine de développement
Projet transverse : build automatique des projets1 feature = 1 branche « viadeo »1 branche = 1 environnement complet et dédié
Déploiement automatique d’une infra
5 - Puppet « in Da pipe »
![Page 31: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/31.jpg)
Actuellement :
1 Puppet Master / site+ infra (DNS, DHCP, PXE, Foreman, Repo Debian ...)1 Subnet = 1 environment
1 Puppet Master = 1 Depot Git + Hooks
3 Branches principales :Production,StagingDevelopment– « Pull » automatique toute les 10 min depuis
GitHub
5 - Puppet « in Da pipe »
![Page 32: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/32.jpg)
Future proche :Ganeti : « Cloud » privé, capacité de provision
5 - Puppet « in Da pipe »
![Page 33: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/33.jpg)
Future (moins) proche :
VagrantInterface avec les API de « cloud » publicsContribution aux outils (Foreman, modules Puppet, ...)
5 - Puppet « in Da pipe »
![Page 34: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/34.jpg)
6 - Retour d’expérience
![Page 35: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/35.jpg)
6 - Retour d’expérience
Avant
Ubuntu 10.04Applications compiléesConfiguration manuelleScripts « d’automatisation »
Difficile à maintenir
Après
Debian Squeeze « Stable »Applications « standard » en PackagesInstallation entièrement automatique
Serveur opérationnel en 30min (modulo l’import de données)
Consistance, automatisation95% des serveurs de production sont « Puppetizés »
![Page 36: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/36.jpg)
6 - Retour d’expérience
A l’usage
Nouvelles manières de travailler
Flexibilité / Rigueur : PuppetCtl
Puppet VS Packages VS Déploiement d’application
Attention au redémarrage automatique des services
Tester, tester et encore tester !Puppet : Autoroute du bonheur ou Apocalypse
Rspec Puppet + TravisRDoc + Graph des dépendances
![Page 37: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/37.jpg)
6 - Retour d’expérience
Puppet 2.6.2
Portée des variablesServeur de fichiers
Ordonnancement « Macro Class »Merci STDLib
Inter dépendance des modules
class mysql ( $type = 'oracle' ) {
...
## Ordering anchor {'mysql::begin': } -> Class['params'] -> Class['repo'] -> Class['install'] -> Class['config'] -> Class['service'] ## Set users account -> Class['pwgen'] -> Class['root'] -> Class['security'] -> anchor {'mysql::end': }}
![Page 38: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/38.jpg)
6 - Retour d’expérience
Foreman
Projet jeune0.1 : Septembre 20090.3 : Juin 20110.4.2 : Decembre 20111.0 : Juillet 2012
CMBD, point unique et centrale de référence / Evolution rapide du projetNiveau de confiance ?
Suivre le projet et tester !
Attention Rapport Agents / Status de synchronisation
![Page 39: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/39.jpg)
7 - La suite ?
![Page 40: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/40.jpg)
7 - La suite
Enc Ganeti Ipmi Hiera
Mcollective Foreman API
puppet puppetCtl
puppetdb Sensu vagrant
![Page 41: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/41.jpg)
7 - La suiteFuture (+ ou -) proche :
PuppetCtl : Désactiver Puppet de manière contrôlée,Foreman API
Puppet 3.0 : Optimisation des performancesHiera : Data hierarchie et séparation,PuppetDB : Collecter, automatiser et capacité d’échelle,
MCollective : Marionnette « Orchestration »Sensu : Monitoring and data collectionGraphite : GDash
IPMI : Hardware and Firmware AutomationPowerDNS : On Rails + Foreman SP (Every thing as a Service)
![Page 42: Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz](https://reader034.fdocuments.in/reader034/viewer/2022051610/548260d5b4af9f420a8b46e9/html5/thumbnails/42.jpg)
8 - Questions ?Puppet Family
Des modules «maisons»Encore trop spécifique
– Pas de Submodules Git– Pas de suivit de la puppet-forge
Trop de données «viadeo»
Evolutions en cours– Généralisation (Classe paramettrées)
– Augeas > Templates > Files