Les nouveautés de Drupal 8 : son système de configuration

Chaines soutenant un ascenceur

Le système de configuration de Drupal 8 constitue une amélioration majeure de Drupal 8, portée par l'initiative CMI. Le principe en est simple : séparer la configuration d'un site Drupal 8 de son contenu. Cette distinction entre configuration et contenu permet une transition entre plusieurs environnements d'un même site. Toutes les configurations sont stockées désormais au moyen de simple fichiers texte (au format YAML), ce qui sécurise toute modification et évolution si on dispose d'un système de versionning du système de fichiers. Ainsi, des changements et évolutions d'un site Drupal 8 peuvent être envisagées beaucoup plus sereinement.

Découvrons les concepts clés de cette nouveauté majeure de Drupal 8.

Des transitions entre les instances d'un même site

Tout d'abord, le point fondamental à retenir est que le système de configuration a été conçu pour permettre de gérer la transition de configurations vers plusieurs instances (developpement, préproduction, production) d'un même et unique site. Son but n'est pas de packager des fonctionnalités qui puissent être portées sur des sites différents. Chaque configuration dispose d'un identifiant unique universel permettant d'assurer la consistance entre les différents environnements du même site.

La configuration active

Par défaut, et pour des raisons de performances, le système de configuration stocke la configuration active en base de données mais peut tout aussi bien utiliser le système de fichiers, Redis, MongoDB, etc. C'est pourquoi lors d'une installation vous ne trouverez plus le répertoire par défaut sites/default/files/config_xxxx_active mais uniquement le répertoire config_xxx_staging qui permet d'effectuer les imports et exports de la configuration. Pour activer le stockage de la configuration active sur le système de fichiers lors de l'installation de Drupal 8, vous pouvez vous référer à cette documentation. A noter qu'il est fortement recommandé de placer ces répertoires stockant la configuration de votre site (que ce soit celle active ou celle de transition) en dehors du répertoire DRUPAL_ROOT de votre site Drupal 8.

La configuration active peut être surchargée depuis le fichier settings.php. A noter que les données de configuration surchargées par cette méthode ne sont pas visibles depuis l'interface d'administration.

Un processus de mise à jour non contraignant, ou pas, selon les besoins

Le système de configuration n'impose pas de processus de mise à jour d'un site Drupal 8. On peut tout aussi bien ignorer ce système que d'imposer de passer par lui pour effectuer toutes les modifications de configuration d'un site en production. Un module existe même déjà pour imposer ce dernier processus : configuration read only mode permet d'empêcher la modification des configurations sur un site, et s'assurer ainsi que toute modification doive passer par un processus s'appuyant sur le système de configuration.

Le site Drupal 8 est responsable de la configuration

Les modules peuvent fournir lors de leur phase d'installation un certain nombre de configuration. Par exemple un type de contenu ou un certain style d'image. Le système de configuration postule un principe majeur : c'est le site qui est le garant de la configuration globale, non les modules. Aussi toute modification de la configuration fournie par un module déjà installé, lors de la mise à jour vers une nouvelle version par exemple,  n'aura aucun effet et ne sera pas prise en compte. Pour modifier leurs configurations initiales les modules devront toujours implémenter hook_update_N() et non pas mettre à jour leurs fichiers de configuration.

Les différents types de configuration

Il existe deux types de configuration sur Drupal 8 : les configurations simples et les configurations d'entité. Les configurations simples stockent des informations basiques telles que des entiers, des valeurs booléennes ou une chaine de caractères. Les configurations d'entité prennent en charge quant à elles les configurations plus complexes de Drupal 8, telles que les types de contenu, les vues, les champs, les styles d'images, etc. et permettent leurs créations from scratch depuis les fichiers de configuration.

Le retour de Features

Utilisé sur Drupal 7 pour gérer les transitions entre plusieurs environnements, Feature va retrouver sa fonction originelle, à savoir packager des fonctionnalités pour pouvoir les installer sur de multiples sites ou au sein de dsitribution. Grâce au nouveau système de configuration, Feature va permettre de pouvoir packager rapidement et simplement des fonctionnalités et les exporter au sein de modules, avec la particularité de donner le contrôle sur cette configuration spécifique au module généré. Features a pour vocation à être utilisé sur un environnement de développement et ainsi packager et mettre à jour des fonctionnalités. Il n'a pas pour vocation de se substituer au système de configuration conçu précisement pour gérer les transitions entre plusieurs instances d'un même site, et pour le faire très bien. D'autres solutions sont d'ores et déjà disponibles pour packager des fonctionnalités, à l'instar du module Configuration développement.

Et en vrai cela donne quoi ?

Le système de configuration va nous permettre de gérer en toute sécurité les évolutions d'un site drupal 8, depuis son environnement de développement jusqu'à sa version en production. Mais il va permettre aussi de gérer, grâce à un système de versionning de fichiers (Git ou SVN par exemple), des interventions mutliples et simultanées sur la configuration d'un même site durant sa phase de développement. Le système de versionning se chargeant d'agréger toutes les modifications des différents intervenants. Tout simplement. Pour vous donner une idée très pratique, vous pouvez consulter cet article CMI...à la pratique qui vous explicitera le processus, au final très simple, et donc très efficace.

Ce billet est une traduction libre, et complétée, de l'article Configuration Management in Drupal 8: The Key Concepts.

Pour aller plus loin dans la découverte du système de configuration, et la nouvelle place de Feature dans ce système, je peux vous recommander ces excellents billets : Announcing Features for Drupal 8 et Drupal 8 configuration management with Features. Bonne lecture.

 

Commentaires

Soumis par Alexeo (non vérifié) le 17/06/2016 à 20:37 - Permalien

Bonsoir, il y a de sacrés changements entre Drupal 7 et 8. Je teste actuellement la création d'un nouveau site sur Drupal 8 et pas facile, je suis bloqué sur la création d'une page d'accueil unique et personnalisée pour mon site. Autrement, merci pour l'article, ça m'a bien guidé.

Ajouter un commentaire