Как предотвратить установку модуля devel на производственные объекты?

Используя новый диспетчер конфигурации Drupal 8, как я могу предотвратить его установку модуля Devel в определенных средах? Насколько я знаю, установка его на моем локальном уровне означает, что в следующий раз, когда я экспортирую конфигурацию и перевежу ее в другие среды (dev, test, prod), она будет автоматически активирована.

24 голоса | спросил cambraca 1 FebruaryEurope/MoscowbMon, 01 Feb 2016 20:09:10 +0300000000pmMon, 01 Feb 2016 20:09:10 +030016 2016, 20:09:10

9 ответов


14

Метод: Drush

  • Drush может игнорировать разрешенные состояния расширений при синхронизации конфигурации.

    drush cex --skip-modules=devel

    drush cim --skip-modules=devel

  • С Drush CMI tools вы можете работать со списком конфигурации для игнорирования.

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

    drush cimy --delete-list=/path/to/config-ignore.yml

Метод: Модули

  • Вы можете использовать модуль Configuration Split , который позволяет:

    1. Разделите конфигурацию на выделенную папку
    2. Конфигурация черного списка
    3. Игнорировать набор настроек
    4. Конфигурирование с помощью объектов конфигурации
  • Конфигурация режима только для чтения модуль

      

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

    $settings['config_readonly'] = TRUE;

  • И еще один модуль - Конфигурация среды , который позволяет вам переопределить конфигурацию на для каждой среды.

ответил Adrian Cid Almaguer 23 Jpm1000000pmMon, 23 Jan 2017 20:19:30 +030017 2017, 20:19:30
5

Если вы используете drush в своем процессе развертывания, вы можете сделать следующее:

Создайте файл drushrc.php в том же каталоге, что и ваш settings.php (например: docroot/sites/default) и поставьте следующее:

$drush_ignore_modules = array(
  'devel',
  'webprofiler',
  'devel_generate',
  'kint',
  'yaml_editor',
);

$command_specific['config-export']['skip-modules'] = $drush_ignore_modules;
$command_specific['config-import']['skip-modules'] = $drush_ignore_modules;

Это означает, что вы можете манипулировать командами drush cex /drush cim, чтобы пропускать модули во время их процесса.

Подробнее о Использование фильтра модуля конфигурации в Drush 8 .

ответил ssibal 27 J000000Wednesday16 2016, 15:19:25
3

Есть интересная проблема для Drupal 8.3.x: Разрешить модулям разработки отказаться от config-export . Общий консенсус заключается в том, что Configuration Split в настоящее время является лучшим решением.

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

  

Просто хотел кратко описать, как работает config_split:   Конфигурационный раздел конфигурации определяет, что входит в черный список, что позволяет вам   к черным спискам модулей и /или конфигурационных объектов. Канонический пример,   будучи развитым, уже имеет интересный прецедент: он поставляется с   system.menu.devel, который, если вы выполните черный список, конфигурацию меню   файл не будет удален, так как нет никакой зависимости. Хотя это не   Основная проблема, конфигурация разделов позволяет индивидуально выбрать, что в качестве   так что он удаляется по окружающей среде.

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

  

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

ответил Wim Mostrey 22 Jpm1000000pmSun, 22 Jan 2017 16:07:24 +030017 2017, 16:07:24
3

Существует аккуратный способ сделать это, где вы в конечном итоге получаете модули dev, совершенные в композиторе для удобства, и конфигурация этих модулей не добавляется в ваш экспорт config (есть 2 части):

1. Для композитора требуется --dev При включении модуля, который предназначен исключительно для разработки, используйте флаг -dev:

$ composer require --dev drupal/devel

Это приводит к тому, что эти зависимости добавляются в файл composer.json в файле require-dev:

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^[email protected]"
    }
}

Итак, если вы устанавливаете сайт БЕЗ ваших модулей dev, вы скажете:

$ composer install --no-dev

NB: В ваших промежуточных и промежуточных средах вы всегда должны делать --no-dev

2. Используйте config_split модуль

Модуль разделения конфигурации позволяет создавать группы экспорта конфигурации, которые могут быть включены или отключены в среде.

На самом деле у меня есть 3 раскола:

  1. Конфигурация основного сайта (включена повсеместно, dev, промежуточная и производственная)
  2. Конфигурация стажа (включена в dev и промежуточная версия) - включает модуль перенаправления почты
  3. Конфигурация Dev - включает в себя devel, kint ... но не перенаправляет адрес электронной почты, поскольку он поставляется с настройкой промежуточной конфигурации в dev.
ответил Duncanmoo 9 J0000006Europe/Moscow 2017, 15:39:37
1

Я сделал небольшой скрипт, чтобы сделать все это одним выстрелом.

#!/bin/bash

