Migraciones

Migraciones en Drupal (I): recursos básicos

Migraciones en Drupal (I): recursos básicos

Estoy trabajando en unas notas para un borrador que debería convertirse en un libro sobre procesos de migración construidos con Drupal y su API Migrate. La publicación está prevista para junio de 2020, y recopilar, probar y dar forma al contenido se ha convertido en un trabajo considerable.

Todavía quedan unos meses para el lanzamiento. Así que, para conservar un poco de salud mental y dar un sentido parcial a estas tareas, he pensado publicar aquí algunos artículos breves a partir de esas notas de trabajo.

De esa manera puedo compartir algo útil junto a las notas complementarias y, si la COVID-19 me alcanza antes de que salga el libro, al menos habré compartido algo antes. Supongo.

Bueno, ¿de qué quiero hablar en este artículo? Me gustaría elaborar una lista de módulos de Drupal relacionados con los procesos de migración: módulos contribuidos que añaden funcionalidades a una migración. Este artículo es solo una recopilación ligera de recursos básicos. Lo juro.


Este artículo se publicó originalmente en una versión anterior de mi cuaderno técnico personal y ahora forma parte de The Russian Lullaby.

Fotografía de Unsplash, del usuario Nils Nedel, @nilsnedel


Índice de contenidos

1- Introducción
2- Recursos básicos: módulos del núcleo
3- Otros recursos básicos: módulos contribuidos
4- Recursos adicionales: módulos contribuidos para plugins
5- Ejecutar migraciones: módulos relacionados con Drush
6- Autores que deberías conocer
7- :wq!

1- Introducción

No es fácil hablar de migraciones en general y, por supuesto, tampoco lo es en el contexto de Drupal. Para ejecutarlas necesitas conocer bien la tecnología, los modelos de datos de origen y destino, tener cierta experiencia con procesos ETL y manejarte con los plugins de Drupal. Las migraciones hacen un uso intensivo de estos plugins.

En cualquier caso, como el tema es amplio y ahora tengo poco tiempo, he planteado este artículo como un catálogo resumido, de consulta rápida, de herramientas y recursos básicos para trabajar con migraciones.

2- Recursos básicos: módulos del núcleo

  • Migrate: la base de las migraciones. El módulo migrate proporciona la API fundamental para migrar en Drupal.

  • Migrate Drupal: migrate_drupal se centra en las actualizaciones desde Drupal 6 o Drupal 7. Permite leer entidades de configuración en Drupal 8.

  • Migrate Drupal Multilingual: migrate_drupal_multilingual. ¿Un módulo experimental del núcleo? Véase esta referencia.

  • Migrate Drupal UI: migrate_drupal_ui ofrece una interfaz para realizar la actualización.

3- Otros recursos básicos: módulos contribuidos

  • Migrate Plus: migrate_plus es un módulo contribuido esencial que amplía las funcionalidades y capacidades de Migrate con numerosos plugins y extensiones.

  • Migrate Tools: migrate_tools es otro recurso imprescindible: proporciona numerosos comandos Drush para ejecutar y gestionar migraciones.

  • Migrate Status: migrate_status. Este pequeño módulo permite obtener información sobre un proceso de migración. ¿Necesitas saber si una migración está ejecutándose? Ofrece un servicio al que puedes llamar para comprobarlo.

  • Migrate Files: migrate_files. Una colección de plugins de proceso tan interesante que te entrarán ganas de mover archivos e imágenes con ella.

  • Migrate Commerce: commerce_migrate. Un marco de propósito general que amplía el módulo Migrate del núcleo para trasladar datos en un escenario de Drupal Commerce.

4- Recursos adicionales: módulos contribuidos para plugins

En las migraciones de Drupal utilizamos distintos recursos para ejecutar el plan ETL. Uno de los fundamentales, como adelantaba en la introducción, son los plugins de Drupal, que requieren cierto conocimiento y práctica.

En una migración, los plugins ayudan a leer la información en la fase E, extracción desde el origen (plugins de origen); realizar la T, transformación o procesamiento (plugins de proceso); y guardar los datos en la L, carga en el destino (plugins de destino). Al combinar estas tres partes solemos obtener un proceso de migración funcional.

