Wie kann ich ähnliche Websites über ein eindeutiges Profil ohne Speicherauszüge bereitstellen / verwalten?

15

Ich weiß nicht , wie die „ Klonen Website“ Lösungen , die impliziert Dumping in einer anderen Umgebung eine Datenbank und importieren diese Müllhalde. Dies sieht nicht nach einer realen Methode zur Bereitstellung mehrerer Instanzen derselben Website aus (Staging / Prod / Dev / etc).

In D7 haben wir normalerweise benutzerdefinierte Profile verwendet und Websites aus diesen Profilen mithilfe von Drush installiert (und möglicherweise Funktionen für spätere Websitesynchronisierungen verwendet). Dadurch erhielten wir Neuinstallationen, keinen Testinhalt, aber wichtige Einstellungen. Übliche Inhaltssynchronisierungen würden beispielsweise mit migrate durchgeführt.

Ich habe versucht, mehrere D8-Instanzen mit denselben Installationsprofilen zu verwalten. Ziel ist es, Standortkonfigurationen gemeinsam zu nutzen und zu synchronisieren. Und jede Installation hat eine andere Site-UUID. Es system.site uuidgelingt mir nicht, die Konfigurationsvariable bei der Installation durchzusetzen (natürlich kann ich den Wert später ändern, aber es scheint mir, dass dies zu spät ist und alle Objekte bereits mit unterschiedlichen UUIDs erstellt wurden, was die erste Synchronisierung zu einem Albtraum macht , wo einige Standardinhalte gelöscht werden müssen oder die Standardsprache die Synchronisierung zum Absturz bringt, weil sie nicht entfernt werden kann, usw.).

Um diese UUID zu erzwingen, habe ich versucht, eine generierte settings.php-Datei mit einem $config['system.site']['uuid']inneren Wert zu verwenden.

Ich habe mir auch das Konfigurationsinstallationsprofil angesehen , das ich nicht vollständig verstehe, insbesondere die Art und Weise, wie diese Lösung mit einem anderen Installationsprofil gemischt wird.

Die Frage ist also, wie frische Sites aus einem Installationsprofil am besten bereitgestellt werden können:

  • ohne "Klonen von Websites" und Manipulieren von SQL-Dumps bei der Site-Erstellung (wie in der Frage, was sind geklonte Sites ).
  • mit einem frischen sauberen Installation (ohne Entwickler Inhalt Müll), die exportierte Konfiguration und Code nur
  • Hier können sowohl Installationskonfigurationsstandards als auch spätere Synchronisierungen verwaltet werden
regilero
quelle

Antworten:

3

Features können dabei helfen, das UUID-Problem zu umgehen. Es ist immer noch fehlerhaft, was uns daran hindert, den Prozess vollständig zu automatisieren, aber wir können die Konfiguration zumindest manuell ändern und beibehalten.

Features erstellt weiterhin Module und exportiert die Konfiguration in das Verzeichnis config / install des angegebenen Features-Moduls. Dies wird bei der Installation der Funktion berücksichtigt, und Sie können Ihre Site-Konfiguration (ähnlich wie beim Zurücksetzen der alten Drush-Funktionen) weiter aktualisieren, während sich der Export Ihrer Funktionen ändert.

Sie können die Konfiguration auch direkt über drush importieren. Verwenden Sie dazu das Flag --partial, um zu vermeiden, dass die Konfiguration überschrieben wird, die sich nicht im Ordner config befindet. Mit --source können Sie auch einen benutzerdefinierten Speicherort für den Konfigurationsordner definieren, um so etwas wie zu tun drush cim --partial --source=docroot/modules/features/myfeature/config/install.

Balazs Dianiska
quelle
ok, wenn ich es gut verstehen, verwenden Sie Funktion zu synchronisieren Websites Konfigurationen auf soime Tasten Funktionen . Ohne die vollständige Konfigurationssynchronisierung geklonter Websites zuzulassen.
Regilero
2
Genau. Für uns ist das grundlegende Problem bei der vollständigen Konfigurationssynchronisierung, dass es ausreicht, nur eine Einstellung zu haben, die die Administratoren ändern können, und Sie können nicht mehr synchronisieren, da dies ihre Änderung rückgängig machen würde. Die Aufteilung in Funktionsbereiche ermöglicht es uns, a) einen Konfigurationssatz zu verwalten (teilweise, weil wir verstehen, was es ist) und b) den Rest der Funktionen und die Verwaltung ihrer Konfiguration flexibel zu gestalten.
Balazs Dianiska
Ok, das ist vielleicht nicht die endgültige Antwort, aber ich gebe dir das Kopfgeld. Wenn jemand später eine aktualisierte Antwort hinzufügen möchte (während sich die Dinge bewegen), werde ich vielleicht eine weitere Prämie dafür eröffnen.
Regilero
1

Andere Option:

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

Basierend auf dem @ Ivan Jaros-Hinweis können Sie bei der Installation eines Profils bestimmte Konfigurationsoptionen festlegen. Dies funktioniert natürlich nur bei der Installation und nicht, wenn eine Site bereits installiert ist.

In der .install-Datei Ihres Profils können Sie in den Standardkonfigurationseinstellungen Folgendes hinzufügen hook_install():

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

Ich habe das vor Ort ausprobiert und es funktioniert. Ich konnte die Konfiguration mithilfe des obigen Codes (mit der richtigen UUID) von einem anderen Standort in einen frisch installierten lokalen Standort ziehen, ohne drush csetdie UUID des Standorts zu ändern.

Vermutlich könnten Sie Ihre UUID so einstellen, dass sie aus einer Datei in Ihrer Umgebung oder einer Umgebungsvariablen oder einem Dienst stammt, und sie wären daher auf jeder Site mit diesem installierten Profil gleich.

Ich hatte gehofft, etwas Ähnliches zu tun, settings.phpaber die ConfigFactoryKlasse ist zu diesem Zeitpunkt nicht verfügbar, und wie Sie in Ihrer Frage dargelegt haben, hat das Setzen über $configin settings.phpkeine Auswirkung.

Jesse Boyd
quelle