Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Utiliser salt pour tester son infrastructure sur open stack ou docker

949 views

Published on

Vous pouvez accéder à cette présentation sur ce lien : http://slides.logilab.fr/2015/poss2015_salt-docker/#/

Configurer et orchestrer son infrastructure avec un outil de gestion de configuration centralisée tel que Salt comporte de nombreux avantages.
La conservation et l'historisation des fichers de configuration dans un entrepôt de source geré par un DVCS (mercurial ou git) en fait partie.
Salt permet ensuite de faire évoluer son infrastructure en la testant dans des environements isolés. Une fois la description complète, reproduire une partie de son infrastructure de production sur un environnement virtualisé tel qu'un cloud
privé (OpenStack) devient possible et automatisable avec
*salt-cloud*. L'étape suivante est de pouvoir reproduire des portions de son infrastructure dans des conteneurs légers tels que docker ou lxc directement sur son portable. Pour cela, le pilotage de docker par salt et les fonctionnalités d'orchestration de salt permettent une agilité sans précédent.

Il s'agit d'un bon complément pour le TDI : Test Driven Infrastructure. L'infrastructure est testée en mode "intégration continue" et on peut tester et débugger une partie de l'infrastructure en mode "bac à sable".

Ce modèle peut ensuite être décliné avec l'utilisation des branches dans git ou mercurial où certaines branches vont être appliquées à la partie production de l'infrastructure alors que d'autres sont appliqués a la préproduction ou aux environnements docker ou lxc en local.


Salt est un outil de gestion de configuration centralisé généralement utilisé pour configurer et orchestrer son infrastructure système en bénéficiant de la conservation et de l'historisation des fichiers de configuration dans un entrepôt source géré par mercurial ou git. Toutefois, les possibilités offertes par Salt vont beaucoup plus loin. Une fois la description Salt de l'infrastructure de production terminée, il est possible d'en reproduire automatiquement tout ou partie
avec salt-cloud dans un environnement virtualisé (cloud privé OpenStack) et ainsi de pouvoir mener des tests. En allant plus loin, il est possible de reproduire des portions d'infrastructure dans des conteneurs légers (docker, lxc) et de travailler directement sur son ordinateur portable.
Les fonctionnalités d'orchestration de Salt et son pilotage de docker amènent une agilité sans précédent dans ce processus de travail.

