Codons notre infrastructure

477 vues

Publié le

Nous verrons comment construire un environnement de développement et de production à la demande en utilisant Amazon Web Service, Chef, Vagrant et Docker.

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
477
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
16
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Codons notre infrastructure

  1. 1. Codons notre Infrastructure
  2. 2. Qui suis-je ● Oswald De Riemaecker
 ● CEO / Co-Founder de Continuous S.A. o Agile Delivery o Editeur PaaS continuousphp
 ● Agiliste, Architecte Cloud
  3. 3. Culture Agile ● Amélioration au niveau de l’équipe de développement o Meilleure collaboration o Amélioration continue o Toutes les compétences/Pas de silos o Framework de tests et intégration continue
 ● Amélioration au niveau gestion de produit Agile o Développement itératifs o Découpage en fonctionnalités o Maximisation de la valeur o MVP/Lean Startup
  4. 4. Culture DevOps ● Agilité + Opération
 ● 3 piliers principaux: o Infrastructure as Code (IaC) o Livraisons/Déploiement Continue o Culture de la coopération
  5. 5. Infrastructure as Code ● Coder les ressources des machines de l'infrastructure
 ● Coder et versioner l’infrastructure
 ● Tester les ressources et l’infrastructure
 ● Reconstruire les machines et l’infrastructure à la demande
  6. 6. Organisation Mon Infrastructure Votre Infrastructure Leur Infrastructure
  7. 7. Locale Environnements Development Testing Staging Production
  8. 8. Roles Load Balancer Serveurs Application Serveurs Indexes Serveurs de base de données
  9. 9. Ressources ● Une ressource représente une partie du système et sa configuration
 Apache MySql Solr
  10. 10. Complexité ● Maintenir une infrastructure est complexe ● Elle vit et évolue
 o Ajouts de ressources o Mise à jour ressources o Patches de Sécurité o Changer/Mise à jour d’OS o ...
  11. 11. Outils ● Répondre à cette problématique
  12. 12. Chef ● Chef est un outil open-source ● Gestion l’automatisation de systèmes et d’infrastructure. ● Chef est basé sur Ruby
  13. 13. Chef ● Les nodes représentes les serveurs dans votre infrastructure
 ● Les nodes peuvent être: o serveurs physique o serveurs virtuel o instances dans le cloud
 ● Chaque nodes appartient à: o une organisation o un environnement o a un ou plusieurs rôles Node NodeNodeNode Node Node
  14. 14. Chef Client / Serveur Node NodeNodeNode Node Node Chef Serveur chef-client Ressources
  15. 15. Cookbooks Chef ● Les cookbooks contiennent les artefacts de nos ressources Recipes Templates Files Attributs Etats des ressources
  16. 16. Cookbooks Chef ● Les cookbooks contiennent les artefacts de nos ressources Recipes Templates Files Attributs Etats des ressources Installation/configuration des ressources
  17. 17. Cookbooks Chef ● Les cookbooks contiennent les artefacts de nos ressources Recipes Templates Files Attributs Etats des ressources Installation/configuration des ressources Templates de configuration
  18. 18. Cookbooks Chef ● Les cookbooks contiennent les artefacts de nos ressources Recipes Templates Files Attributs Etats des ressources Installation/configuration des ressources Templates de configuration Fichiers de configuration/script
  19. 19. L’approvisionnement (provisioning)
  20. 20. Approvisionnement de Role 
 Node Role: Base de données Chef Serveur Hey, je suis du rôle “Base de données” et mon environnement “Development” Chef clientRecipes Templates Attributs Files Cookbook Recipes Templates Attributs Files Cookbook
  21. 21. Exemple d’infrastructure ● Serveur Web - Apache 2.4/PHP-5.5 ● Serveur de base de donnée - MySql ● Serveur d’index - Solr Web Serveur Solr mysql
  22. 22. La communauté Chef
  23. 23. Analyse du Cookbook Apache ● Support plusieurs plates-formes ● Support version d’apache ● Attributs: o dir, docroot_dir o log_dir, error_log, access_log o default_modules o version o ...
  24. 24. Support et dépendances Cookbook Recipes Templates Attributs Files Metadata Dépendance(s)
  25. 25. Les attributs Recipes Templates Attributs Files Metadata
  26. 26. Les recettes Recipes Templates Attributs Files Metadata cd recipes ls -l default.rb iptables.rb logrotate.rb mpm_prefork.rb mpm_worker.rb mod_php5.rb mod_*.rb
  27. 27. Les templates Recipes Templates Attributs Files Metadata
  28. 28. Les fichiers Recipes Templates Attributs Files Metadata cd files/default/ ls -l apache2_module_conf_generate.pl
  29. 29. Codons nos cookbooks
  30. 30. Rôle: Serveur Web / Env: Production Apache / php-5.5 Recipes Templates Attributs Files Metadata Apache2 Recipes Templates Attributs Files Metadata iptables Recipes Templates Attributs Files Metadata logrotate PRODUCTION: Attributs de remplacement Node Rôle: WebServer R O L E
  31. 31. Chef Développement Kit ● Installation de chef-dk
 o Berkself o Knife o ChefSpec o Test-Kitchen o Serverspec o Foodcritic
  32. 32. ● knife cookbook create mon_org-webserver Création de notre cookbook webserver
  33. 33. Ajout des dépendances Dépendance(s)
  34. 34. ● berks init Initialisation avec Berkshelf
  35. 35. ● berks install Téléchargement des dépendances
  36. 36. ● vi attributes/defaults.rb Les attributs
  37. 37. Les recettes
  38. 38. Testons notre cookbook ● kitchen list
  39. 39. Testons notre cookbook ● kitchen verify default-ubuntu-1404
  40. 40. ● knife cookbook upload mon_org-webserver Versioner et uploader nos cookbook
  41. 41. Répétons l’exercice pour les roles base de donnée et d’indexes
  42. 42. Approvisionnement de notre Sandbox Development
  43. 43. Rôle: Sandbox / Environnement: Dev mon_org-webserver mon_org-index mon_org-database Composer NodeJs Recipes Templates Attributs Files Metadata Recipes Templates Attributs Files Metadata Recipes Templates Attributs Files Metadata Recipes Templates Attributs Files Metadata Recipes Templates Attributs Files Metadata mon_org-webserver mon_org-Index mon_org-database composer nodejs DEVELOPPMENT: Attributs de remplacement Node Rôle: Sandbox R O L E
  44. 44. Création de notre cookbook ● knife cookbook create mon_org-sanbox
  45. 45. Ajout des dépendances Dépendances
  46. 46. Téléchargement des dépendances
  47. 47. Les recettes ● vi recipes/default.rb
  48. 48. ● vi attributes/default.rb Les attributs Attributs
  49. 49. Testons notre cookbook
  50. 50. ● Cookbooks par rôle de l’infrastructure ● Cookbook spécifique à l’environment de développement o utilise les cookbooks des rôles de l’infrastructure
 ● Reproduction fiable de l’approvisionnement des rôles de l’infrastructure:
 o Codé o Versionné o Testé o Déployé Approvisionnement Résumé
  51. 51. Créons nos environnements
  52. 52. Locale Créons notre environnement de development Development
  53. 53. Vagrant ● Créer et configurer des environnements de développement
 ● Providers (Drivers) o Virtualbox/VMWare o Docker o Instance EC2
 ● Approvisionnement avec: o Chef Client/Solo o Docker o Puppet Agent o …
  54. 54. Vagrantfile
  55. 55. Vagrant up
  56. 56. Infrastructure Immuable
  57. 57. Infrastructure Immuable ● Avantages: o Economie du temps perdu lors de l’approvisionnement o Plus de maintenance de serveurs => Remplacement o Image machine statique pré-construites et testées o Retour aisé à une version précédente V1 V2 V3 Data
  58. 58. Packer ● Packer
 o Builders (Amazon AMI, Microsoft Azure, DigitalOcean, Docker, Google Compute Engine, …) o Provisioners (Shell script, Chef client, Ansible, Puppet, Salt, …) o Post-processor (Docker-push, Vagrant, Atlas, …)
  59. 59. Packer Config Builders
  60. 60. Packer Config Provisioners
  61. 61. ● packer build packer.json Créons nos image
  62. 62. Créons nos image
  63. 63. Répétons l’exercice pour le rôle index
  64. 64. Créons notre environnement de Production/Staging
  65. 65. AWS CloudFormation ● Manière simple de créer et gérer un regroupement de ressources AWS
 ● CloudFormation s’occupe des dépendances
 ● Une fois les ressources déployées, vous pouvez les modifier et les mettre à jour de manière prévisible et contrôlée
 ● AWS CloudFormation prend en charge les ressources suivants :
 o Auto Scaling/Elastic Load Balancing o VPC o EC2 o RDS o IAM o …
  66. 66. VPC Subnet Privé Subnet Public JSON Autoscale Web Web Web Autoscale Index Index Index
  67. 67. Structure d’un CF
  68. 68. Structure d’un CF
  69. 69. Structure d’un CF
  70. 70. Structure d’un CF
  71. 71. Structure d’un CF
  72. 72. Structure d’un CF
  73. 73. Créons notre pile web serveur
  74. 74. Créons notre pile web serveur
  75. 75. Créons notre pile web serveur
  76. 76. Créons notre pile web serveur
  77. 77. ● Approvisionnement de nos machines ● Infrastructure Immuable o Images statiques ● Utilisation Images dans Cloud Formation AWS
 ● Paramètre d’environnement Cloud Formation
 ● Nous pouvons maintenant utiliser nos artefacts pour construire nos différents environments Infrastructure Résumé
  78. 78. Orchestration de l’infrastructure Testing Development Vagrant Feature branch develop branch revision branch Staging Production CI/CD prepare test package prepare test package prepare test package
  79. 79. Questions ?
  80. 80. Thank you oswald_odr oswald@continuousphp.com

×