Codons notre Infrastructure
Qui suis-je
● Oswald De Riemaecker

● CEO / Co-Founder de Continuous S.A.
o Agile Delivery
o Editeur PaaS continuousphp

●...
Culture Agile
● Amélioration au niveau de l’équipe de développement
o Meilleure collaboration
o Amélioration continue
o To...
Culture DevOps
● Agilité + Opération

● 3 piliers principaux:
o Infrastructure as Code (IaC)
o Livraisons/Déploiement Cont...
Infrastructure as Code
● Coder les ressources des machines de l'infrastructure

● Coder et versioner l’infrastructure

● T...
Organisation
Mon Infrastructure Votre Infrastructure Leur Infrastructure
Locale
Environnements
Development Testing Staging Production
Roles
Load Balancer
Serveurs Application
Serveurs Indexes
Serveurs de base de données
Ressources
● Une ressource représente une partie du système et sa configuration

Apache MySql Solr
Complexité
● Maintenir une infrastructure est complexe
● Elle vit et évolue

o Ajouts de ressources
o Mise à jour ressourc...
Outils
● Répondre à cette problématique
Chef
● Chef est un outil open-source
● Gestion l’automatisation de systèmes et d’infrastructure.
● Chef est basé sur Ruby
Chef
● Les nodes représentes les serveurs dans votre infrastructure

● Les nodes peuvent être:
o serveurs physique
o serve...
Chef Client / Serveur
Node
NodeNodeNode
Node Node
Chef
Serveur
chef-client
Ressources
Cookbooks Chef
● Les cookbooks contiennent les artefacts de nos ressources
Recipes
Templates
Files
Attributs Etats des res...
Cookbooks Chef
● Les cookbooks contiennent les artefacts de nos ressources
Recipes
Templates
Files
Attributs Etats des res...
Cookbooks Chef
● Les cookbooks contiennent les artefacts de nos ressources
Recipes
Templates
Files
Attributs Etats des res...
Cookbooks Chef
● Les cookbooks contiennent les artefacts de nos ressources
Recipes
Templates
Files
Attributs Etats des res...
L’approvisionnement
(provisioning)
Approvisionnement de Role


Node
Role: Base de
données
Chef
Serveur
Hey, je suis du rôle “Base de données”
et mon environn...
Exemple d’infrastructure
● Serveur Web - Apache 2.4/PHP-5.5
● Serveur de base de donnée - MySql
● Serveur d’index - Solr W...
La communauté Chef
Analyse du Cookbook Apache
● Support plusieurs plates-formes
● Support version d’apache
● Attributs:
o dir, docroot_dir
o ...
Support et dépendances Cookbook
Recipes
Templates
Attributs
Files
Metadata
Dépendance(s)
Les attributs
Recipes
Templates
Attributs
Files
Metadata
Les recettes
Recipes
Templates
Attributs
Files
Metadata
cd recipes
ls -l
default.rb
iptables.rb
logrotate.rb
mpm_prefork.r...
Les templates
Recipes
Templates
Attributs
Files
Metadata
Les fichiers
Recipes
Templates
Attributs
Files
Metadata
cd files/default/
ls -l
apache2_module_conf_generate.pl
Codons nos cookbooks
Rôle: Serveur Web / Env: Production
Apache / php-5.5
Recipes
Templates
Attributs
Files
Metadata
Apache2
Recipes
Templates
...
Chef Développement Kit
● Installation de chef-dk

o Berkself
o Knife
o ChefSpec
o Test-Kitchen
o Serverspec
o Foodcritic
● knife cookbook create mon_org-webserver
Création de notre cookbook webserver
Ajout des dépendances
Dépendance(s)
● berks init
Initialisation avec Berkshelf
● berks install
Téléchargement des dépendances
● vi attributes/defaults.rb
Les attributs
Les recettes
Testons notre cookbook
● kitchen list
Testons notre cookbook
● kitchen verify default-ubuntu-1404
● knife cookbook upload mon_org-webserver
Versioner et uploader nos cookbook
Répétons l’exercice pour les roles base
de donnée et d’indexes
Approvisionnement de notre Sandbox
Development
Rôle: Sandbox / Environnement: Dev
mon_org-webserver
mon_org-index
mon_org-database
Composer NodeJs
Recipes
Templates
Attr...
Création de notre cookbook
● knife cookbook create mon_org-sanbox
Ajout des dépendances
Dépendances
Téléchargement des dépendances
Les recettes
● vi recipes/default.rb
● vi attributes/default.rb
Les attributs
Attributs
Testons notre cookbook
● Cookbooks par rôle de l’infrastructure
● Cookbook spécifique à l’environment de développement
o utilise les cookbooks de...
Créons nos environnements
Locale
Créons notre environnement de development
Development
Vagrant
● Créer et configurer des environnements de développement

● Providers (Drivers)
o Virtualbox/VMWare
o Docker
o In...
Vagrantfile
Vagrant up
Infrastructure Immuable
Infrastructure Immuable
● Avantages:
o Economie du temps perdu lors de l’approvisionnement
o Plus de maintenance de serveu...
Packer
● Packer

o Builders (Amazon AMI, Microsoft Azure, DigitalOcean, Docker,
Google Compute Engine, …)
o Provisioners (...
Packer Config
Builders
Packer Config
Provisioners
● packer build packer.json
Créons nos image
Créons nos image
Répétons l’exercice pour le rôle index
Créons notre environnement de Production/Staging
AWS CloudFormation
● Manière simple de créer et gérer un regroupement de ressources AWS

● CloudFormation s’occupe des dép...
VPC
Subnet Privé
Subnet Public
JSON
Autoscale
Web Web Web
Autoscale
Index Index Index
Structure d’un CF
Structure d’un CF
Structure d’un CF
Structure d’un CF
Structure d’un CF
Structure d’un CF
Créons notre pile web serveur
Créons notre pile web serveur
Créons notre pile web serveur
Créons notre pile web serveur
● Approvisionnement de nos machines
● Infrastructure Immuable
o Images statiques
● Utilisation Images dans Cloud Formation...
Orchestration de l’infrastructure
Testing
Development
Vagrant
Feature branch
develop branch
revision branch
Staging
Produc...
Questions ?
Thank you
oswald_odr
oswald@continuousphp.com
Prochain SlideShare
Chargement dans…5
×

Codons notre infrastructure

388 vues

Publié le

Conférence PHP Tour Luxembourg 2015.

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
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
388
Sur SlideShare
0
Issues des intégrations
0
Intégrations
23
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
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

×