drush pm-uninstall devel -y
drush pm-uninstall field_ui -y
drush pm-uninstall field_name_prefix_remove -y

drush config-export

drush en devel -y
drush en field_ui -y
drush en field_name_prefix_remove -y
ответил Roebrt Brown 27 J000000Wednesday16 2016, 15:05:55
1

Разделение конфигурации может быть жизнеспособным решением для некоторых.

  

Управление конфигурацией Drupal 8 лучше всего работает при импорте и   экспортируя весь набор настроек сайтов. Однако иногда   разработчикам нравится отказываться от устойчивости CM и иметь   супер-набор конфигурации, активный на их машине разработки и   развертывать только подмножество. Канонический пример для этого состоит в том, чтобы   модуль devel включен или имеет несколько мест размещения или представлений блоков в   среды разработки, а затем не экспортировать их в набор   конфигурации, которая должна быть развернута, но все же может   конфигурации разработки с коллегами.

https://www.drupal.org/project/config_split

ответил Kevin 21 Jam1000000amSat, 21 Jan 2017 01:29:36 +030017 2017, 01:29:36
1

Вы также можете увидеть Config Ignore module.

  

Этот модуль - это инструмент, позволяющий сохранить необходимую конфигурацию, в   место.

     

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

     

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

ответил Smalution 23 Jam1000000amMon, 23 Jan 2017 09:32:09 +030017 2017, 09:32:09
1

Для этого вы можете использовать модуль переопределения развертывания. Прочтите следующую ссылку для подробного описания:

http://dcycleproject.org/blog/46/continuous-deployment -drupal стиле

Однако . Лучший способ сделать это - отключить ваш модуль на локальном компьютере, а затем экспортировать конфигурацию.

Drupal предоставляет возможность переопределить параметры конфигурации в settings.php, но они недействительны для отключения /включения модулей.

Из default.settings.php:

/**
 * Configuration overrides.
 *  * To globally override specific configuration values for this site,
 * set them here. 
 * 
 *
 * blah..blah...blah
 *
 *  
 * There are particular configuration values that are risky to override. For
 * example, overriding the list of installed modules in 'core.extension' is not
 * supported as module install or uninstall has not occurred. Other examples
 * include field storage configuration, because it has effects on database
 * structure, and 'core.menu.static_menu_link_overrides' since this is cached in
 * a way that is not config override aware. Also, note that changing
 * configuration values in settings.php will not fire any of the configuration
 * change events.
 */
ответил kmdhrm 9 FebruaryEurope/MoscowbTue, 09 Feb 2016 12:51:27 +0300000000pmTue, 09 Feb 2016 12:51:27 +030016 2016, 12:51:27
0

drush cex --skip-modules был удален в пользу config_split, как описано в этом вопрос , поэтому решения, основанные на drush, не сработали для меня.

Вот решение, основанное на решении Duncanmoo, с помощью config_exclude module

1. Для установки config_exclude с помощью Composer требуется --dev и настройте его

$ composer require --dev drupal/config_exclude
$ drush en config_exclude -y
$ nano sites/default/setting.php

разрешить использование settings.php в локальной локальной среде.

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

Добавить параметры config_exclude в локальном файле

$ nano sites/default/setting.local.php

Вот несколько примеров настроек

$settings['config_exclude_modules'] = [
    'devel', 
    'config_exclude',
    'config_filter',
    ...
    'stage_file_proxy',
];

ПРИМЕЧАНИЕ1: config_filter - зависимость config_exclude, поэтому, если вам не нужна его продукция, вы можете исключить ее выше

ПРИМЕЧАНИЕ 2. settings.local.php не является обязательным требованием. Это зависит от того, контролируется ли ваш VCS или нет.

2. Для композитора требуется --dev

При включении модуля, который предназначен исключительно для разработки, используйте флаг -dev:

$ composer require --dev drupal/devel

Это приводит к тому, что эти зависимости добавляются в файл composer.json в файле require-dev:

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^[email protected]"
    }
}

Итак, если вы устанавливаете сайт БЕЗ ваших модулей dev, вы скажете:

$ composer install --no-dev

ПРИМЕЧАНИЕ. . На ваших промежуточных и промежуточных средах вы всегда должны делать --no-dev

3. используйте drush cex, как обычно используете

$ drush cex 

не будет экспортировать ни одну из настроек исключенных модулей

ПРИМЕЧАНИЕ. Я заметил, что после запуска команды выше были изменены параметры core.extension , но соответствующий .yml никогда не записывается на жесткий диск (даже после подтверждения will be deleted and replaced with the active config), поэтому ничего не нужно совершать, я думаю, это зависит от внутренних компонентов модуля config_exclude

ответил GiorgosK 25 J0000006Europe/Moscow 2018, 20:28:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132