Как развернуть / управлять подобными сайтами из уникального профиля, без дампов?

15

Я не как « клонированием решений веб - сайта» , который подразумевает демпинг базу данных и импортирующих эту свалку в другой среде. Это не похоже на реальный способ развертывания нескольких экземпляров одного и того же веб-сайта (staging / prod / dev / etc).

В D7 мы обычно использовали пользовательские профили и использовали drush для установки веб-сайтов из этих профилей (и, возможно, использовали функции для последующей синхронизации сайтов). Это дало нам новые установки, отсутствие тестового контента, но обмен важными настройками. Например, обычная синхронизация контента выполняется с помощью migrate.

Я пытался управлять несколькими экземплярами D8, использующими одни и те же профили установки. Где конечная цель будет делиться и синхронизировать конфигурации сайта. И каждая установка имеет свой сайт UUID. У меня нет успеха в применении system.site uuidпеременной config во время установки (конечно, я могу изменить значение позже, но мне кажется, что это слишком поздно, и все объекты уже созданы с разными UUID, что делает первую синхронизацию кошмаром где некоторое содержимое по умолчанию должно быть удалено, или язык по умолчанию нарушает синхронизацию, потому что его нельзя удалить, и т. д.).

Чтобы применить этот UUID, я попытался использовать сгенерированный файл settings.php со $config['system.site']['uuid']значением внутри, большой сбой (настройка была полностью проигнорирована, даже после установки сайта).

Я также рассмотрел профиль установщика конфигурации , который мне не совсем понятен, особенно способ смешать это решение с другим профилем установки.

Итак, вопрос в том, каков наилучший способ развертывания свежих сайтов из профиля установки:

  • без «клонирования веб-сайтов» и манипулирования дампами SQL при создании сайтов (например , вопрос о клонированных сайтах ).
  • со свежей чистой установкой (без разработчиков контента для мусора), используя экспортированную конфигурацию и код только
  • который может управлять установками по умолчанию и последующей синхронизацией
regilero
источник

Ответы:

3

Функции могут помочь обойти проблему UUID. Это все еще глючит, что мешает нам полностью автоматизировать процесс, но мы можем по крайней мере сдвинуть и поддерживать конфигурацию вручную.

Функциональные возможности все еще создают модули, они экспортируют конфигурацию в каталог config / install данного функционального модуля. Это будет обнаружено при установке этой функции, и вы сможете продолжать обновлять конфигурацию своего сайта (аналогично тому, как это делала старая версия drush-revert) по мере изменения экспорта ваших функций.

Вы также можете импортировать конфигурацию напрямую через drush, убедитесь, что используете флаг --partial, чтобы избежать переопределения конфигурации, отсутствующей в папке config. Используя --source, вы также можете определить расположение папки пользовательской конфигурации, чтобы вы могли сделать что-то подобное drush cim --partial --source=docroot/modules/features/myfeature/config/install.

Балаш Дианиска
источник
Хорошо, если я понимаю , это хорошо, вы используете функцию синхронизации веб - сайты конфигурации на soime ключи функций . Без разрешения полной конфигурации-синхронизации клонированных сайтов.
Regilero
2
Точно. Для нас фундаментальная проблема с полной синхронизацией конфигурации состоит в том, что достаточно иметь только один параметр, который администраторы могут изменить, и вы больше не можете синхронизировать, потому что это отменит их изменение. Разбиение его на функциональные области позволяет нам: а) поддерживать набор конфигурации (частично потому, что мы понимаем, что это такое) и б) сохранять гибкость в отношении остальных функций и способов управления их конфигурацией.
Balazs Dianiska
Хорошо, возможно, это не окончательный ответ, но я дам вам награду. Если кто-то захочет добавить обновленный ответ позже (по мере развития событий), я, возможно, снова открою еще одну награду за это.
Regilero
1

Другой вариант:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23
Achton
источник
1

Основываясь на подсказке @Ivan Jaros, вы можете установить определенные параметры конфигурации после установки профиля. Очевидно, это работает только при установке, а не после того, как сайт уже установлен.

В файле .install вашего профиля вы можете добавить настройки конфигурации по умолчанию в hook_install():

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

Я попробовал это локально, и это работает. Мне удалось вытащить конфигурацию с другого сайта на только что установленный локальный сайт, используя приведенный выше код (с соответствующим набором UUID), без drush csetизменения UUID сайта.

Предположительно, вы можете установить свой UUID, который будет взят из файла в вашей среде, или из переменной среды, или службы, и, таким образом, они будут одинаковыми на любом сайте с установленным профилем.

Я надеялся сделать то же самое, settings.phpно ConfigFactoryкласс на данный момент недоступен, и, как вы указали в своем вопросе, установка его через $configin не settings.phpимеет никакого эффекта.

Джесси Бойд
источник