Infrastructure as code drupal

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
1 de 47

Recomendados

Architecture d'annuaire hautement disponible avec OpenLDAP por
Architecture d'annuaire hautement disponible avec OpenLDAPArchitecture d'annuaire hautement disponible avec OpenLDAP
Architecture d'annuaire hautement disponible avec OpenLDAPLINAGORA
2.5K vistas25 diapositivas
Riak introduction por
Riak introductionRiak introduction
Riak introductionDamien Krotkine
2.7K vistas61 diapositivas
Stockage et analyse temps réel d'événements avec Riak chez Booking.com por
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comDamien Krotkine
1.6K vistas119 diapositivas
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans... por
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Aurelien Navarre
1.1K vistas29 diapositivas
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure por
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
955 vistas78 diapositivas
Chiffrer et sécuriser MariaDB por
Chiffrer et sécuriser MariaDBChiffrer et sécuriser MariaDB
Chiffrer et sécuriser MariaDBChristophe Villeneuve
3.2K vistas50 diapositivas

Más contenido relacionado

La actualidad más candente

EBIZNEXT-RIAK por
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAKebiznext
1.3K vistas43 diapositivas
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache por
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheAurelien Navarre
1.8K vistas34 diapositivas
Étude de cas : migration MySQL Latin 1 vers UTF-8 por
Étude de cas : migration MySQL Latin 1 vers UTF-8Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8Olivier DASINI
7.4K vistas36 diapositivas
Consolidez vos journaux et vos métriques avec Elastic Beats por
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beatsgcatt
2.3K vistas32 diapositivas
Déploiement ELK en conditions réelles por
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
4.9K vistas39 diapositivas
Bases de données Spatiales - POSTGIS por
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISOmar El Kharki
2.5K vistas68 diapositivas

La actualidad más candente(19)

EBIZNEXT-RIAK por ebiznext
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAK
ebiznext1.3K vistas
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache por Aurelien Navarre
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Aurelien Navarre1.8K vistas
Étude de cas : migration MySQL Latin 1 vers UTF-8 por Olivier DASINI
Étude de cas : migration MySQL Latin 1 vers UTF-8Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8
Olivier DASINI7.4K vistas
Consolidez vos journaux et vos métriques avec Elastic Beats por gcatt
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beats
gcatt2.3K vistas
Déploiement ELK en conditions réelles por Geoffroy Arnoud
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
Geoffroy Arnoud4.9K vistas
Bases de données Spatiales - POSTGIS por Omar El Kharki
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGIS
Omar El Kharki2.5K vistas
Les nouveautés de MySQL 5.1 por Olivier DASINI
Les nouveautés de MySQL 5.1Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1
Olivier DASINI4.4K vistas
Industrialisez le développement et la maintenance de vos sites avec Drupal por LINAGORA
Industrialisez le développement et la maintenance de vos sites avec DrupalIndustrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec Drupal
LINAGORA1.3K vistas
DevOps avec Ansible et Docker por Stephane Manciot
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
Stephane Manciot21.3K vistas
Apache Cassandra - Concepts et fonctionnalités por Romain Hardouin
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
Romain Hardouin3K vistas
Realtime Web avec Kafka, Spark et Mesos por ebiznext
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
ebiznext6.3K vistas
Apache flink - prise en main rapide por Bilal Baltagi
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
Bilal Baltagi1.3K vistas
20200225 bbl-docker-packaging-natif por Henri Gomez
20200225 bbl-docker-packaging-natif20200225 bbl-docker-packaging-natif
20200225 bbl-docker-packaging-natif
Henri Gomez209 vistas
Laravel yet another framework por LAHAXE Arnaud
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
LAHAXE Arnaud4.2K vistas

Similar a Infrastructure as code drupal

Rex docker en production meeutp-docker-nantes por
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
914 vistas39 diapositivas
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm... por
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
978 vistas42 diapositivas
Construire un data lake managé - GDG Paris - Juin 2019 por
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
217 vistas70 diapositivas
REX Ansible por
REX AnsibleREX Ansible
REX AnsibleNoël Bardelot
525 vistas55 diapositivas
Drupal7 - Bonnes Pratiques (Partie 1) por
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
1.9K vistas54 diapositivas
Cours Devops Sparks.pptx.pdf por
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
476 vistas84 diapositivas

Similar a Infrastructure as code drupal(20)

Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm... por MSDEVMTL
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...
MSDEVMTL978 vistas
Drupal7 - Bonnes Pratiques (Partie 1) por Alexandre Marie
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
Alexandre Marie1.9K vistas
Cours Devops Sparks.pptx.pdf por boulonvert
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert476 vistas
Drupagora 2011 - Importer du contenu avec Drupal por Rodolfo Ripado
Drupagora 2011 - Importer du contenu avec DrupalDrupagora 2011 - Importer du contenu avec Drupal
Drupagora 2011 - Importer du contenu avec Drupal
Rodolfo Ripado2.2K vistas
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent... por Alexandre Touret
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 Touret26 vistas
Javascript as a first programming language : votre IC prête pour la révolution ! por VISEO
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 !
VISEO1.5K vistas
Arte utilise Acquia Cloud pour héberger ses plateformes web por Acquia
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
Acquia1.7K vistas
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ... por Pierre Ternon
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 Ternon4.4K vistas
Rmll2010 admin sys-panelgzw-fr por Gaëtan Trellu
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-fr
Gaëtan Trellu479 vistas
Scub Foundation, usine logicielle Java libre por Stéphane Traumat
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
Stéphane Traumat9.3K vistas
Introduction à Docker et utilisation en production /Digital apéro Besançon [1... por Silicon Comté
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é1.6K vistas
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent... por Alexandre Touret
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 Touret43 vistas
Acquia et Arte : Drupal Camp Paris 2013 por Cyril Reinhard
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013
Cyril Reinhard1.6K vistas
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim... por Modern Data Stack France
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 por Olivier Grisel
Hadoop MapReduce - OSDC FR 2009Hadoop MapReduce - OSDC FR 2009
Hadoop MapReduce - OSDC FR 2009
Olivier Grisel3.5K vistas

Más de Christophe Villeneuve

MariaDB une base de donnees NewSQL por
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLChristophe Villeneuve
37 vistas31 diapositivas
La boîte à outils de développements dans Firefox por
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
33 vistas66 diapositivas
pister les pisteurs por
pister les pisteurspister les pisteurs
pister les pisteursChristophe Villeneuve
53 vistas12 diapositivas
controler vos donnees éthiques dans le web por
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
39 vistas60 diapositivas
Open Source et contribution : Une association gagnante por
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
233 vistas56 diapositivas
Peur de la migration vers l’open source ? por
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
121 vistas23 diapositivas

Más de Christophe Villeneuve(20)

la boite à outils de développements dans firefox devtools por Christophe Villeneuve
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools

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