Usando config-split en Drupal. Gestiona todos entornos de desarrollo

Enviado por christian el

Cómo usar config-split en Drupal para gestionar la configuración de tu sitio web de todos tus entornos desde un mismo lugar

 

Antes de nada, si no eres usuario de Drupal o nunca has oído hablar de este CMS, probablemente este post te suene muy raro pero bueno, algo siempre podrás aprender! :)

Desde D8, la configuración de Drupal (tipos de contenido, vistas, parametrización, campos, etc..) se gestiona todo mediante ficheros yaml lo que hace muy muy sencillo la actualización y sincronización entre diferentes entornos.

 

¿Cuál es la finalizad de la configuración en Drupal?

Facilitar la implementación de nuevos cambios y nuevos desarrollos en tu sitio web. Con la configuración puedes realizar despliegues de nuevas funcionalidades directamente desde tu repositorio de código y ejecutando un par de comandos (incluso ningún comando si utilizas CI/CD)

Qué sentido tiene esto?, muy sencillo: Pongamos por caso que tenemos 2 entornos de una web:

  • PROducción: donde está la web "live" y los usuario activos en ella
  • PREproducción: dedicado para nuevos desarrollos y pruebas

 

¿Cuál es el flujo normal?, sin config-split

Tenemos un nuevo desarrollo probado en el entorno de PRE y queremos implementarlo en producción. Haríamos lo siguiente:

  1. Exportamos toda la config nueva del sitio de desarrollo a nuestro repositorio
  2. Revisamos los camios, hacemos PR + merge de los datos
  3. Vamos al entorno de producción, hacemos un pull de los cambios
  4. Importamos toda la nueva configuración al nuevo sitio
  5. LISTO

Este sería el flujo normal, PERO que ocurre en este proceso?, lo que estamos es importando toda la configuración de nuestro entorno de pre, incluyendo configuraciones no deseadas de desarrollo (como devel, re-dirección de emails, etc...)

 

Mejorando el flujo con config-split

La idea es usar la división de la configuración para tener varias configuraciones que corresponden a los diferentes entornos y, al ahora de importar la configuración, importar la que queramos (la de pre o la de pro). Para ello:

  1. Activa el módulo config-split (ya viene integrado en el core de Drupal)
  2. Accede a la configuración del módulo (admin/config/development/configuration/config-split) y genera los diferentes entornos que quieras. Aquí un ejemplo: 

    Config split entornos
    1. Como ves he puesto 2 configuraciones. Una para pre y otra para pro. Para definir qué entorno es el actual, lo defino en el fichero settings.php 
    2.  
  3. Dentro de cada configuración de entorno deberás definir qué configuraciones se van a separar. Esto es importante que le prestes atención ya que, todo lo que indiques aquí se separará entre los diferentes entornos. En mi caso, tengo algunos módulos custom que quiero tener activados solo para producción.

    Configuración para dividir

  4. Ahora que ya tenemos los entornos configurados, lo siguiente es exportar la configuración para cada entorno. El flujo general siempre es el mismo. Sigue estos pasos por cada entorno:
    1. Activa en el fichero settings.php el entorno
    2. En tu sitio web, aplica la configuración que quieres usar en el entorno
    3. Exporta la configuración de tu sitio y la de tu entorno. Esto con un par de comandos drush ya lo podemos hacer (drush cex y drush:config-split export)
  5. Después de ejecutar el paso anterior por cada entorno, tendrás la configuración dividida por cada uno de ellos. Solo queda el último paso, importar la config al entorno deseado! Para ello, sigue estos pasos:
    1. Activa en el fichero settings.php el entorno
    2. Importa la config genérica y la específica del entorno. Esto con un par de comandos drush ya lo podemos hacer (drush cim y drush:config-split import)
  6. LISTO! :D

 

Dinahosting: dominios y alojamiento web
My investor

Regístrate en MyInvestory tendrás un extra de 20€ ! :D

Usa el código U048395 y te llevas un regalo en tu primera inversión :)

Usa el código 22c80f y te llevas un regalo en tu primera inversión :)