DevOps avec Ansible et Docker

11 727 vues

Publié le

DevOps avec Ansible et Docker

Publié dans : Technologie
1 commentaire
17 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
11 727
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5 960
Actions
Partages
0
Téléchargements
324
Commentaires
1
J’aime
17
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×