Работа с config split модулем в Drupal

Задача модуля — дать возможность разделить конфигурации сайта для разных системных окружений. На локальном сервере вы можете использовать такие модули как devel, stage_file_proxy, различные UI модули администрирования (вроде views_ui). А на prod сервере вам они не нужны.

Понятно, что если вы используете одну и ту же конфигурацию для всех системных окружений, то это создаёт определенные неудобства. Config Split помогает их решить.

Список конфигураций

Работа начинается с настройки списка конфигураций. «Промышленный» стандарт — это 4 конфигурации: local, dev, stage, prod. В простых случаях это может быть пара: local и prod.

/admin/config/development/configuration/config-split

Сплит-конфигурации работают как дополнение к основной конфигурации. Во время операций импорта конфигурации — drush cim — в зависимости текущего статуса (какие сплиты активны) выполняется импорт основной конфиги и активных дополнительных. И аналогично работает drush cex.

Начальная настройка сплитов

Типовая настройка для размещения файлов конфигураций — это каталог config, размещенный за пределами DRUPAL_ROOT. Т.е. в settings.php задаётся config_sync_directory:

При настройке сплитов не рекомендуется помещать их в дочерние папки основной конфигурации, а располагать их на одном уровне. Потому мы перемещаем основную конфигурацию в /../config/sync, а сплиты размещаем в /../config/MACHINE-SPLIT-NAME.

Измените настройку для основной конфиги:

Папки для сплитов настраиваются через админку.

Активация сплитов в зависимости от окружения

Нам нужно, чтобы в зависимости от окружения были активны соответствующие сплиты. Обычно это делается через файл settings.local.php, который не попадает в git и отражает локальные настройки окружения.

На забудьте его подключать из settings.php

В settings.local.php:

Если хостинг поддерживает серию системных окружений, например как это сделано в Pantheon или Acquia, то нужный сплит можно активировать, отталкиваясь от переменных окружения.


Config Split предлагает две разные подсистемы настроек — это полное разделение конфигураций (complete split) и частичное (partial split). В чем разница?

Complete Split

Наиболее удобен в случае модулей, которые используются только в каком то определенном системном окружении. Например, devel, который нужен только локально.

Алгоритм примерно следующий:

  • Активируйте local сплит,
  • Включите devel, настройте его.
  • Отметьте devel галочкой в complete split в сплите local
  • Выполните экспорт — drush cex.

Настройки devel будут убраны из общего конфига (sync), но появятся в local. Модуль в общих настройках при этом будет отключен (core.extensions.yml).

Partial Split

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

Изначально нужно сконфигурировать наиболее общий случай. Он будет храниться в /sync. Далее выполняется настройка сплита. Например, вы хотите, чтобы в локальном окружении не производилась агрегация стилей:

  • Настройте общий случай (агрегация включена), drush cex.
  • Активируйте нужный вам сплит (я меняю имя $config_active = ‘local’; в settings.local.php)
  • Добавьте настройки system.performance.yml в partial split секции Local (соответствующая галочка)
  • Отключите агрегацию /admin/config/development/performance
  • Выполните drush cex

В папке local будет создан т.н. config split patch для system.performance.yml, который опишет отличия от основной конфигурации.

Написать комментарий

 

Комментарии к «Работа с config split модулем в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: