SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Infrastructure as code Drupal
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr
Meetup Programmez #24 – le 5 Avril 2022
Atos open source - afup – lemug.fr – mariadb – drupal – mozilla - firefox – lemugfr - sumo – webextensions – VR – AR – XR - Cause commune 93.1 FM - TechSpeaker - Lizard - eyrolles – editions eni – programmez – linux pratique – webriver – elephpant - CommonVoice – Sécurité -
Cybersécurité
Christophe Villeneuve
●
Consultant Open Source
●
Dresseur animaux
@hellosct1 – Programmez #24 -
Aujourd’hui
●
IaC.. Qu’est ce ?
●
IaC et Drupal
●
Iac Drupal Contenu
●
IaC.. Qu’est ce ?
●
IaC et Drupal
●
Iac Drupal Contenu
@hellosct1 – Programmez #24 -
IaC : Qu’est ce ? (1/2)
●
IaC = Infrastructure as code (IaC)
– Infrastructure programmable (en FR)
●
Ensemble de mécanismes permettant de gérer
– Par des fichiers descripteurs
– Des scripts (code informatique)
– Une infrastructure (informatique) virtuelle
●
S'inscrit dans la mouvance plus générale du DevOps
– Objectif d'unifier
le développement logiciel et l'administration système
@hellosct1 – Programmez #24 -
IaC : Qu’est ce ? (2/2)
●
Constitue une réponse aux besoins des entreprises
– En termes de mise à l'échelle des applications axée
●
Automatisation et simplification
de l'infrastructure de projets informatiques
●
Permettre au(x) développeur(s)
– de gérer l'infrastructure avec du code
– souvent avec des fichiers de configurations ou de scripts
@hellosct1 – Programmez #24 -
Couche basse
●
Couche basse du système d'information
– comme le serveur, le réseau ou le stockage
●
d'écrire avec du code la configuration voulu avec du code
●
Les outils IaC vont automatisés
– provisionning
– configuration
– deploiement
@hellosct1 – Programmez #24 -
Outils IaC
@hellosct1 – Programmez #24 -
Outils ?
●
Instancé 1 ou plusieurs VM
●
Les configurer
●
Installer
– une Base de données
– un serveur web
– un serveur d'application
●
Les isolés au niveau réseau
●
Réaliser des comptes administrateurs, utilisateurs, de services
●
Mettre en place un load balancer pour la répartition de charge
●
Pousser des certificats...
@hellosct1 – Programmez #24 -
Exemple : Ansible
- hosts: localhost
gather_facts: False
vars_files:
- credentials.yml
tasks:
- name: Provision EC2 Instance
ec2:
aws_access_key: "{{aws_access_key}}"
aws_secret_key: "{{aws_secret_key}}"
key_name: web_server_test_key
group: test
instance_type: t3.small
image: "ami-0123456"
wait: true
count: 1
region: us-west-1
instance_tags:
Name: Web_Server
register: ec2
@hellosct1 – Programmez #24 -
Mais… Pour faire simple
●
Déployer et détruire
– à la volé les ressources dans le cloud
●
Redéployer
– cette même infrastructure suivant le besoin
●
Fournir
– des environnements stables à grandes échelles
●
Gagner
– en disponibilité et flexibilité
@hellosct1 – Programmez #24 -
Plusieurs types d’IaC
●
Impératif
– Ressources (instances, réseaux, etc.) sont déclarées
●
par une liste formelles d'instructions,
●
suivies dans un ordre précis,
●
pour obtenir le résultat attendu.
●
Fonctionnel
– Ressources sont déclarées de manière
●
que la configuration finale de celles-ci soit celles attendues.
●
L'ordre en lui-même n'a pas d'importance majeure.
●
Basé sur l'environnement
– Ressources sont déclarées de manière que
●
leur configuration finale et leur état
– soit en cohérence avec le reste de l'environnement qui l'entoure.
●
Il s'agit de la version la plus élaborée et celle vers laquelle
@hellosct1 – Programmez #24 -
En résumé
●
Infrastructure as code :
– Définissez toute votre infrastructure dans des fichiers,
jusqu'au niveau de l'interface réseau.
– Déploiement continu
●
Faire des déploiements de production une corvée.
Petits, fréquents, automatiques.
●
IaC.. Qu’est ce ?
●
IaC et Drupal
●
Iac Drupal Contenu
@hellosct1 – Programmez #24 -
Drupal : Qu’est ce...
●
CMS/F Content Management System / Framework
– Administrer vos contenus sans toucher au code 
●
Open Source
– Gratuit, +30000 développeurs, +25000 modules, millions de pages de documentation
●
Flexible et modulaire
– Utilisation des modules de contribution et développement à façon
●
Moderne
– multilingue, responsive, RGAA, rapide, webservice, headless, caches
●
Performant
– Coeur léger, robuste, permet des développements poussés sans l’effet usine à gaz
– Cache natif pouvant être couplé à des solutions externes, Varnish, APC, Memcached,
MongoDB
●
Abstraction
– Approche entités plutôt que pages (types de contenu, taxonomie)
●
API
@hellosct1 – Programmez #24 -
Drupal : Roadmap
@hellosct1 – Programmez #24 -
Drupal : Roadmap Dépendances
@hellosct1 – Programmez #24 -
TOP 50 des sites français
@hellosct1 – Programmez #24 -
Déploiement Workflow : Principe
@hellosct1 – Programmez #24 -
Workflow : Déroulement
name: Build, push, and verify image
run: |
echo ${{ secrets.PACKAGES_TOKEN }} | docker login docker.pkg.github.com -u juampynr --password-stdin
docker build --tag docker.pkg.github.com/juampynr/drupal8-do/app:${GITHUB_SHA} .
docker push docker.pkg.github.com/juampynr/drupal8-do/app:${GITHUB_SHA}
docker pull docker.pkg.github.com/juampynr/drupal8-do/app:${GITHUB_SHA}
@hellosct1 – Programmez #24 -
Workflow complet
@hellosct1 – Programmez #24 -
Automatiser les tâches Drupal
●
Automatiser toutes ces tâches
– Flux de travail du déploiement de Drupal
– Appliquer les techniques de codage éprouvées à la façon dont
vous configurez et organisez votre infrastructure ?
●
Maintenant, pensez à la commodité de disposer d'un outil
qui transformerait les API en fichiers de configuration
déclaratifs que votre équipe pourrait facilement utiliser :
– Partager
– Modifier
– Version
– Revoir
@hellosct1 – Programmez #24 -
Automatiser les tâches dans votre flux de travail
●
Contraintes :
– "jongler" avec plusieurs environnements
– Synchroniser les changements de code ou de configuration
●
Obligations
– Appliquer une modification spécifique sur l'environnement
de développement
– l'exporter vers un fichier à stocker dans le contrôle de version
– Valider les changements de code/configuration dans le
contrôle de version
– Synchroniser ce fichier avec le serveur live
@hellosct1 – Programmez #24 -
Implémentation de l'IaC dans Drupal
●
Automatiser votre processus de déploiement
- Comment tiré parti de
l'infrastructure as code
- pour automatiser mon flux de
déploiement Drupal ?
@hellosct1 – Programmez #24 -
Déploiement (playbooks ansible)
●
Les étapes :
– Mise à jour de la base de données à l'aide de Drush
– Mise en place du système.
●
La liste des tâches de "mise en place" comprendrait :
●
la création d'un répertoire pour la persistance des fichiers de la base de
données
– pour stocker les sauvegardes des fichiers
– pour le stockage des sauvegardes de la base de données
●
Alors que (certaines) des tâches axées sur la mise en place et le déploiement
seraient les suivantes :
– cloner le code correct
– importation de la configuration à partir de fichiers
– vider le cache
– création du fichier .env
@hellosct1 – Programmez #24 -
Playbook ansible (1/2)
---
- hosts: haproxy
become: true
roles:
- role: maintenance_haproxy
vars:
maintenance: true
Site1 : true
Site2 : false
- hosts: drupal
become: true
roles:
- role: install_site1
- hosts: varnish
become: true
roles:
- role: reload_varnish
- hosts: drupal
become: true
roles:
- remove_livraison
- hosts: haproxy
become: true
roles:
- role: maintenance_haproxy
vars:
maintenance: false
site1: true
site2: false
@hellosct1 – Programmez #24 -
Lancer le script
ansible-playbook -i inventory/$1 install_site1.yml --extra-vars version=$2
@hellosct1 – Programmez #24 -
En résumé
●
Automatisation consiste à documenter et à disposer d'un script pour chaque
étape
1 - La configuration du système, comme la création de répertoires de
sauvegarde de la base de données.
2 - Exécuter les mises à jour de la base de données via Drush
●
Il est important de sécuriser vos serveurs avant le déploiement de
l'application.
●
Ansible aide à stocker les informations sensibles de manière chiffrée,
– Les identifiants à la base de données
– la paire de clés SSH
– Informations d'identification de l'utilisateur du serveur.
●
Cette configuration vous permet de construire facilement
– des répliques de production ou un environnement de non-production.
●
IaC.. Qu’est ce ?
●
IaC et Drupal
●
Iac Drupal Contenu
@hellosct1 – Programmez #24 -
Drupal contenu (1/
●
Type de contenu
@hellosct1 – Programmez #24 -
Drupal contenu (2/
●
Contenu
@hellosct1 – Programmez #24 -
Drupal contenu (3/
●
Vue (views)
@hellosct1 – Programmez #24 -
Déployé automatiquement !!!
●
Type de contenu
●
View
●
Entity
●
…
●
BDD : Behat
Drush
Module
- Deploy
- Deploy Content
-
@hellosct1 – Programmez #24 -
Modules !!!
●
Deploy
– Contenu
– D8 & (partiellement D9)
●
https://www.drupal.org/project/deploy
●
Content Sync Module
– Contenu
– D8 & D9
●
https://www.drupal.org/project/content_sync
●
Entity share
– D8 & D9
– Répond à une certaine attente (type de champs)
– https://www.drupal.org/project/entity_share
@hellosct1 – Programmez #24 -
Mobule : Default Content Deploy
https://www.drupal.org/project/default_content_deploy
@hellosct1 – Programmez #24 -
Utilisations (1/4)
●
default-content-deploy:export (dcde)
– Exporte une seule entité ou un groupe d'entités
●
default-content-deploy:export-with-references (dcder)
– Exporte une seule entité avec des références
●
default-content-deploy:export-site (dcdes)
– Exporte le contenu d'un site entier
@hellosct1 – Programmez #24 -
Utilisations (2/4)
●
default-content-deploy:export-aliases (dcdea)
– Exporte les alias d'url du site
●
default-content-deploy:import (dcdi)
– Importe tout le contenu défini dans un répertoire de contenu
●
default-content-deploy:import-aliases (dcdia)
– Importe les alias d'url de site
@hellosct1 – Programmez #24 -
Utilisations (3/4)
●
default-content-deploy:uuid-info (dcd-uuid-info)
– Obtenir le site système actuel, les UUIDs des administrateurs
et des anonymes, le nom de l'administrateur
●
default-content-deploy:entity-list (dcd-entity-list)
– Liste les types d'entités de contenu actuels
●
default-content-deploy:import (dcdi)
– Importe tout le contenu défini dans un répertoire de contenu
@hellosct1 – Programmez #24 -
Utilisations (4/4)
●
default-content-deploy:import-aliases (dcdia)
– Importe les alias d'url de site
●
default-content-deploy:uuid-info (dcd-uuid-info)
– Obtenir le site système actuel, les UUIDs des administrateurs
et des anonymes, le nom de l'administrateur
●
default-content-deploy:entity-list (dcd-entity-list)
– Liste les types d'entités de contenu actuels
@hellosct1 – Programmez #24 -
Importation
●
L'entité importée est déterminée par son UUID
– Nouvelle ou mise à jour
●
L'ID d'une entité n'est pas conservé
– Changement ID pour éviter les conflits.
●
Les références par l'ID de l'entité seront corrigées
pendant l'importation sur la base des UUID.
●
L'entité existante n'est mise à jour
que si l'entité importée est plus récente.
●
L'entité importée dont l'heure est identique ou antérieure
à celle de l'entité existante actuelle est ignorée.
Ce comportement peut être modifié par le paramètre --force-update
@hellosct1 – Programmez #24 -
Exemples
●
drush dcde node
– Export all nodes.
●
drush dcde node --folder='../content'
– Export all nodes from the specified folder.
●
drush dcde node --bundle=page
– Export all nodes with bundle (content type) page.
●
drush dcde node --bundle=page,article --entity_id=2,3,4
– Export all nodes with bundle page or article plus nodes with entity id 2, 3 and 4.
●
drush dcde node --bundle=page,article --skip_entities=5,7
– Export all nodes with bundle page or article
and skip nodes with entity id 5 and 7
●
drush dcde node –skip_entities=5,7
– Export all nodes and skip nodes with entity id 5 and 7
@hellosct1 – Programmez #24 -
Export node
@hellosct1 – Programmez #24 -
Export UI (1/
@hellosct1 – Programmez #24 -
Export UI (2/
@hellosct1 – Programmez #24 -
Import
drush dcim <content module name>
@hellosct1 – Programmez #24 -
En résumé
●
Avec les modules et l’API
– Le déploiement de contenu est facilité
@hellosct1 – Programmez #24 -
Merci
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr

Contenu connexe

Tendances

Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsEric Hogue
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 
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
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciwiemfourati
 
A Hands-On Introduction To Docker Containers.pdf
A Hands-On Introduction To Docker Containers.pdfA Hands-On Introduction To Docker Containers.pdf
A Hands-On Introduction To Docker Containers.pdfEdith Puclla
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHubThibault Vlacich
 
Exercices shell
Exercices shellExercices shell
Exercices shellulratique
 
Manipulation GLPI / OCS
Manipulation GLPI / OCSManipulation GLPI / OCS
Manipulation GLPI / OCSChris Dogny
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptxMEDOBEST1
 

Tendances (20)

Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
 
Docker
DockerDocker
Docker
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
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...
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ci
 
A Hands-On Introduction To Docker Containers.pdf
A Hands-On Introduction To Docker Containers.pdfA Hands-On Introduction To Docker Containers.pdf
A Hands-On Introduction To Docker Containers.pdf
 
Docker Container Introduction
Docker Container IntroductionDocker Container Introduction
Docker Container Introduction
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
 
Exercices shell
Exercices shellExercices shell
Exercices shell
 
Windows Automation with Ansible
Windows Automation with Ansible Windows Automation with Ansible
Windows Automation with Ansible
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
siem.pdf
siem.pdfsiem.pdf
siem.pdf
 
Manipulation GLPI / OCS
Manipulation GLPI / OCSManipulation GLPI / OCS
Manipulation GLPI / OCS
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptx
 

Similaire à Infrastructure as code drupal

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
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Jean-Baptiste Claramonte
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Arte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webArte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webAcquia
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Pierre Ternon
 
Rmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frGaëtan Trellu
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Cyril Reinhard
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Modern Data Stack France
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Olivier Grisel
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011OSInet
 

Similaire à Infrastructure as code drupal (20)

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
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Arte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes webArte utilise Acquia Cloud pour héberger ses plateformes web
Arte utilise Acquia Cloud pour héberger ses plateformes web
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
 
Rmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-fr
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
 
Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011
 

Plus de Christophe Villeneuve

La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxChristophe Villeneuve
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Christophe Villeneuve
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activitesChristophe Villeneuve
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueChristophe Villeneuve
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsChristophe Villeneuve
 

Plus de Christophe Villeneuve (20)

MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applications
 

Infrastructure as code drupal

  • 1. Infrastructure as code Drupal Christophe Villeneuve @hellosct1 @hellosct1@mamot.fr Meetup Programmez #24 – le 5 Avril 2022
  • 2. Atos open source - afup – lemug.fr – mariadb – drupal – mozilla - firefox – lemugfr - sumo – webextensions – VR – AR – XR - Cause commune 93.1 FM - TechSpeaker - Lizard - eyrolles – editions eni – programmez – linux pratique – webriver – elephpant - CommonVoice – Sécurité - Cybersécurité Christophe Villeneuve ● Consultant Open Source ● Dresseur animaux
  • 3. @hellosct1 – Programmez #24 - Aujourd’hui ● IaC.. Qu’est ce ? ● IaC et Drupal ● Iac Drupal Contenu
  • 4. ● IaC.. Qu’est ce ? ● IaC et Drupal ● Iac Drupal Contenu
  • 5. @hellosct1 – Programmez #24 - IaC : Qu’est ce ? (1/2) ● IaC = Infrastructure as code (IaC) – Infrastructure programmable (en FR) ● Ensemble de mécanismes permettant de gérer – Par des fichiers descripteurs – Des scripts (code informatique) – Une infrastructure (informatique) virtuelle ● S'inscrit dans la mouvance plus générale du DevOps – Objectif d'unifier le développement logiciel et l'administration système
  • 6. @hellosct1 – Programmez #24 - IaC : Qu’est ce ? (2/2) ● Constitue une réponse aux besoins des entreprises – En termes de mise à l'échelle des applications axée ● Automatisation et simplification de l'infrastructure de projets informatiques ● Permettre au(x) développeur(s) – de gérer l'infrastructure avec du code – souvent avec des fichiers de configurations ou de scripts
  • 7. @hellosct1 – Programmez #24 - Couche basse ● Couche basse du système d'information – comme le serveur, le réseau ou le stockage ● d'écrire avec du code la configuration voulu avec du code ● Les outils IaC vont automatisés – provisionning – configuration – deploiement
  • 8. @hellosct1 – Programmez #24 - Outils IaC
  • 9. @hellosct1 – Programmez #24 - Outils ? ● Instancé 1 ou plusieurs VM ● Les configurer ● Installer – une Base de données – un serveur web – un serveur d'application ● Les isolés au niveau réseau ● Réaliser des comptes administrateurs, utilisateurs, de services ● Mettre en place un load balancer pour la répartition de charge ● Pousser des certificats...
  • 10. @hellosct1 – Programmez #24 - Exemple : Ansible - hosts: localhost gather_facts: False vars_files: - credentials.yml tasks: - name: Provision EC2 Instance ec2: aws_access_key: "{{aws_access_key}}" aws_secret_key: "{{aws_secret_key}}" key_name: web_server_test_key group: test instance_type: t3.small image: "ami-0123456" wait: true count: 1 region: us-west-1 instance_tags: Name: Web_Server register: ec2
  • 11. @hellosct1 – Programmez #24 - Mais… Pour faire simple ● Déployer et détruire – à la volé les ressources dans le cloud ● Redéployer – cette même infrastructure suivant le besoin ● Fournir – des environnements stables à grandes échelles ● Gagner – en disponibilité et flexibilité
  • 12. @hellosct1 – Programmez #24 - Plusieurs types d’IaC ● Impératif – Ressources (instances, réseaux, etc.) sont déclarées ● par une liste formelles d'instructions, ● suivies dans un ordre précis, ● pour obtenir le résultat attendu. ● Fonctionnel – Ressources sont déclarées de manière ● que la configuration finale de celles-ci soit celles attendues. ● L'ordre en lui-même n'a pas d'importance majeure. ● Basé sur l'environnement – Ressources sont déclarées de manière que ● leur configuration finale et leur état – soit en cohérence avec le reste de l'environnement qui l'entoure. ● Il s'agit de la version la plus élaborée et celle vers laquelle
  • 13. @hellosct1 – Programmez #24 - En résumé ● Infrastructure as code : – Définissez toute votre infrastructure dans des fichiers, jusqu'au niveau de l'interface réseau. – Déploiement continu ● Faire des déploiements de production une corvée. Petits, fréquents, automatiques.
  • 14. ● IaC.. Qu’est ce ? ● IaC et Drupal ● Iac Drupal Contenu
  • 15. @hellosct1 – Programmez #24 - Drupal : Qu’est ce... ● CMS/F Content Management System / Framework – Administrer vos contenus sans toucher au code  ● Open Source – Gratuit, +30000 développeurs, +25000 modules, millions de pages de documentation ● Flexible et modulaire – Utilisation des modules de contribution et développement à façon ● Moderne – multilingue, responsive, RGAA, rapide, webservice, headless, caches ● Performant – Coeur léger, robuste, permet des développements poussés sans l’effet usine à gaz – Cache natif pouvant être couplé à des solutions externes, Varnish, APC, Memcached, MongoDB ● Abstraction – Approche entités plutôt que pages (types de contenu, taxonomie) ● API
  • 16. @hellosct1 – Programmez #24 - Drupal : Roadmap
  • 17. @hellosct1 – Programmez #24 - Drupal : Roadmap Dépendances
  • 18. @hellosct1 – Programmez #24 - TOP 50 des sites français
  • 19. @hellosct1 – Programmez #24 - Déploiement Workflow : Principe
  • 20. @hellosct1 – Programmez #24 - Workflow : Déroulement name: Build, push, and verify image run: | echo ${{ secrets.PACKAGES_TOKEN }} | docker login docker.pkg.github.com -u juampynr --password-stdin docker build --tag docker.pkg.github.com/juampynr/drupal8-do/app:${GITHUB_SHA} . docker push docker.pkg.github.com/juampynr/drupal8-do/app:${GITHUB_SHA} docker pull docker.pkg.github.com/juampynr/drupal8-do/app:${GITHUB_SHA}
  • 21. @hellosct1 – Programmez #24 - Workflow complet
  • 22. @hellosct1 – Programmez #24 - Automatiser les tâches Drupal ● Automatiser toutes ces tâches – Flux de travail du déploiement de Drupal – Appliquer les techniques de codage éprouvées à la façon dont vous configurez et organisez votre infrastructure ? ● Maintenant, pensez à la commodité de disposer d'un outil qui transformerait les API en fichiers de configuration déclaratifs que votre équipe pourrait facilement utiliser : – Partager – Modifier – Version – Revoir
  • 23. @hellosct1 – Programmez #24 - Automatiser les tâches dans votre flux de travail ● Contraintes : – "jongler" avec plusieurs environnements – Synchroniser les changements de code ou de configuration ● Obligations – Appliquer une modification spécifique sur l'environnement de développement – l'exporter vers un fichier à stocker dans le contrôle de version – Valider les changements de code/configuration dans le contrôle de version – Synchroniser ce fichier avec le serveur live
  • 24. @hellosct1 – Programmez #24 - Implémentation de l'IaC dans Drupal ● Automatiser votre processus de déploiement - Comment tiré parti de l'infrastructure as code - pour automatiser mon flux de déploiement Drupal ?
  • 25. @hellosct1 – Programmez #24 - Déploiement (playbooks ansible) ● Les étapes : – Mise à jour de la base de données à l'aide de Drush – Mise en place du système. ● La liste des tâches de "mise en place" comprendrait : ● la création d'un répertoire pour la persistance des fichiers de la base de données – pour stocker les sauvegardes des fichiers – pour le stockage des sauvegardes de la base de données ● Alors que (certaines) des tâches axées sur la mise en place et le déploiement seraient les suivantes : – cloner le code correct – importation de la configuration à partir de fichiers – vider le cache – création du fichier .env
  • 26. @hellosct1 – Programmez #24 - Playbook ansible (1/2) --- - hosts: haproxy become: true roles: - role: maintenance_haproxy vars: maintenance: true Site1 : true Site2 : false - hosts: drupal become: true roles: - role: install_site1 - hosts: varnish become: true roles: - role: reload_varnish - hosts: drupal become: true roles: - remove_livraison - hosts: haproxy become: true roles: - role: maintenance_haproxy vars: maintenance: false site1: true site2: false
  • 27. @hellosct1 – Programmez #24 - Lancer le script ansible-playbook -i inventory/$1 install_site1.yml --extra-vars version=$2
  • 28. @hellosct1 – Programmez #24 - En résumé ● Automatisation consiste à documenter et à disposer d'un script pour chaque étape 1 - La configuration du système, comme la création de répertoires de sauvegarde de la base de données. 2 - Exécuter les mises à jour de la base de données via Drush ● Il est important de sécuriser vos serveurs avant le déploiement de l'application. ● Ansible aide à stocker les informations sensibles de manière chiffrée, – Les identifiants à la base de données – la paire de clés SSH – Informations d'identification de l'utilisateur du serveur. ● Cette configuration vous permet de construire facilement – des répliques de production ou un environnement de non-production.
  • 29. ● IaC.. Qu’est ce ? ● IaC et Drupal ● Iac Drupal Contenu
  • 30. @hellosct1 – Programmez #24 - Drupal contenu (1/ ● Type de contenu
  • 31. @hellosct1 – Programmez #24 - Drupal contenu (2/ ● Contenu
  • 32. @hellosct1 – Programmez #24 - Drupal contenu (3/ ● Vue (views)
  • 33. @hellosct1 – Programmez #24 - Déployé automatiquement !!! ● Type de contenu ● View ● Entity ● … ● BDD : Behat Drush Module - Deploy - Deploy Content -
  • 34. @hellosct1 – Programmez #24 - Modules !!! ● Deploy – Contenu – D8 & (partiellement D9) ● https://www.drupal.org/project/deploy ● Content Sync Module – Contenu – D8 & D9 ● https://www.drupal.org/project/content_sync ● Entity share – D8 & D9 – Répond à une certaine attente (type de champs) – https://www.drupal.org/project/entity_share
  • 35. @hellosct1 – Programmez #24 - Mobule : Default Content Deploy https://www.drupal.org/project/default_content_deploy
  • 36. @hellosct1 – Programmez #24 - Utilisations (1/4) ● default-content-deploy:export (dcde) – Exporte une seule entité ou un groupe d'entités ● default-content-deploy:export-with-references (dcder) – Exporte une seule entité avec des références ● default-content-deploy:export-site (dcdes) – Exporte le contenu d'un site entier
  • 37. @hellosct1 – Programmez #24 - Utilisations (2/4) ● default-content-deploy:export-aliases (dcdea) – Exporte les alias d'url du site ● default-content-deploy:import (dcdi) – Importe tout le contenu défini dans un répertoire de contenu ● default-content-deploy:import-aliases (dcdia) – Importe les alias d'url de site
  • 38. @hellosct1 – Programmez #24 - Utilisations (3/4) ● default-content-deploy:uuid-info (dcd-uuid-info) – Obtenir le site système actuel, les UUIDs des administrateurs et des anonymes, le nom de l'administrateur ● default-content-deploy:entity-list (dcd-entity-list) – Liste les types d'entités de contenu actuels ● default-content-deploy:import (dcdi) – Importe tout le contenu défini dans un répertoire de contenu
  • 39. @hellosct1 – Programmez #24 - Utilisations (4/4) ● default-content-deploy:import-aliases (dcdia) – Importe les alias d'url de site ● default-content-deploy:uuid-info (dcd-uuid-info) – Obtenir le site système actuel, les UUIDs des administrateurs et des anonymes, le nom de l'administrateur ● default-content-deploy:entity-list (dcd-entity-list) – Liste les types d'entités de contenu actuels
  • 40. @hellosct1 – Programmez #24 - Importation ● L'entité importée est déterminée par son UUID – Nouvelle ou mise à jour ● L'ID d'une entité n'est pas conservé – Changement ID pour éviter les conflits. ● Les références par l'ID de l'entité seront corrigées pendant l'importation sur la base des UUID. ● L'entité existante n'est mise à jour que si l'entité importée est plus récente. ● L'entité importée dont l'heure est identique ou antérieure à celle de l'entité existante actuelle est ignorée. Ce comportement peut être modifié par le paramètre --force-update
  • 41. @hellosct1 – Programmez #24 - Exemples ● drush dcde node – Export all nodes. ● drush dcde node --folder='../content' – Export all nodes from the specified folder. ● drush dcde node --bundle=page – Export all nodes with bundle (content type) page. ● drush dcde node --bundle=page,article --entity_id=2,3,4 – Export all nodes with bundle page or article plus nodes with entity id 2, 3 and 4. ● drush dcde node --bundle=page,article --skip_entities=5,7 – Export all nodes with bundle page or article and skip nodes with entity id 5 and 7 ● drush dcde node –skip_entities=5,7 – Export all nodes and skip nodes with entity id 5 and 7
  • 42. @hellosct1 – Programmez #24 - Export node
  • 43. @hellosct1 – Programmez #24 - Export UI (1/
  • 44. @hellosct1 – Programmez #24 - Export UI (2/
  • 45. @hellosct1 – Programmez #24 - Import drush dcim <content module name>
  • 46. @hellosct1 – Programmez #24 - En résumé ● Avec les modules et l’API – Le déploiement de contenu est facilité
  • 47. @hellosct1 – Programmez #24 - Merci Christophe Villeneuve @hellosct1 @hellosct1@mamot.fr