Drupal Advent Calendar 2018 14日目の記事です。
今年の冬は暖冬で雪が少なく、スノーボードをするのですがスキー場のオープンが遅れたりで不安な今日この頃です。

早速ですが、 Configuration Split モジュールを利用すると 特定のモジュールや設定を環境毎に切り替えることが可能です。今回は、このモジュールの利用方法を紹介します。

モジュールのインストール

以下の方法にてモジュールをインストール(有効化)してください。

  • モジュールダウンロード

    • 公式サイト Configuration Split から 圧縮ファイルを取得
    • drush を利用 -> drush dl -y config_split
    • composer を利用 -> composer require drupal/config_split
  • モジュール有効化

    • /admin/modules より Configuration split にチェックを付与しインストール

特定モジュールの環境毎の切り替え

例としてコアモジュールのUpdate Managerを本番環境は有効、開発環境は無効ということを行ってみたいと思います。

Configuration Split の設定

環境設定 -> Configuration Split Setting より Configuration Splitの設定を行います

  • Add Configuration Split Setting をクリック

  • 設定画面にて以下の設定を行います

    • ラベル… 任意のラベルを入力 (例:production)
    • Folder… この設定でエクスポートされるconfigを配置するディレクトリ (例:../config/production)
      ※ 自動でディレクトリは作成されない為、エクスポート前に予め作成しておく必要があります。
    • COMPLETE SPLIT -> モジュール… この設定で対象とするモジュール
      (今回はUpdate Managerを対象とする為 update を選択)

Configuration Split設定

設定は以上になります。

設定のエクスポート

設定のエクスポートは drush コマンドを利用します。

drush cex で設定をエクスポートします

正常にエクスポートが終わると config/production (Configuration Splitの設定にて定義したFolder)に update.settings.yml というファイルが作成されているはずです。

  • 環境毎に有効(設定含む)/無効を切り替え

    本番環境ではUpdate Managerを有効、開発環境では無効化したい為、各環境のsettings.phpに以下を追加します。

    • 本番環境 -> 有効

    $config['config_split.config_split.production']['status'] = TRUE;

    • 開発環境 -> 無効

    $config['config_split.config_split.production']['status'] = FALSE;

設定のインポート

最後に設定が正しく行えているかインポートを行い確認します。

  • 本番環境の場合

    • Update Managerが有効化されることを確認する為、予めアンインストールします

    • drush cim で設定のインポートを行います

      以下のようにUpdate Mangerに関する設定をインポートする旨のメッセージが表示されるので yes を入力しインポートします。

~ ❯❯❯ drush cim
+------------+-----------------+-----------+
| Collection | Config          | Operation |
+------------+-----------------+-----------+
|            | update.settings | Create    |
|            | core.extension  | Update    |
+------------+-----------------+-----------+

 Import the listed configuration changes? (yes/no) [yes]:
 > yes

 [notice] 拡張の同期中: install update
 [notice] 構成の同期を完了します。
 [success] The configuration was imported successfully.
  • 開発環境の場合

    • Update Managerが無効化されることを確認する為、予めインストールします

    • drush cim で設定のインポートを行います

      以下のようにUpdate Managerに関する設定の削除する旨のメッセージが表示されるので yes を入力しインポートします。

~ ❯❯❯ drush cim
+------------+-----------------+-----------+
| Collection | Config          | Operation |
+------------+-----------------+-----------+
|            | core.extension  | Update    |
|            | update.settings | Delete    |
+------------+-----------------+-----------+

 Import the listed configuration changes? (yes/no) [yes]:
 >

 [notice] 拡張の同期中: uninstall update
 [notice] 構成の同期を完了します。
 [success] The configuration was imported successfully.

以上のようにConfiguration Splitモジュールを利用すると環境毎にモジュールの有効/無効を切り替えることができ かつ、有効化した場合の設定内容をConfiguration Managerと同様yamlファイルに書き出すことができます。

複数環境でDrupalを運用されておりConfiguration Managerを活用されている方はぜひ使ってみてください!