2. Initialiser des conteneurs Docker à partir de configurations
Salt
Gérer ses configurations Salt dans Mercurial
Articulation entre Docker, gestion de configuration et
Mercurial
Retour d'expérience
Perspectives
4. Salt
boîte à outils (toolkit) pour l'infrastructure construite sur un
bus de communication asynchrone
exécution à distance
Cloud Provisionning
gestion de configuration centralisée
orchestration
6. Docker + Salt + Mercurial
Salt pour créer des images Docker
Salt pour déployer des conteneurs
Salt pour gérer des conteneurs (CMD salt-minion)
Mercurial pour conserver ses configurations Salt
7. Pourquoi ?
Docker recommande le microservice et utilise le FROM
pour la modularité
Salt apporte la configuration centralisée et indépendante
du mode de déploiement (conteneur, VM, baremetal)
Mercurial permet les bonnes pratiques du développement
collaboratif
8. Comment ?
Dockerfile minimaliste pour bootstraper salt:
F R O M 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
Deux options : microservice ou VM légère
9. Installer un microservice dovecot
A partir de https://github.com/saltstack-formulas/dovecot-
formula
F R O M l o g i l a b / m a s t e r l e s s : j e s s i e
# p u s h f o r m u l a
A D D d o v e c o t / s r v / s a l t / d o v e c o t
A D D p i l l a r . e x a m p l e / s r v / p i l l a r / m a i n . s l s
R U N e c h o " b a s e : " > / s r v / p i l l a r / t o p . s l s
R U N e c h o " ' * ' : " > > / s r v / p i l l a r / t o p . s l s
R U N e c h o " - m a i n " > > / s r v / p i l l a r / t o p . s l s
R U N e c h o " f i l e _ c l i e n t : l o c a l " > / e t c / s a l t / m i n i o n . d / l o c a l . c o n f
R U N s a l t - c a l l - - l o c a l s t a t e . s l s d o v e c o t
R U N a p t - g e t r e m o v e - - p u r g e s a l t - m i n i o n & & a p t - g e t c l e a n & & [ . . . ]
C M D / u s r / b i n / d o v e c o t
10. Tester des states Salt
F R O M l o g i l a b / m a s t e r l e s s : j e s s i e
R U N a p t - g e t - y i n s t a l l m e r c u r i a l
R U N h g c l o n e h t t p s : / / h g . l o g i l a b . f r / a d m i n / s a l t / s r v / s a l t
R U N e c h o " f i l e _ c l i e n t : l o c a l " > / e t c / s a l t / m i n i o n . d / l o c a l . c o n f
R U N s a l t - c a l l - - l o c a l s t a t e . s l s t e s t e d _ c o n f i g
11. Déployer un conteneur avec Salt
Description du service avec le module docker de Salt :
m y _ s e r v i c e :
d o c k e r . 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 s :
" 5 0 0 0 / t c p " :
H o s t P o r t : " 5 0 0 0 "
Déploiement :
d a v i d @ s a l t : ~ / s a l t d o c k e r h o s t . 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
12. Scale
Démarrer 100 conteneurs sur une machine :
{ % 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 . 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 s :
" { { p o r t } } / t c p " :
H o s t P o r t : " { { p o r t } } "
{ % e n d f o r % }
13. Gérer ses conteneurs avec Salt
approche VM légère
on utilise salt-minion comme CMD
permet de piloter des conteneurs à partir du salt-master
F R O M 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
C M D / u s r / b i n / s a l t - m i n i o n
14. Organiser le travail en équipeJulien
salt-master dev
Hg
Arthur
David
front.logilab.fr db.logilab.fr
app1.logilab.fr app2.logilab.fr
PowerEdge
2950
db.logilab.fr
PowerEdge
2950
host.logilab.fr
front.logilab.fr
app1.logilab.fr
app2.logilab.fr
salt-master
MMeerrccuurriiaall
15. Conclusion
versionnement, revue de code / intégration
indépendance vis à vis des environnements d'exécution
approche devops
Test Driven Infrastructure