Jak wdrożyć / zarządzać podobnymi witrynami z unikalnego profilu bez zrzutów?

15

Nie podoba mi się rozwiązanie „ klonowania strony internetowej”, które sugeruje zrzucanie bazy danych i importowanie tego zrzutu w innym środowisku. Nie wygląda to na rzeczywisty sposób wdrażania kilku instancji tej samej strony (staging / prod / dev / etc).

W D7 zwykle używaliśmy niestandardowych profili i używaliśmy drush do instalowania stron internetowych z tych profili (i być może używamy funkcji do późniejszych synchronizacji stron). Zapewniło nam to nowe instalacje, brak zawartości testowej, ale udostępnianie ważnych ustawień. Na przykład wspólna synchronizacja treści byłaby przeprowadzana za pomocą migracji.

Próbowałem zarządzać kilkoma instancjami D8 współdzielącymi te same profile instalacyjne. Ostatecznym celem byłoby udostępnienie i zsynchronizowanie konfiguracji witryny. I każda instalacja ma inny identyfikator UUID strony. Nie powiodło się wymuszanie system.site uuidzmiennej config w czasie instalacji (oczywiście mogę zmienić wartość później, ale wydaje mi się, że jest już za późno, a wszystkie obiekty są już tworzone z różnymi identyfikatorami UUID, co sprawia, że ​​pierwsza synchronizacja jest koszmarem , gdzie niektóre domyślne treści muszą zostać usunięte lub domyślny język powoduje awarię synchronizacji, ponieważ nie można jej usunąć itp.).

Aby wymusić ten identyfikator UUID, próbowałem użyć wygenerowanego pliku settings.php z $config['system.site']['uuid']wartością wewnątrz, duży błąd (ustawienie zostało całkowicie zignorowane, nawet po instalacji witryny).

Przyjrzałem się również profilowi instalatora konfiguracji , którego nie do końca rozumiem, a zwłaszcza sposobowi mieszania tego rozwiązania z innym profilem instalacyjnym.

Pytanie brzmi: jaki jest najlepszy sposób wdrażania nowych witryn z profilu instalacyjnego:

  • bez „klonowania stron internetowych” i manipulowania zrzutami SQL podczas tworzenia strony (jak w pytaniach dotyczących klonowanych witryn ).
  • ze świeżej czystej instalacji (bez śmieci) twórców treści, używając wyeksportowanego konfigurację i kod tylko
  • które mogą zarządzać zarówno domyślnymi ustawieniami instalacji, jak i późniejszymi synchronizacjami
regilero
źródło

Odpowiedzi:

3

Funkcje mogą pomóc ominąć problem UUID. Nadal jest on wadliwy, co uniemożliwia nam pełną automatyzację procesu, ale możemy przynajmniej zmienić i utrzymać konfigurację ręcznie.

Funkcje nadal tworzą moduły, eksportują konfigurację do katalogu config / install danego modułu funkcji. Zostanie to odebrane po zainstalowaniu funkcji i możesz kontynuować aktualizację konfiguracji witryny (podobnie jak w przypadku starych funkcji przywracania funkcji drush) w miarę zmiany eksportu funkcji.

Możesz również zaimportować konfigurację bezpośrednio przez drush, pamiętaj o użyciu opcji --partial, aby uniknąć przesłaniania konfiguracji poza folderem config. Za pomocą opcji --source możesz również zdefiniować niestandardową lokalizację folderu konfiguracji, abyś mógł zrobić coś takiego drush cim --partial --source=docroot/modules/features/myfeature/config/install.

Balazs Dianiska
źródło
ok, jeśli dobrze rozumiem, należy użyć funkcji do stron Synchronizacja konfiguracjach na soime klawisze funkcji . Bez zezwolenia na pełną synchronizację konfiguracji sklonowanych stron internetowych.
regilero
2
Dokładnie. Dla nas podstawowym problemem związanym z synchronizacją pełnej konfiguracji jest to, że wystarczy mieć tylko jedno ustawienie, które administratorzy mogą zmienić, a ty nie możesz już synchronizować, ponieważ to cofnęłoby ich zmianę. Podział na obszary funkcji pozwala nam a) zachować zestaw konfiguracji (częściowo, ponieważ rozumiemy, co to jest) ib) zachować elastyczność w zakresie pozostałych funkcji i sposobu zarządzania ich konfiguracją.
Balazs Dianiska,
Ok, to może nie jest ostateczna odpowiedź, ale dam ci nagrodę. Jeśli ktoś chce dodać zaktualizowaną odpowiedź później (w miarę postępu), być może ponownie otworzę kolejną nagrodę za to.
regilero
1

Inna opcja:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23
Achton
źródło
1

Na podstawie podpowiedzi @Ivan Jaros można ustawić określone opcje konfiguracji po zainstalowaniu profilu. Oczywiście działa to tylko podczas instalacji, a nie po zainstalowaniu witryny.

W pliku .install swojego profilu możesz dodać domyślne ustawienia konfiguracji w hook_install():

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

Próbowałem tego lokalnie i działa. Udało mi się pobrać konfigurację z innej witryny do świeżo zainstalowanej witryny lokalnej przy użyciu powyższego kodu (z odpowiednim zestawem UUID) bez drush csetkonieczności zmiany UUID witryny.

Można przypuszczać, że można ustawić pobieranie UUID z pliku gdzieś w środowisku, zmiennej środowiskowej lub usługi, a zatem wszystkie będą takie same w każdej witrynie z zainstalowanym tym profilem.

Mam nadzieję zrobić coś podobnego z settings.phpale ConfigFactoryklasa nie jest dostępny w tym momencie i jak zwrócić uwagę na swoje pytanie poprzez ustawienie go $configw settings.phpnie ma żadnego wpływu.

Jesse Boyd
źródło