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.
DevOps	
  avec	
  Ansible	
  et	
  Docker	
  
le	
  20/03/2015	
  
Stéphane	
  Manciot

○ Introduction	
  à	
  DevOps	
  
○ Packaging	
  avec	
  Docker	
  
○ Pourquoi	
  Ansible	
  ?	
  
○ Déploiement	
  et	
  ...
DevOps
DevOps - Bénéfices attendus (1/5)
Des	
  cycles	
  de	
  déploiement	
  plus	
  courts	
  
Les	
  devOps	
  jouent	
  un	
...
DevOps - Bénéfices attendus (2/5)
Mise	
  à	
  disposiBon	
  de	
  nouveaux	
  services	
  plus	
  rapidement	
  
Des	
  d...
DevOps - Bénéfices attendus (3/5)
Une	
  saBsfacBon	
  client	
  améliorée	
  	
  
Grâce	
  à	
  des	
  applica@ons	
  cib...
DevOps - Bénéfices attendus (4/5)
Des	
  coûts	
  réduits	
  
L’automa@sa@on	
  permet	
  aux	
  équipes	
  de	
  réaffecte...
DevOps - Bénéfices attendus (5/5)
Conformité	
  et	
  Gouvernance	
  
Automa@sa@on	
  du	
  tracking	
  et	
  repor@ng	
  ...
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-regis...
Docker - PaaS
○ Portabilité
○ Provisioning rapide (Another Union File System)
○ Performance : les avantages d’une VM (isol...
Docker - Dockerfile (Exemple)
image de base
variables d’environnement
copie de fichiers
exécution de commandes
points de m...
Docker - Gestion des images
○ rechercher une image : sudo docker search debian
○ lister les images : sudo docker images
○ ...
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)
○ Mod...
Ansible - Inventory
Inventory
ansible webservers -m ping
[webservers]
preprod.mon-service.org
[dbservers]
preprod.mon-serv...
Ansible - Variables
---
vhost: {servername: "{{servername}}", documentroot: "/www/{{servername}}", serveradmin:
stephane.m...
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....
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...
Ansible - Playbook / Rôle / Handler
○ Exécution de tâche répétitive
handlers/main.yml
---
- name: restart nginx
service: n...
Ansible - Playbook / Rôle / Template
templates/vhosts.conf.j2
server {
listen 80;
server_name {{ vhost.servername }};
acce...
Ansible - Docker
Construire une image
Lancer un conteneur
emplacement des ressources
nom de l’image
nom de l’image + versi...
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
Upcoming SlideShare
Loading in …5
×

DevOps avec Ansible et Docker

15,494 views

Published on

DevOps avec Ansible et Docker

Published in: Technology

DevOps avec Ansible et Docker

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

  2. 2. ○ Introduction  à  DevOps   ○ Packaging  avec  Docker   ○ Pourquoi  Ansible  ?   ○ Déploiement  et  provisioning  avec  Ansible Présentation
  3. 3. DevOps
  4. 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. 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. 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. 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. 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.  
  9. 9. DevOps - Démarche agile
  10. 10. DevOps - Intégration continue
  11. 11. DevOps - Livraison continue
  12. 12. DevOps - Déploiement continu (Nexus)(
  13. 13. DevOps - Déploiement Zero Downtime (1/2) ○ Pattern  Blue/Green
  14. 14. DevOps - Déploiement Zero Downtime (2/2) ○ Pattern  Canary
  15. 15. DevOps - Problématique
  16. 16. Docker - le conteneur intermodal
  17. 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. 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. 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. 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. 21. Ansible ○ Orchestration et automatisation des tâches d’administration système ○ provisioning ○ déploiement d’application
  22. 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. 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. 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. 25. Ansible - Module Module ansible webservers -m ping
  26. 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. 27. Ansible - Playbook / Tâche - name: install nginx apt: pkg=nginx state=present documentation module arguments
  28. 28. Ansible - Playbook / Rôle variables par défaut tâches template tâches partagées rôle
  29. 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. 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. 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. 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
  33. 33. Dev Ops Continuous delivery platform VCS 1 2 3 dev uat prod 4 5 docker registry 6
  34. 34. Ansible - Vagrant box vm network vm provider provisioning vagrant inventoryplaybook
  35. 35. Ansible - Vagrant
  36. 36. Questions ?
  37. 37. Plus d’informations sur blog.ebiznext.com et github.com/ebiznext

×