Dans le modèle décrit ci-dessus, excellent complément du TDI (Test-Driven Infrastructure), l'infrastructure est testée et déboguée en mode "bac à sable" puis déployée selon un mécanisme automatisé d'intégration continue. Le modèle peut être décliné en utilisant des branches dans l’entrepôt source de Salt et en choisissant quelles branches sont appliquées
à l'infrastructure en production, en pré-production ou en test dans les environnements locaux (docker, lxc). Des mécanismes de relecture et de validation peuvent alors être mis en œuvre.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Utiliser salt pour tester son infrastructure sur open stack ou docker

  1. 1. UTILISER SALT POUR TESTER SON INFRASTRUCTURE SUR OPENSTACK OU DOCKER
  2. 2. QUI? David Douard (Logilab) ✉david.douard@logilab.fr ὆david@jabber.logilab.org @douardda douardda
  3. 3. QUOI ? Salt c'est chouette Docker c'est à la mode OpenStack tout le monde en a dans ses placards sinon, ça marche aussi avec EC2
  4. 4. SALT C'EST CHOUETTE... u s e r @ s a l t m a s t e r : ~ $ s a l t ' * ' s t a t e . h i g h s t a t e t e s t = T r u e u s e r @ s a l t m a s t e r : ~ $ s a l t ' * ' s t a t e . h i g h s t a t e ou u s e r @ s a l t m a s t e r : ~ $ s a l t ' * ' p k g . r e f r e s h _ d b u s e r @ s a l t m a s t e r : ~ $ s a l t ' * ' p k g . l i s t _ u p g r a d e s u s e r @ s a l t m a s t e r : ~ $ s a l t ' * ' p k g . u p g r a d e _ a v a i l a b l e mais aussi r o o t @ s a l t e d : ~ $ s a l t - c a l l s t a t e . h i g h s t a t e t e s t = T r u e
  5. 5. SALT C'EST CHOUETTE... u s e r @ s a l t m a s t e r : ~ $ s a l t - G ' r o l e s : a p a c h e ' a p a c h e . v h o s t s 1 9 2 . 1 6 8 . 1 . 1 0 0 : 8 0 : - - - - - - - - - - a s t r o i d . o r g : - - - - - - - - - - c o n f : / e t c / a p a c h e 2 / s i t e s - e n a b l e d / a s t r o i d . o r g . c o n f : 1 p o r t : 8 0 v h o s t : a s t r o i d . o r g c u b i c w e b . o r g : - - - - - - - - - - c o n f : / e t c / a p a c h e 2 / s i t e s - e n a b l e d / c u b i c w e b . o r g . c o n f : 7 [ . . . ]
  6. 6. PITCH OF SALT Fast, scalable and flexible software for data center automation, from infrastructure and any cloud, to the entire application stack.
  7. 7. SALT - C'EST QUOI ? exécution distante asynchrone gestion de configuration centralisée déploiement d'infrastructure à la demande gestion de machines virtuelles supervision et monitoring une boîte à outils pour la gestion d'infrastructure !
  8. 8. SALT - C'EST COMMENT ? Logiciel Libre Rapide Python Récent (mars 2011) ZMQ (PUB/SUB + REQ/REP) Bien packagé pour Debian et RedHat Communité très active Très flexible et extensible Supporte même Windows
  9. 9. EXECUTION À DISTANCE u s e r @ m a s t e r : ~ # s a l t - G ' r o l e s : d e s k t o p ' g n o m e . g e t I d l e A c t i v a t i o n u s e r = d a v i d u s e r @ m a s t e r : ~ # s a l t ' * ' p k g . i n s t a l l l i b s s l 1 . 0 . 0 r e f r e s h = T r u e u s e r @ m a s t e r : ~ # s a l t ' * ' c m d . r u n c h e c k r e s t a r t u s e r @ m a s t e r : ~ # s a l t ' * ' s e r v i c e . r e s t a r t s s h d u s e r @ m a s t e r : ~ # s a l t ' * ' s e r v i c e . r e s t a r t a p a c h e 2
  10. 10. CONFIGURATION m a k e s u r e n t p i s r u n n i n g : p k g . i n s t a l l e d : - n a m e : n t p s e r v i c e . r u n n i n g : - n a m e : n t p d - w a t c h : - f i l e : / e t c / n t p . c o n f d e p l o y n t p c o n f i g u r a t i o n : f i l e . m a n a g e d : - n a m e : / e t c / n t p . c o n f - s o u r c e : s a l t : / / n t p / n t p . c o n f - r e q u i r e : - p k g : n t p
  11. 11. CLIWeb SSH agent-less servers salt-master salt-minions returners salt-syndic salt-minions user salt-masterless
  12. 12. SALT-CLOUD Permet de piloter la plupart des plateformes de cloud ou de virtualisation.
  13. 13. SALT-CLOUD providers : les fournisseurs de machines profiles : les types de machines créer, supprimer, interroger des VMs u s e r @ s a l t : ~ $ s a l t - c l o u d - p j e s s i e - i c e h o u s e w e b 1 w e b 2 d b 1 a p p 1 a p p 2 u s e r @ s a l t : ~ $ s a l t - c l o u d - d w e b 2 a p p 2 u s e r @ s a l t : ~ $ s a l t - c l o u d - Q
  14. 14. SALT-CLOUD À LA CRÉATION D'UNE MACHINE démarre la VM sur la plateforme choisie provisionne un salt-minion permet de provisionner un salt-master local accepte sa clef lance une mise en conformité (highstate)
  15. 15. PILOTER DOCKER AVEC SALT s a l t d o c k e r . l o g i l a b . f r d o c k e r n g . p s s a l t d o c k e r . l o g i l a b . f r d o c k e r n g . i n s p e c t m y d o c k e r s a l t d o c k e r . l o g i l a b . f r d o c k e r n g . c o m m i t m y d o c k e r r e p o / m y d o c k e r : t a g
  16. 16. DÉCRIRE SES CONTENEURS AVEC SALT # s t a t e s / m y _ s e r v i c e . s l s m y r e p o / m y a p p c o n t a i n e r : d o c k e r n g . i m a g e _ p r e s e n t : - b u i l d : h t t p s : / / g i t h u b . c o m / m y u s e r / m y r e p o . g i t m y _ s e r v i c e : d o c k e r n g . r u n n i n g : - c o n t a i n e r : m y r e p o / m y a p p c o n t a i n e r - p o r t _ b i n d i n g s : 5 0 0 0 : 5 0 0 0 déploiement : u s e r @ s a l t m a s t e r : ~ $ s a l t d o c k e r . l o g i l a b . f r s t a t e . s l s m y _ s e r v i c e
  17. 17. SCALE! { % f o r p o r t i n r a n g e ( 5 0 0 0 , 5 1 0 0 ) % } m y _ s e r v i c e { { p o r t } } : d o c k e r n g . r u n n i n g : - c o n t a i n e r : m y a p p c o n t a i n e r - p o r t _ b i n d i n g s : { { p o r t } } : 5 0 0 0 { % e n d f o r % }
  18. 18. GÉRER SES CONTENEURS AVEC SALT approche VM légère on utilise salt-minion comme PID1 permet de provisionner ses conteneurs à partir du salt- master permet de piloter des conteneurs à partir du salt-master F R O M d o c k e r . l o g i l a b . f r / l o g i l a b / d e b i a n : j e s s i e R U N a p t - g e t u p d a t e R U N a p t - g e t - y i n s t a l l s a l t - m i n i o n E N T R Y P O I N T / u s r / b i n / s a l t - m i n i o n
  19. 19. Julien salt-master dev Hg Arthur David front.logilab.fr db.logilab.fr app1.logilab.fr app2.logilab.fr Power Edge 2950 db.logilab.fr Power Edge 2950 host.logilab.fr front.logilab.fr app1.logilab.fr app2.logilab.fr salt-master MMeerrccuurriiaall
  20. 20. 00:00
  21. 21. BÉNÉFICES DE SALT + DOCKER + MERCURIAL Versionnement de la configuration avec les avec une UI à peu près utilisable mutable changesets https://xkcd.com/1597
  22. 22. BÉNÉFICES DE SALT + DOCKER + MERCURIAL Déploiement en environment mixte docker, lxc, kvm, esx, cloud, baremetal Configuration indépendante de l'environnement d'exécution
  23. 23. BÉNÉFICES DE SALT + DOCKER + MERCURIAL Approche devops : les développeurs soumettent des patches pour l'infrastucture peuvent reproduire la prod en quelques secondes Revue de code Intégration continue Test Driven Infrastructure
  24. 24. DIFFICULTÉS DE DOCKER + SALT NÉCESSITE UNE CONF SOIGNÉE Ne pas spammer l'IT quand on lance des conteneurs Ne pas pourrir la supervision Faire attention à ses service.running
  25. 25. DIFFICULTÉS DE DOCKER + SALT PAS DE INIT OU SYSTEMD COMME PID1 Respecter strictement la Docker way of life Faire attention à ses service.running Utiliser des outils comme supervisord comme PID1 Arrêter d'utiliser Docker ? rkt rocks!
  26. 26. RKT https://github.com/coreos/rkt implémentation de la spec conçu pour systemd compatible avec Docker architecture modulaire App Container spec
  27. 27. MERCI ! ✉david.douard@logilab.fr ὆david@jabber.logilab.org @douardda douardda salt-fr@lists.afpy.fr #salt-fr sur freenode

×