it-swarm.com.de

Konfiguration vom Import / Export ausschließen

Ich dachte, dies sei ein einfacher Anwendungsfall des neuen Konfigurationsmanagementsystems, aber ich hatte kein Glück, herauszufinden, wie dies gelöst werden kann:

Problem

Ich möchte die Konfiguration in git speichern und drush verwenden, um die Konfiguration während der Entwicklung zu exportieren und dann bei der Bereitstellung die Konfiguration zu importieren. Ziemlich ähnlich wie beim Zurücksetzen von Funktionen in Drupal 7. Mein Problem ist, dass ich keine Zugriffscodes für verschiedene Integrationen in git speichern möchte. Dies führt dazu, dass diese Konfigurationen gelöscht werden
$ drush cim -y

Wo ich gesucht habe

Ich hatte gehofft, dass es eine einfache Liste/Konfiguration für Konfigurationen geben würde, die beim Import/Export ausgeschlossen werden sollte. Es scheint, dass es irgendwann gab, aber es muss wieder entfernt worden sein, da es derzeit verfügbar ist Drupal 8 Release.

Ich habe untersucht, wie Konfigurationsänderungen vorgenommen werden, indem der aktive und der Synchronisierungsspeicher verglichen werden, um festzustellen, ob es einen Ort gibt, an dem ich Änderungen entfernen kann. Dies schien nicht der Fall zu sein. Ich habe mir angesehen, wie drush der Konfigurationsimport ist, da es einige eigene Konfigurationsausschlüsse gibt, aber es sah nicht so aus, als wäre dies erweiterbar. Ich habe mir ConfigEvents angesehen, aber diese scheinen alle nach einem Import zu passieren, also sieht es nicht so aus, als ob dies verwendet werden kann.

Fehlt mir etwas oder ist es nicht möglich, Konfigurationen einfach vom Import/Export auszuschließen?

17
googletorp

Es ist nicht möglich, ausgenommen spezifisch zu haben, aber es gibt etwas.

Genau wie $ conf in Drupal 7 gibt es in settings.php $ config, mit dem Sie alles in der Konfiguration lokal überschreiben können. Das Format ist $config['name.of.config']['nested']['key'].

Beachten Sie, dass sich alles, was in der Konfiguration gespeichert ist, noch in Git befindet. Sie müssen also entweder keine oder Ihre Testzugriffscodes in Git behalten. Außerdem zeigt die Benutzeroberfläche an, was tatsächlich in der Konfiguration gespeichert ist, und gibt derzeit keinen Hinweis darauf, dass es überschrieben wurde. Es gibt noch ausstehende Probleme, um dies zu verbessern.

Ich verstehe, dass dies Einschränkungen hat, aber im Moment ist es nicht möglich, etwas aus der exportierten Konfiguration herauszuhalten. Soweit ich weiss.

8
Berdir

Sie können das Modul "Config Ignore" verwenden: https://www.drupal.org/project/config_ignore

Haben Sie jemals erfahren, dass die Konfiguration Ihrer Site durch die Konfiguration im Dateisystem überschrieben wurde, als Sie ein Drush-CIM durchgeführt haben?

Nicht länger!

Mit diesem Modul können Sie die gewünschte Konfiguration beibehalten.

12
Weri

Sie können hierfür eine Kombination aus config_ignore und config_split verwenden.

Mit Config Ignorieren können Sie eine Teilmenge der Konfigurationsentitäten während des Imports ignorieren (verhindert auch das Löschen seit der Version 2.x). Leider wird das Ausschließen der Konfiguration beim Export nicht verhindert.

Um Konfigurationsentitäten während des Exports auszuschließen, können Sie config_split verwenden, eine neue config_split-Entität erstellen und den Ordner leer lassen. Dadurch wird verhindert, dass die Konfiguration in das Dateisystem exportiert wird. Stattdessen wird es in die Datenbank exportiert.

Ich schrieb Konfiguration von der Konfigurationsverwaltung ausschließen in Drupal 8 zu diesem Thema.

9
Geert van Dort

Um Konfigurationen aufzuteilen, können Sie https://www.drupal.org/project/config_split verwenden.

Geben Sie config_split ein, das einen Drupal Konsolenbefehl zum Importieren und Exportieren gefilterter Konfiguration bereitstellt. Die Drush-Integration wird wahrscheinlich bald folgen (nachdem der gesamte Filter vom Filter --skip-modules von drush inspiriert ist).

Sie können Exporte in verschiedene Verzeichnisse aufteilen, die Sie dann ignorieren können.

