SlideShare una empresa de Scribd logo
1 de 14
Un grain de sel pour être
HAPI
Automatisation des déploiements et gestion
centralisée du middle-office HAPI avec SaltStack
Metin OSMAN / Octobre 2015
Le projet HAPI
HAPI = Homogeneous API ou une API unique pour la VOD, la catch’UP TV et le
live
Middle-Office en remplacement de la brique ATG, et à terme de middle-offices
dédiés au live actuellement
Architecture micro-services et hébergement dans le cloud AWS
Le projet
DROPSHIP+
Système de déploiement automatisé
et de gestion centralisée
Composé de 4 briques principales:
- Fabric : comme bibliothèque de
tâches pour le provisionning
- SaltStack : comme
bibliothèque de “recettes” pour
la spécialisation des machines
- Jenkins : pour l’orchestration
des opérations
- Git : pour la configuration des
plateformes et des applications
● OpenSource et communauté réactive aux pull-requests / hotfix
● Capacité à gérer des machines Unix et Windows
● Codé en python
● Mode master et masterless
● Bonnes performances générales
● Déjà utilisé à la DTE :-)
Choix de SaltStack
SaltStack dans Dropship+
Un seul repo Git contenant les pillars et les states pour tous les projets utilisant
Dropship+ mutualiser au maximum le re-use des states
Les grains custom des machines sont définis dans le repo git de configuration des
plateformes (a.k.a environnements)
Utilisation en mode master et minion local (les states sont déployés sur tous les
minions)
Pillars vs Grains
Au départ, utilisation des pillars comme paramétrage des environnements.
Inconvénients :
- beaucoup de copier/coller entre les différents environnements
- les personnes en charge du paramétrage interviennent sur le repo Salt
Solution actuelle, les pillars servent à paramétrer les states de manière transverse pour tous les
environnements et les grains permettent de gérer les différences ponctuelles.
Avantages :
- On mutualise au maximum le paramétrage. Ex : version d’elastic-search
- les personnes en charge du paramétrage n’interviennent que sur le repo de configuration
Utilisation des states
3 types de states :
- commons : ensemble de states constituant le socle de toutes les machines
déployées par Dropship+ (ex : dns, ssh, users, …)
- units : states unitaires permettant d’installer un produit ou d’en paramétrer un
(ex : logstash, nginx, selinux, …)
- roles : state définissant le rôle d’une machine. Ces states incluent en
générale des states unitaires. (Ex : nginx.router, redis.server, play, …)
Généralisation vs spécialisation des states
Pour qu’un state puisse être utilisé par un maximum de projets, il doit être le plus
générique et le plus flexible possible.
Inconvénient :
- le nombre de combinaison à tester
- les impacts potentiels d’une modification faite pour un projet sur un autre
Solution, créer des rôles dédiés :
- permet de conserver le code dans un seul repo
- limite les impacts
- permet d’avoir des states efficaces
Exemple : elastic-search.hapi
Syndication
Un master Dropship pour
pouvoir intervenir sur toutes
les machines déployées par
Dropship+
Un master par projet pour
pouvoir intervenir sur son
projet de manière autonome
Quelques exemples
Redémarrage de tous les services play pour l’environnement i1 :
salt -C ‘G@roles:play and G@env:i1’ service.restart play
Mise à jour des users sur toutes les machines de tous les environnements :
salt ‘*’ state.sls commons.users
Mise à jour de bash sur toutes les machines CentOS (cf shellshock) :
salt -G ‘os:CentOS’ pkg.latest bash
...
Quelques chiffres
~ 20 commons, 30 units et 15 roles
26 commiters dont 8 réguliers répartis entre DTD et DMD
~ 400 machines sur Amazon gérées par 2 masters Salt
Déploiement d’HAPI avec reconstruction à 90% tous les jours en projet et
tous les quinze jours en production (à chaque fin de sprint)
Les sujets en cours
Automatisation des tests des rôles avec Docker
Création de branches pour QA et Dev et utilisation de GitFS
Refactor pillars vs map.jinja
Utilisation d’external pillars pour les données sensibles
Tuning de performance des states
Des questions ?

Más contenido relacionado

La actualidad más candente

Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITArtusamak
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sArnaud MAZIN
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienRachid Zarouali
 
Rancher, le (petit) orchestrateur qui vous veut du bien
Rancher, le (petit) orchestrateur qui vous veut du bienRancher, le (petit) orchestrateur qui vous veut du bien
Rancher, le (petit) orchestrateur qui vous veut du bienChristophe Furmaniak
 
軽快なPlan9
軽快なPlan9軽快なPlan9
軽快なPlan9Go Saito
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienneSylvain Witmeyer
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
Presentation features
Presentation featuresPresentation features
Presentation featuresArtusamak
 
Prometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SHPrometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SHLaurent AMPLIS
 

La actualidad más candente (16)

Automatisation de la production
Automatisation de la productionAutomatisation de la production
Automatisation de la production
 
Le garbage collector .NEt
Le garbage collector .NEtLe garbage collector .NEt
Le garbage collector .NEt
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GIT
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
201505 monitoring
201505 monitoring201505 monitoring
201505 monitoring
 
Rancher, le (petit) orchestrateur qui vous veut du bien
Rancher, le (petit) orchestrateur qui vous veut du bienRancher, le (petit) orchestrateur qui vous veut du bien
Rancher, le (petit) orchestrateur qui vous veut du bien
 
軽快なPlan9
軽快なPlan9軽快なPlan9
軽快なPlan9
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Pm2 pres
Pm2 presPm2 pres
Pm2 pres
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienne
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Presentation features
Presentation featuresPresentation features
Presentation features
 
Prometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SHPrometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SH
 

Similar a Un peu de sel pour être HAPI

Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
 
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...Frédéric FAURE
 
Ysance conference - cloud computing - aws - 3 mai 2010
Ysance   conference - cloud computing - aws - 3 mai 2010Ysance   conference - cloud computing - aws - 3 mai 2010
Ysance conference - cloud computing - aws - 3 mai 2010Ysance
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.frliberation_dev
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceChristian Charreyre
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)Fourat Zouari
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Publicis Sapient Engineering
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projectsThierry Gayet
 
Eranea : presentation technique de la solution de transcodage Cobol vers Java...
Eranea : presentation technique de la solution de transcodage Cobol vers Java...Eranea : presentation technique de la solution de transcodage Cobol vers Java...
Eranea : presentation technique de la solution de transcodage Cobol vers Java...Eranea
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 

Similar a Un peu de sel pour être HAPI (20)

Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
 
Ysance conference - cloud computing - aws - 3 mai 2010
Ysance   conference - cloud computing - aws - 3 mai 2010Ysance   conference - cloud computing - aws - 3 mai 2010
Ysance conference - cloud computing - aws - 3 mai 2010
 
Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.fr
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
Eranea : presentation technique de la solution de transcodage Cobol vers Java...
Eranea : presentation technique de la solution de transcodage Cobol vers Java...Eranea : presentation technique de la solution de transcodage Cobol vers Java...
Eranea : presentation technique de la solution de transcodage Cobol vers Java...
 
Meetup PM2 @delicious-insights
Meetup PM2 @delicious-insightsMeetup PM2 @delicious-insights
Meetup PM2 @delicious-insights
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 

Un peu de sel pour être HAPI

  • 1. Un grain de sel pour être HAPI Automatisation des déploiements et gestion centralisée du middle-office HAPI avec SaltStack Metin OSMAN / Octobre 2015
  • 2. Le projet HAPI HAPI = Homogeneous API ou une API unique pour la VOD, la catch’UP TV et le live Middle-Office en remplacement de la brique ATG, et à terme de middle-offices dédiés au live actuellement Architecture micro-services et hébergement dans le cloud AWS
  • 3. Le projet DROPSHIP+ Système de déploiement automatisé et de gestion centralisée Composé de 4 briques principales: - Fabric : comme bibliothèque de tâches pour le provisionning - SaltStack : comme bibliothèque de “recettes” pour la spécialisation des machines - Jenkins : pour l’orchestration des opérations - Git : pour la configuration des plateformes et des applications
  • 4. ● OpenSource et communauté réactive aux pull-requests / hotfix ● Capacité à gérer des machines Unix et Windows ● Codé en python ● Mode master et masterless ● Bonnes performances générales ● Déjà utilisé à la DTE :-) Choix de SaltStack
  • 5. SaltStack dans Dropship+ Un seul repo Git contenant les pillars et les states pour tous les projets utilisant Dropship+ mutualiser au maximum le re-use des states Les grains custom des machines sont définis dans le repo git de configuration des plateformes (a.k.a environnements) Utilisation en mode master et minion local (les states sont déployés sur tous les minions)
  • 6. Pillars vs Grains Au départ, utilisation des pillars comme paramétrage des environnements. Inconvénients : - beaucoup de copier/coller entre les différents environnements - les personnes en charge du paramétrage interviennent sur le repo Salt Solution actuelle, les pillars servent à paramétrer les states de manière transverse pour tous les environnements et les grains permettent de gérer les différences ponctuelles. Avantages : - On mutualise au maximum le paramétrage. Ex : version d’elastic-search - les personnes en charge du paramétrage n’interviennent que sur le repo de configuration
  • 7. Utilisation des states 3 types de states : - commons : ensemble de states constituant le socle de toutes les machines déployées par Dropship+ (ex : dns, ssh, users, …) - units : states unitaires permettant d’installer un produit ou d’en paramétrer un (ex : logstash, nginx, selinux, …) - roles : state définissant le rôle d’une machine. Ces states incluent en générale des states unitaires. (Ex : nginx.router, redis.server, play, …)
  • 8. Généralisation vs spécialisation des states Pour qu’un state puisse être utilisé par un maximum de projets, il doit être le plus générique et le plus flexible possible. Inconvénient : - le nombre de combinaison à tester - les impacts potentiels d’une modification faite pour un projet sur un autre Solution, créer des rôles dédiés : - permet de conserver le code dans un seul repo - limite les impacts - permet d’avoir des states efficaces
  • 10. Syndication Un master Dropship pour pouvoir intervenir sur toutes les machines déployées par Dropship+ Un master par projet pour pouvoir intervenir sur son projet de manière autonome
  • 11. Quelques exemples Redémarrage de tous les services play pour l’environnement i1 : salt -C ‘G@roles:play and G@env:i1’ service.restart play Mise à jour des users sur toutes les machines de tous les environnements : salt ‘*’ state.sls commons.users Mise à jour de bash sur toutes les machines CentOS (cf shellshock) : salt -G ‘os:CentOS’ pkg.latest bash ...
  • 12. Quelques chiffres ~ 20 commons, 30 units et 15 roles 26 commiters dont 8 réguliers répartis entre DTD et DMD ~ 400 machines sur Amazon gérées par 2 masters Salt Déploiement d’HAPI avec reconstruction à 90% tous les jours en projet et tous les quinze jours en production (à chaque fin de sprint)
  • 13. Les sujets en cours Automatisation des tests des rôles avec Docker Création de branches pour QA et Dev et utilisation de GitFS Refactor pillars vs map.jinja Utilisation d’external pillars pour les données sensibles Tuning de performance des states