SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche DevopsRomain Chalumeau
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
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 informatiquesdenier
 
Introduction à OpenStack
Introduction à OpenStackIntroduction à OpenStack
Introduction à OpenStackAnDaolVras
 
Openstack pour les nuls
Openstack pour les nulsOpenstack pour les nuls
Openstack pour les nulsChris Cowley
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetesJulien Maitrehenry
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
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 AdministrationAlphorm
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsKokou Gaglo
 
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOpsCyrielle Orban
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
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
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm
 

Was ist angesagt? (20)

DEVOPS
DEVOPSDEVOPS
DEVOPS
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Presentation-DEVOPS-par-GDG
Presentation-DEVOPS-par-GDGPresentation-DEVOPS-par-GDG
Presentation-DEVOPS-par-GDG
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
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
 
Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
 
Introduction à OpenStack
Introduction à OpenStackIntroduction à OpenStack
Introduction à OpenStack
 
Openstack pour les nuls
Openstack pour les nulsOpenstack pour les nuls
Openstack pour les nuls
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
Intro to docker
Intro to dockerIntro to docker
Intro to docker
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
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
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOps
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Jenkins
JenkinsJenkins
Jenkins
 
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 ?
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124
 

Ähnlich wie 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.pptxAnisSalhi3
 
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 bassinLudovic 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 bassinOxalide
 
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 DerueAZUG 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
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerNizar 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-nantesChristophe Furmaniak
 
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.pdfHamida Rebai Trabelsi
 
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.pdfqsdqsd4
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien 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 printempsWeb à Québec
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugamine17157
 
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'tsJulien Wittouck
 
Dev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesDev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesSOAT
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 

Ähnlich wie 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
 
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.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
 
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
 
What is Docker
What is Docker What is Docker
What is 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
 
Dev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuagesDev cloud java : la tête dans les nuages
Dev cloud java : la tête dans les nuages
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec Docker
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 

Mehr von 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 oeuvreStephane 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 2015Stephane 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-streamsStephane Manciot
 
De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013De Maven à SBT ScalaIO 2013
De Maven à SBT ScalaIO 2013Stephane Manciot
 

Mehr von 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