SlideShare une entreprise Scribd logo
DevOps	
  avec	
  Ansible	
  et	
  Docker	
  
le	
  20/03/2015	
  
Stéphane	
  Manciot

○ Introduction	
  à	
  DevOps	
  
○ Packaging	
  avec	
  Docker	
  
○ Pourquoi	
  Ansible	
  ?	
  
○ Déploiement	
  et	
  provisioning	
  avec	
  Ansible
Présentation
DevOps
DevOps - Bénéfices attendus (1/5)
Des	
  cycles	
  de	
  déploiement	
  plus	
  courts	
  
Les	
  devOps	
  jouent	
  un	
  rôle	
  clé	
  dans	
  la	
  réduc@on	
  du	
  temps	
  du	
  cycle	
  de	
  
déploiement	
  des	
  logiciels,	
  passant	
  de	
  quelques	
  semaines	
  à	
  seulement	
  quelques	
  
heures,	
  permeDant	
  une	
  plus	
  grande	
  flexibilité	
  quant	
  aux	
  nouvelles	
  
fonc@onnalités	
  et	
  changements	
  à	
  apporter	
  au	
  produit	
  ini@al.	
  
DevOps - Bénéfices attendus (2/5)
Mise	
  à	
  disposiBon	
  de	
  nouveaux	
  services	
  plus	
  rapidement	
  
Des	
  déploiements	
  fréquents	
  associés	
  à	
  des	
  délais	
  de	
  livraison	
  plus	
  rapides	
  
permeDent	
  	
  une	
  agilité	
  opéraBonnelle.	
  
DevOps - Bénéfices attendus (3/5)
Une	
  saBsfacBon	
  client	
  améliorée	
  	
  
Grâce	
  à	
  des	
  applica@ons	
  ciblées	
  et	
  de	
  qualité,	
  conformes	
  aux	
  retours	
  clients	
  end	
  
to	
  end.	
  
DevOps - Bénéfices attendus (4/5)
Des	
  coûts	
  réduits	
  
L’automa@sa@on	
  permet	
  aux	
  équipes	
  de	
  réaffecter	
  des	
  ressources	
  précieuses	
  à	
  
des	
  tâches	
  à	
  plus	
  haute	
  valeur.
DevOps - Bénéfices attendus (5/5)
Conformité	
  et	
  Gouvernance	
  
Automa@sa@on	
  du	
  tracking	
  et	
  repor@ng	
  end-­‐to-­‐end	
  sur	
  les	
  phases	
  de	
  livraison	
  /	
  
déploiement	
  con@nu.	
  
