コンテンツにスキップ

Drush 9#

エイリアス#

残念ながら、Drush 9では Drush 8のような動的サイトエイリアスの注入機能が提供されていません。Drushチームと協力して、この機能を再び実装できるように取り組んでいます。当面の間、Drush 9をLagoonと一緒に使用する際の回避策をご紹介します。

基本的な考え方#

Drush 9は新しいコマンドdrush site:alias-convertを提供しており、Drush 8 形式のサイトエイリアスを Drush 9のYAML形式のサイトエイリアスに変換することができます。このコマンドは、Lagoonに現在存在するサイトエイリアスを一度だけエクスポートし、それらを/app/drush/sitesディレクトリに保存します。その後、これらのエイリアスは drush saのようなコマンドを実行する際に使用されます。

準備#

drush site:alias-convertを使用する前に、以下の手順を行う必要があります:

  • drushフォルダ内のaliases.drushrc.phplagoon.aliases.drushrc.phpにリネームします。

サイトエイリアスの生成#

cliコンテナを使用してプロジェクト内で以下のコマンドを実行すると、Drushエイリアスを変換できます:

サイトエイリアスの生成
docker-compose exec cli drush site:alias-convert /app/drush/sites --yes
生成されたYAMLファイルはGitリポジトリにコミットするのが良い習慣です。そうすることで、他の開発者も利用できるようになります。

サイトエイリアスの使用#

Drush 9では、すべてのサイトエイリアスはグループ名でプレフィックスが付けられています。今回であれば、そのグループ名はlagoonです。以下のコマンドで、プレフィックス付きのすべてのサイトエイリアスを確認できます。

すべてのサイトエイリアスを表示
drush sa --format=list

エイリアスを利用するには、次のようにします:

Drush サイトエイリアスの使用
drush @lagoon.main ssh

サイトエイリアスの更新#

Lagoonで新しい環境が作成された場合、drush site:alias-convertコマンドを実行して、サイトエイリアスファイル (.yml) を更新できます。このコマンドでlagoon.site.ymlが更新されない場合は、最初にlagoon.site.ymlを削除してから、もう一度drush site:alias-convertを実行してみてください。

ローカルからリモート環境へのDrush rsync#

ローカル環境からリモート環境にファイルを同期したい場合は、追加のパラメータを渡す必要があります:

Drush rsync
drush rsync @self:%files @lagoon.main:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX

これは、LagoonのタスクUIを使用せずに、リモート環境間でファイルを同期する場合にも当てはまります。

たとえば、@lagoon.mainから@lagoon.devへファイルを同期したい場合、上記の追加パラメータなしでローカルでdrush rsync @lagoon.main @lagoon.devを実行すると、"Cannot specify two remote aliases" (2 つのリモートエイリアスは指定できません) というエラーが発生する可能性があります。

これを解決するには、まず宛先の環境にSSHで接続 drush @lagoon.dev sshし、上記と同様のパラメータを使用して rsyncコマンドを実行する必要があります。

Drush rsync
drush rsync @lagoon.main:%files  @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX

上記の内容は、リモート環境からローカル環境へ rsyncを使って同期する場合には必要ありません。

また、私たちはDrushのメンテナと協力して、これを自動的に注入する方法を模索しています。