Es gab eine sehr nette Präsentation in drupal con dublin 2016 von den Verantwortlichen der CMI-Initiative, die ich Sie auf jeden Fall überprüfen sollte.

6
Potney Switters

Ich frage mich etwas, warum noch niemand Drush CMI-Tools erwähnt hat. Die magischen Wörter sind drush cexy und config-ignore.yml. Sie haben eine Liste, die Sie anpassen können. Wir brauchten es einmal, um Blockinstanzen auszuschließen, während gleichzeitig die Blockbasen verarbeitet wurden.

Wir möchten die gesamte Konfiguration exportieren, aber bestimmte Muster ausschließen.

Hier ist das --ignore-list Option von drush cexy kommt herein.

In unserem Projekt haben wir einen ./drush-Ordner, daher stecken wir eine Datei in die aufgerufene config-ignore.yml mit folgendem Inhalt.

ignore:
  - field.field.contact_message.*
  - field.storage.contact_message.*
  - contact.form.*
  - core.entity_form_display.contact_message*
  - core.entity_form_display.contact_form*
  - core.entity_view_display.contact_message*
  - core.entity_view_display.contact_form*
  - system.site
  - workbench_email.workbench_email_template.*

Also laufen wir jetzt drush cexy wie so

drush cexy --destination=/path/to/config-export --ignore-list=/path/to/drush/config-ignore.yml

Exportieren Sie also die aktive Konfiguration und wenden Sie dann die Ignorierliste an, um unerwünschte Konfigurationen zu entfernen.

Also jetzt, wenn Sie git status Sie sollten nur Änderungen sehen, die Sie festschreiben möchten.

Quelle: https://www.previousnext.com.au/blog/introducing-drush-cmi-tools

Installation

cd ~/.drush
wget https://raw.githubusercontent.com/previousnext/drush_cmi_tools/8.x-1.x/drush_cmi_tools.drush.inc
drush cc drush

Quelle: https://github.com/previousnext/drush_cmi_tools

3
leymannx

Verwenden von config split (empfohlen)

Das config split module wurde speziell für diesen Bedarf erstellt.

Config Split ist in Drush integriert.

Nur Drush verwenden

Drush soll das auch mit dem --skip-modules Flagge.

Sie können die folgenden Zeilen in eine drupal/drushrc.php im Webroot Ihres Projekts einfügen, um dies automatisch zu tun.

$command_specific['config-export']['skip-modules'] = array('devel');
$command_specific['config-import']['skip-modules'] = array('devel');

Siehe http://www.drush.org/en/master/config-exporting/#ignoring-development-modules

Leider gibt es einen Fehler mit dieser Funktionalität: https://github.com/drush-ops/drush/issues/182 =. Im Moment müssen Sie diese Konfigurationsdateien auch in Ihrem .gitignore hinzufügen, damit exportierte Konfigurationsdateien nicht festgeschrieben werden. Es ist eine fortlaufende Aufgabe, diese (fehlerhafte) Funktionalität möglicherweise zugunsten der Konfigurationsaufteilung von drush aufzugeben.

2
gagarine

Seit Drupal 8.8-Module können jetzt von der Konfigurationssynchronisation ausgeschlossen werden, indem $settings['config_exclude_modules'] Zu Ihrer Datei settings.php hinzugefügt wird.

$settings['config_exclude_modules'] = ['devel', 'stage_file_proxy'];

Siehe Änderungsdatensatz Module können von der Konfigurationssynchronisation ausgeschlossen werden .

2
albertski

Ich habe gerade @berdir in # 1 Antwort getestet und es läuft perfekt. Nur ich füge einen kleinen Hinweis hinzu: Sie müssen die gesamte Konfiguration in diese Variable einfügen, vollständig. Ohne es wird $ config var nicht richtig ausgeführt.

Etwas wie das:

 $config['language.negotiation'] = array(
  'session' => array(
    'parameter' => 'language',
  ),
  'url' => array(
    'source' => 'domain',
    'prefixes' => array(
      'es' => '',
      'pt-br' => '',
    ),
    'domains' => array(
      'es' => 'YourLocalDomain',
      'pt-br' => 'Anotherlocaldomain',
    ),
  ),
  'selected_langcode' => 'site_default',
  'langcode' => 'es',
);

Dokumentation: https://www.drupal.org/node/1928898

Hinweis aus der obigen Dokumentation: "Beachten Sie, dass Werte, die über $ config in settings.php überschrieben wurden, nicht über die Drupal Administrationsoberfläche) angezeigt werden können."

2
estoyausente