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.
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. 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. PITCH OF SALT
Fast, scalable and flexible software for data
center automation, from infrastructure and
any cloud, to the entire application stack.
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. 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. 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. 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
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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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!