¿Cómo implemento / administro sitios similares desde un perfil único, sin volcados?

15

No me gustan las soluciones de "sitio web de clonación " que implican descartar una base de datos e importar este volcado en otro entorno. Esto no parece una forma del mundo real de implementar varias instancias del mismo sitio web (puesta en escena / prod / dev / etc).

Con D7 usualmente usamos perfiles personalizados y drush para instalar sitios web desde estos perfiles (y tal vez usando características para sincronizaciones posteriores del sitio). Esto nos proporcionó nuevas instalaciones, sin contenido de prueba, pero compartiendo configuraciones importantes. La sincronización de contenido común se realizaría con migrate, por ejemplo.

Intenté administrar varias instancias D8 que compartían los mismos perfiles de instalación. Donde el objetivo final sería compartir y sincronizar las configuraciones del sitio. Y cada instalación tiene un UUID de sitio diferente. No tengo éxito en aplicar la system.site uuidvariable de configuración en el momento de la instalación (por supuesto, puedo alterar el valor más tarde, pero me parece que es demasiado tarde, y todos los objetos ya están creados con diferentes UUID, lo que hace que la primera sincronización sea una pesadilla , donde deben eliminarse algunos contenidos predeterminados o el idioma predeterminado bloquea la sincronización porque no se puede eliminar, etc.).

Para aplicar este UUID, intenté usar un archivo settings.php generado con un $config['system.site']['uuid']valor dentro, gran error (la configuración se ignoró por completo, incluso después de la instalación del sitio).

También he mirado perfil del instalador de configuración , que no entiendo completamente, especialmente la forma de mezclar esta solución con otro perfil de instalación.

Entonces, la pregunta es, ¿cuál es la mejor manera de implementar sitios nuevos desde un perfil de instalación:

  • sin "clonar sitios web" y manipular los volcados de SQL en la creación del sitio (como en lo que se refiere a los sitios clonados) ).
  • con una limpia instalación nueva (sin basura desarrolladores de contenido), utilizando la configuración exportada y el código sólo se
  • que puede gestionar tanto la configuración predeterminada de la instalación como las sincronizaciones posteriores
regilero
fuente

Respuestas:

3

Las características pueden ayudar a evitar el problema UUID. Todavía tiene errores, lo que nos impide automatizar completamente el proceso, pero al menos podemos cambiar y mantener la configuración manualmente.

Las características aún crean módulos, exporta la configuración al directorio config / install del módulo de características dado. Esto se recogerá cuando instale la función, y puede continuar actualizando la configuración de su sitio (de manera similar a lo que hizo la antigua reversión de funciones drush) a medida que cambian las exportaciones de sus funciones.

También puede importar la configuración directamente a través de drush, asegúrese de usar el indicador --partial, para evitar anular la configuración que no está en la carpeta de configuración. Usando --source también puede definir una ubicación de carpeta de configuración personalizada, para que pueda hacer algo como drush cim --partial --source=docroot/modules/features/myfeature/config/install.

Balazs Dianiska
fuente
bien, si he entendido bien, utiliza la función de las configuraciones de sitios web en sincronizar en soime teclas de funciones . Sin permitir la sincronización completa de la configuración de sitios web clonados.
regilero
2
Exactamente. Para nosotros, el problema fundamental con la sincronización de configuración completa es que es suficiente tener solo una configuración que los administradores puedan cambiar, y ya no se puede sincronizar, porque eso revertiría su cambio. Desglosarlo en áreas de características nos permite a) mantener un conjunto de configuración (en parte, porque entendemos qué es) yb) permanecer flexible en el resto de las características y cómo gestionamos su configuración.
Balazs Dianiska
Ok, tal vez esta no sea la respuesta definitiva, pero te daré la recompensa. Si alguien quiere agregar una respuesta actualizada más tarde (a medida que las cosas se mueven), tal vez vuelva a abrir otra recompensa por eso.
regilero
1

Otra opción:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23
Achton
fuente
1

Según la sugerencia de @Ivan Jaros, puede establecer ciertas opciones de configuración al instalar un perfil. Obviamente, esto solo funciona en la instalación y no una vez que un sitio ya está instalado.

En el archivo .install de su perfil, puede agregar la configuración predeterminada en hook_install():

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

He intentado esto localmente y funciona. Pude extraer la configuración de otro sitio en un sitio local recién instalado usando el código anterior (con el conjunto de UUID adecuado) sin usar drush csetpara cambiar el UUID del sitio.

Presumiblemente, podría configurar su UUID para que se tome de un archivo en su entorno en algún lugar, o una variable de entorno, o servicio, y así todos serían iguales en cualquier sitio con ese perfil instalado.

Esperaba hacer algo similar, settings.phppero la ConfigFactoryclase no está disponible en ese momento y, como señala en su pregunta, configurarla a través $configde settings.phpno tiene ningún efecto.

Jesse Boyd
fuente