DevOps - Démarche agile
DevOps - Intégration continue
DevOps - Livraison continue
DevOps - Déploiement continu
(Nexus)(
DevOps - Déploiement Zero Downtime (1/2)
○ Pattern	
  Blue/Green
DevOps - Déploiement Zero Downtime (2/2)
○ Pattern	
  Canary
DevOps - Problématique
Docker - le conteneur intermodal
Docker - DevOps
○ Construction rapide, idempotent et automatique d’images
pouvant être partagées (Dockerfile, docker-registry …)
○ Séparation des rôles
○ Développeur : à la main sur le conteneur
○ Opérationnel : à la main sur le reste
○ gestion des logs
○ gestion des accès distants
○ configuration réseau
○ monitoring
○ …
Docker - PaaS
○ Portabilité
○ Provisioning rapide (Another Union File System)
○ Performance : les avantages d’une VM (isolation des
processus, interface réseau, …) sans les inconvénients
(processus exécutés au sein de l’hôte, pas d’émulation
de périphérique)
Docker - Dockerfile (Exemple)
image de base
variables d’environnement
copie de fichiers
exécution de commandes
points de montage
port(s) d’écoute
commande par défaut
Docker - Gestion des images
○ rechercher une image : sudo docker search debian
○ lister les images : sudo docker images
○ récupérer une image : sudo docker pull debian
○ exécuter un conteneur : sudo docker run [OPTIONS]
IMAGE[:TAG] [COMMAND] [ARGS…]
○ lister tous les conteneurs : sudo docker ps -a
○ récupérer l’id du conteneur lancé en dernier : sudo
docker ps -l
○ commit maj conteneur : sudo docker commit ID
[IMAGE[:TAG]]
○ inspecter un conteneur : sudo docker inspect ID
○ pousser une image : sudo docker push IMAGE
Ansible
○ Orchestration et automatisation des tâches
d’administration système
○ provisioning
○ déploiement d’application
Ansible - Pourquoi ?
○ Simplicité d’exécution : pas besoin de maître ni d’agent
sur les systèmes à administrer (ssh)
○ Mode Push
○ Simplicité d’apprentissage (YAML)
○ Performant : exécution des scripts en parallèle sur les
machines cible
○ Extensible : python
○ DRY : rôles
○ Idempotent : chaque tâche est exécutée en garantissant
que le système cible sur lequel elle s’applique se trouvera
dans l’état désiré post exécution
○ Sécurisé : ansible-vault
Ansible - Inventory
Inventory
ansible webservers -m ping
[webservers]
preprod.mon-service.org
[dbservers]
preprod.mon-service.org
[dockers:children]
webservers
dbservers
hosts/preprod :
[webservers]
prod.mon-service.org
[dbservers]
prod.mon-service.org
[dockers:children]
webservers
dbservers
hosts/prod :
Ansible - Variables
---
vhost: {servername: "{{servername}}", documentroot: "/www/{{servername}}", serveradmin:
stephane.manciot@ebiznext.com}
○ group_vars/webservers
○ host_vars/preprod.monservice.org
---
database_name: monservice
database_user: monuser
database_password: monpassword
Ansible - Module
Module
ansible webservers -m ping
Ansible - Playbook
○ Exécution de tâches spécifiques sur un ou plusieurs
groupes de machines
hosts/prod
[webservers]
prod.mon-service.org
site.yml
- hosts: webservers
vars:
packages: [p1, p2, p3, p4]
tasks:
- name: install packages
apt: pkg={{ item }} state=present
with_items: packages
groupe de
machines
documentation
module
tâches
ansible-playbook -i hosts/prod site.yml
Ansible - Playbook / Tâche
- name: install nginx
apt: pkg=nginx state=present
documentation
module arguments
Ansible - Playbook / Rôle
variables par défaut
tâches
template
tâches
partagées
rôle
Ansible - Playbook / Rôle
○ Exécution de rôles sur un groupe de machines
hosts/prod
[webservers]
prod.mon-service.org
site.yml
- hosts: webservers
vars_files:
- vars/dockers.yml
roles:
- nginx
- {role: docker, when: "'dockers' in group_names”}
groupe de
machines
rôles
condition d’exécution
Ansible - Playbook / Rôle / Handler
○ Exécution de tâche répétitive
handlers/main.yml
---
- name: restart nginx
service: name={{nginx_daemon}} state=restarted
tasks/vhost-debian.yml
- file:
src: /etc/nginx/sites-available/{{ vhost.servername }}
dest: /etc/nginx/sites-enabled/{{ vhost.servername }}
owner: root
group: root
state: link
notify:
- restart nginx
appel au handler
tâche
nom du handler
Ansible - Playbook / Rôle / Template
templates/vhosts.conf.j2
server {
listen 80;
server_name {{ vhost.servername }};
access_log on;
access_log /var/log/nginx/ccmu.ebiznext.com.access.log;
location /jahia/ {
proxy_pass http://{{jahia_host}}:{{hostvars[jahia_host].jahia_http_port}}/jahia/;
}
…
tasks/vhost-debian.yml
- name: Create a VirtualHost file
template:
src=vhosts.conf.j2
dest=/etc/nginx/sites-available/{{ vhost.servername }}
owner=root
group=root
mode=0644
notify:
- restart nginx
variable
module de templating
Ansible - Docker
Construire une image
Lancer un conteneur
emplacement des ressources
nom de l’image
nom de l’image + version
valorisation des points
de montage
Dev
Ops
Continuous delivery
platform
VCS
1
2
3
dev uat
prod
4
5
docker registry
6
Ansible - Vagrant
box
vm network
vm provider
provisioning
vagrant inventoryplaybook
Ansible - Vagrant
Questions ?
Plus d’informations sur blog.ebiznext.com et
github.com/ebiznext

Contenu connexe

Tendances

Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
Jaouad Assabbour
 
Ansible
Ansible Ansible
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOps
Cyrielle Orban
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
safwenbenfredj
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
Kiwi Backup
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XP
Youness Boukouchi
 
Virtualisation des serveurs et Sécurisation avec Docker
Virtualisation des serveurs et Sécurisation avec Docker  Virtualisation des serveurs et Sécurisation avec Docker
Virtualisation des serveurs et Sécurisation avec Docker
Wahbi Belhadj
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiques
Joseph Glorieux
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
Romain Chalumeau
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
Olivier Eeckhoutte
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
Sid Ahmed Benkraoua
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
Julien Maitrehenry
 
Journée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsJournée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOps
Publicis Sapient Engineering
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm
 
Mise en place d'une infrastructure basée sur OpenStack
Mise en place d'une infrastructure basée sur OpenStack Mise en place d'une infrastructure basée sur OpenStack
Mise en place d'une infrastructure basée sur OpenStack
Ahmed Slim
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
boulonvert
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm
 
Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum
ChaymaMghazli
 

Tendances (20)

Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
 
Ansible
Ansible Ansible
Ansible
 
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOps
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Méthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XPMéthodes agiles: Scrum et XP
Méthodes agiles: Scrum et XP
 
Virtualisation des serveurs et Sécurisation avec Docker
Virtualisation des serveurs et Sécurisation avec Docker  Virtualisation des serveurs et Sécurisation avec Docker
Virtualisation des serveurs et Sécurisation avec Docker
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiques
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
Journée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsJournée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOps
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
 
Mise en place d'une infrastructure basée sur OpenStack
Mise en place d'une infrastructure basée sur OpenStack Mise en place d'une infrastructure basée sur OpenStack
Mise en place d'une infrastructure basée sur OpenStack
 
Docker
DockerDocker
Docker
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum
 

Similaire à DevOps avec Ansible et Docker

Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
AnisSalhi3
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
TADx
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
AZUG FR
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
adri1s
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
sdenier
 
docker.pptx
docker.pptxdocker.pptx
docker.pptx
kohay75604
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
Nizar GARRACHE
 
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
Christophe Furmaniak
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
Julien Maitrehenry
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Hamida Rebai Trabelsi
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
Thibaut Marmin
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
qsdqsd4
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
Julien Maitrehenry
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
Web à Québec
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
amine17157
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
Christophe Villeneuve
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
Julien Wittouck
 

Similaire à DevOps avec Ansible et Docker (20)

Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
docker.pptx
docker.pptxdocker.pptx
docker.pptx
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
 
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
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 

Plus de Stephane Manciot

Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
Stephane Manciot
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Stephane Manciot
 
Docker / Ansible
Docker / AnsibleDocker / Ansible
Docker / Ansible
Stephane Manciot
 
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streamsPSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
Stephane Manciot
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
Stephane Manciot
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013Stephane Manciot
 

Plus de Stephane Manciot (6)

Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
Docker / Ansible
Docker / AnsibleDocker / Ansible
Docker / Ansible
 
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streamsPSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013
 

DevOps avec Ansible et Docker

  • 1. DevOps  avec  Ansible  et  Docker   le  20/03/2015   Stéphane  Manciot

  • 2. ○ Introduction  à  DevOps   ○ Packaging  avec  Docker   ○ Pourquoi  Ansible  ?   ○ Déploiement  et  provisioning  avec  Ansible Présentation
  • 4. DevOps - Bénéfices attendus (1/5) Des  cycles  de  déploiement  plus  courts   Les  devOps  jouent  un  rôle  clé  dans  la  réduc@on  du  temps  du  cycle  de   déploiement  des  logiciels,  passant  de  quelques  semaines  à  seulement  quelques   heures,  permeDant  une  plus  grande  flexibilité  quant  aux  nouvelles   fonc@onnalités  et  changements  à  apporter  au  produit  ini@al.  
  • 5. DevOps - Bénéfices attendus (2/5) Mise  à  disposiBon  de  nouveaux  services  plus  rapidement   Des  déploiements  fréquents  associés  à  des  délais  de  livraison  plus  rapides   permeDent    une  agilité  opéraBonnelle.  
  • 6. DevOps - Bénéfices attendus (3/5) Une  saBsfacBon  client  améliorée     Grâce  à  des  applica@ons  ciblées  et  de  qualité,  conformes  aux  retours  clients  end   to  end.  
  • 7. DevOps - Bénéfices attendus (4/5) Des  coûts  réduits   L’automa@sa@on  permet  aux  équipes  de  réaffecter  des  ressources  précieuses  à   des  tâches  à  plus  haute  valeur.
  • 8. DevOps - Bénéfices attendus (5/5) Conformité  et  Gouvernance   Automa@sa@on  du  tracking  et  repor@ng  end-­‐to-­‐end  sur  les  phases  de  livraison  /   déploiement  con@nu.  
  • 11. DevOps - Livraison continue
  • 12. DevOps - Déploiement continu (Nexus)(
  • 13. DevOps - Déploiement Zero Downtime (1/2) ○ Pattern  Blue/Green
  • 14. DevOps - Déploiement Zero Downtime (2/2) ○ Pattern  Canary
  • 16. Docker - le conteneur intermodal
  • 17. Docker - DevOps ○ Construction rapide, idempotent et automatique d’images pouvant être partagées (Dockerfile, docker-registry …) ○ Séparation des rôles ○ Développeur : à la main sur le conteneur ○ Opérationnel : à la main sur le reste ○ gestion des logs ○ gestion des accès distants ○ configuration réseau ○ monitoring ○ …
  • 18. Docker - PaaS ○ Portabilité ○ Provisioning rapide (Another Union File System) ○ Performance : les avantages d’une VM (isolation des processus, interface réseau, …) sans les inconvénients (processus exécutés au sein de l’hôte, pas d’émulation de périphérique)
  • 19. Docker - Dockerfile (Exemple) image de base variables d’environnement copie de fichiers exécution de commandes points de montage port(s) d’écoute commande par défaut
  • 20. Docker - Gestion des images ○ rechercher une image : sudo docker search debian ○ lister les images : sudo docker images ○ récupérer une image : sudo docker pull debian ○ exécuter un conteneur : sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARGS…] ○ lister tous les conteneurs : sudo docker ps -a ○ récupérer l’id du conteneur lancé en dernier : sudo docker ps -l ○ commit maj conteneur : sudo docker commit ID [IMAGE[:TAG]] ○ inspecter un conteneur : sudo docker inspect ID ○ pousser une image : sudo docker push IMAGE
  • 21. Ansible ○ Orchestration et automatisation des tâches d’administration système ○ provisioning ○ déploiement d’application
  • 22. Ansible - Pourquoi ? ○ Simplicité d’exécution : pas besoin de maître ni d’agent sur les systèmes à administrer (ssh) ○ Mode Push ○ Simplicité d’apprentissage (YAML) ○ Performant : exécution des scripts en parallèle sur les machines cible ○ Extensible : python ○ DRY : rôles ○ Idempotent : chaque tâche est exécutée en garantissant que le système cible sur lequel elle s’applique se trouvera dans l’état désiré post exécution ○ Sécurisé : ansible-vault
  • 23. Ansible - Inventory Inventory ansible webservers -m ping [webservers] preprod.mon-service.org [dbservers] preprod.mon-service.org [dockers:children] webservers dbservers hosts/preprod : [webservers] prod.mon-service.org [dbservers] prod.mon-service.org [dockers:children] webservers dbservers hosts/prod :
  • 24. Ansible - Variables --- vhost: {servername: "{{servername}}", documentroot: "/www/{{servername}}", serveradmin: stephane.manciot@ebiznext.com} ○ group_vars/webservers ○ host_vars/preprod.monservice.org --- database_name: monservice database_user: monuser database_password: monpassword
  • 25. Ansible - Module Module ansible webservers -m ping
  • 26. Ansible - Playbook ○ Exécution de tâches spécifiques sur un ou plusieurs groupes de machines hosts/prod [webservers] prod.mon-service.org site.yml - hosts: webservers vars: packages: [p1, p2, p3, p4] tasks: - name: install packages apt: pkg={{ item }} state=present with_items: packages groupe de machines documentation module tâches ansible-playbook -i hosts/prod site.yml
  • 27. Ansible - Playbook / Tâche - name: install nginx apt: pkg=nginx state=present documentation module arguments
  • 28. Ansible - Playbook / Rôle variables par défaut tâches template tâches partagées rôle
  • 29. Ansible - Playbook / Rôle ○ Exécution de rôles sur un groupe de machines hosts/prod [webservers] prod.mon-service.org site.yml - hosts: webservers vars_files: - vars/dockers.yml roles: - nginx - {role: docker, when: "'dockers' in group_names”} groupe de machines rôles condition d’exécution
  • 30. Ansible - Playbook / Rôle / Handler ○ Exécution de tâche répétitive handlers/main.yml --- - name: restart nginx service: name={{nginx_daemon}} state=restarted tasks/vhost-debian.yml - file: src: /etc/nginx/sites-available/{{ vhost.servername }} dest: /etc/nginx/sites-enabled/{{ vhost.servername }} owner: root group: root state: link notify: - restart nginx appel au handler tâche nom du handler
  • 31. Ansible - Playbook / Rôle / Template templates/vhosts.conf.j2 server { listen 80; server_name {{ vhost.servername }}; access_log on; access_log /var/log/nginx/ccmu.ebiznext.com.access.log; location /jahia/ { proxy_pass http://{{jahia_host}}:{{hostvars[jahia_host].jahia_http_port}}/jahia/; } … tasks/vhost-debian.yml - name: Create a VirtualHost file template: src=vhosts.conf.j2 dest=/etc/nginx/sites-available/{{ vhost.servername }} owner=root group=root mode=0644 notify: - restart nginx variable module de templating
  • 32. Ansible - Docker Construire une image Lancer un conteneur emplacement des ressources nom de l’image nom de l’image + version valorisation des points de montage
  • 34. Ansible - Vagrant box vm network vm provider provisioning vagrant inventoryplaybook
  • 37. Plus d’informations sur blog.ebiznext.com et github.com/ebiznext