Muchos módulos del núcleo, como el de usuarios, ya incluyen sus propios plugins para facilitar las migraciones. Veamos algunos plugins distribuidos en módulos contribuidos.

Plugins de origen: Migrate Source Plugins

  • Migrate Source CSV: migrate_source_csv. Módulo contribuido para migrar datos a Drupal 8 desde un sencillo archivo CSV de los de toda la vida.

  • Migrate Source SQL: custom_sql_migrate_source_plugin. Como particularidad entre los plugins de base de datos, permite incluir consultas SQL directamente en el archivo .yml que describe la migración. Las consultas se ejecutan contra la base de datos de origen.

  • Migrate Source YAML: migrate_source_yaml. Una herramienta sencilla para migrar contenido desde archivos YAML.

Plugins de proceso: Migrate Process Plugins

  • Migrate Process Geofield: geofield. El módulo contribuido Geofield incluye un plugin de proceso personalizado para migraciones. Consulta su plugin de proceso.

  • Migrate Process XML: migrate_process_xml. Proporciona plugins de proceso para xpath y xvalue.

  • Migrate HTML to Paragraphs: migrate_html_to_paragraphs. Ayuda a transformar el HTML del origen en un elemento Paragraph, gestionado mediante un plugin de destino.

Plugins de destino: Migrate Destination Plugins & Examples

¿Qué clase de entidades de Drupal se crearán durante la migración? ¿Entidades de contenido? ¿Entidades de configuración? Echa un vistazo.

  • Migrate Destination CSV: d8migrate. Un pequeño módulo personalizado creado por @jonathanfranks.

  • Migrate Destination Config: clase Config.php. Ofrece un plugin para migrar configuración.

  • Migrate Destination Block: clase EntityBlock.php. Como ejemplo de los recursos que puede ofrecer cada componente en una migración, al trasladar entidades de bloque —que son entidades de configuración— conviene consultar las clases PHP de origen, proceso y destino incluidas en su propio módulo.

Migración de entidades de bloque en Drupal 8.

5- Ejecutar migraciones: módulos relacionados con Drush

6- Autores que deberías conocer

  • Mauricio Dinarte: desarrollador, consultor, formador y propietario de su propio negocio, Agaric. Escribió lo que probablemente sea una lectura obligatoria para cualquiera que quiera aprender a migrar con Drupal: 31 Days of Drupal Migrations, una colección de 31 artículos publicados en Understand Drupal, con los aspectos más importantes, ejemplos, ejercicios y descripciones para entender el mundo interno de las migraciones.

Un material formativo imprescindible. Además, el sitio de su empresa reúne muchos artículos muy buenos sobre el tema bajo la etiqueta migrate.

Algunos ejemplos de Mauricio Dinarte:

  1. Introducción a las migraciones de Paragraphs en Drupal.
  2. Utilizar grupos de migración para compartir configuración entre migraciones de Drupal.
  3. ¿Cuál es la diferencia entre etiquetas y grupos de migración en Drupal?.

Su perfil en Drupal.org: dinarcon.


  • Tess Flynn: oí hablar de ella leyendo artículos de Mauricio Dinarte. Así conocí a esta desarrolladora experta, ponente y divulgadora de la comunidad Drupal. En su sitio, deninet.com, encontré contenido variado y, sobre todo, una serie muy interesante sobre migraciones bajo la etiqueta drupal-migration.

Por el camino descubrí también que tiene varios módulos contribuidos relacionados con las migraciones y los plugins de proceso.

Algunos ejemplos de Tess Flynn:

  1. Migrate Process URL: proporciona un plugin de proceso para migrar campos de enlace.
  2. Migrate Process Vardump: ayuda a depurar migraciones.
  3. Otros plugins de proceso: Migrate Process Array, Migrate Process Skip y Migrate Process Trim.

Su perfil en Drupal.org: socketwench.


Algunos ejemplos de Danny Sipos:

  1. Tu primera migración en Drupal 8.
  2. Migraciones dinámicas mediante «plantillas» en Drupal 8.
  3. Generar rápidamente las cabeceras del plugin de origen CSV mediante Drush.

Su perfil en Drupal.org: upchuk.


7- :wq!

Canción recomendada

Únete a la newsletter

Recibe artículos sobre Drupal y desarrollo web directamente en tu bandeja de entrada.

No spam. Unsubscribe at any time.