Un peu de sel pour être HAPI

Canal+ Dev
Canal+ DevDéveloppeurs at Canal+
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 ?
1 of 14

Recommended

Git vs SVN by
Git vs SVNGit vs SVN
Git vs SVNneuros
23.8K views16 slides
Git développez autrement by
Git développez autrementGit développez autrement
Git développez autrementBertrand Chevrier
1.3K views34 slides
20170706 Terraform, Rancher et AWS EFS by
20170706 Terraform, Rancher et AWS EFS20170706 Terraform, Rancher et AWS EFS
20170706 Terraform, Rancher et AWS EFSAlexis Ducastel
204 views25 slides
Migration d'une base de code subversion vers git by
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitGeoffrey Bachelet
1.8K views53 slides
Power Shell V2 Full by
Power Shell V2 FullPower Shell V2 Full
Power Shell V2 FullSIMOES AUGUSTO
657 views8 slides
Pyconfr2018 deploy des application python dans un cluster open shift by
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftArthur Lutz
88 views21 slides

More Related Content

What's hot

Automatisation de la production by
Automatisation de la productionAutomatisation de la production
Automatisation de la productionNew Caledonian Government
856 views20 slides
Le garbage collector .NEt by
Le garbage collector .NEtLe garbage collector .NEt
Le garbage collector .NEtOlivier MARTINET
1.3K views32 slides
Openshift 3 & Kubernetes by
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
604 views12 slides
Drupalcamp Nantes - Présentation GIT by
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITArtusamak
1.3K views20 slides
Git l'essentiel by
Git l'essentielGit l'essentiel
Git l'essentielRiadh MNASRI
1.1K views37 slides
Kubernetes Meetup Paris #5 - Metriques applicatives k8s by
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sArnaud MAZIN
1.3K views22 slides

What's hot(16)

Drupalcamp Nantes - Présentation GIT by Artusamak
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GIT
Artusamak1.3K views
Kubernetes Meetup Paris #5 - Metriques applicatives k8s by Arnaud MAZIN
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Arnaud MAZIN1.3K views
Les containers docker vu par un chef cuisinier et un mécanicien by Rachid Zarouali
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
Rachid Zarouali239 views
Rancher, le (petit) orchestrateur qui vous veut du bien by Christophe Furmaniak
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 by Go Saito
軽快なPlan9軽快なPlan9
軽快なPlan9
Go Saito3.1K views
Presentation features by Artusamak
Presentation featuresPresentation features
Presentation features
Artusamak777 views
Prometheus et kubernetes | AIOS SH by Laurent AMPLIS
Prometheus et kubernetes | AIOS SHPrometheus et kubernetes | AIOS SH
Prometheus et kubernetes | AIOS SH
Laurent AMPLIS236 views

Similar to Un peu de sel pour être HAPI

Python application packaging @ MeilleursAgents by
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
304 views18 slides
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa... by
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
1.2K views18 slides
Ysance conference - cloud computing - aws - 3 mai 2010 by
Ysance   conference - cloud computing - aws - 3 mai 2010Ysance   conference - cloud computing - aws - 3 mai 2010
Ysance conference - cloud computing - aws - 3 mai 2010Ysance
1K views18 slides
Sizing PoC LSF & PowerAI for Engineers schools workloads by
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
128 views22 slides
Les bases de git by
Les bases de gitLes bases de git
Les bases de gitPierre Sudron
4.2K views96 slides
Des poneys à Liberation.fr by
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.frliberation_dev
1K views11 slides

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

Python application packaging @ MeilleursAgents by Nicolas Mussat
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
Nicolas Mussat304 views
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa... by Frédéric FAURE
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 FAURE1.2K views
Ysance conference - cloud computing - aws - 3 mai 2010 by Ysance
Ysance   conference - cloud computing - aws - 3 mai 2010Ysance   conference - cloud computing - aws - 3 mai 2010
Ysance conference - cloud computing - aws - 3 mai 2010
Ysance1K views
Sizing PoC LSF & PowerAI for Engineers schools workloads by PhilippeBrogi
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
PhilippeBrogi128 views
Comment travailler avec les logiciels Open Source by Christian Charreyre
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
Christian Charreyre1.6K views
JBoss clustering et tuning (lab 3/3) by Fourat Zouari
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
Fourat Zouari2.2K views
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries by Xavier MARIN
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
Xavier MARIN381 views
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm... by MSDEVMTL
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...
MSDEVMTL978 views
Eranea : presentation technique de la solution de transcodage Cobol vers Java... by Eranea
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...
Eranea5.6K views
Être productif avec JHipster - Devoxx France 2017 by Julien Dubois
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
Julien Dubois9.4K views
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ... by Jérôme Petazzoni
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 Petazzoni5.2K views
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent... by Alexandre Touret
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 Touret43 views
Etat de l'art des systèmes embarqués, utilisation du logiciel libre by Pierre Ficheux
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Pierre Ficheux1.6K views

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