ローカルのVagrantボックスのDrushエイリアスをどのように記述しますか?


9

ローカルVagrantインスタンスで実行されているDrupalサイトに接続するための簡単なDrushエイリアスを記述しようとしています。

と呼ばれるファイルに次のものが含まれています~/.drush/l.aliases.drushrc.php

$aliases['o'] = array(
  'parent' => 'l',
  'root' => '/vagrant/docroot',
  'remote-host' => '127.0.0.1',
  'remote-user' => 'vagrant',
  'ssh-options' => '-p 2222 -i ~/.vagrant.d/insecure_private_key',
  'uri' => '127.0.0.1:8080',
);

エイリアスが見つかりました。drush sa戻り値:

l
l.o

ただし、drush @l.o statusリモートホストに接続していない場合:

PHP executable        :  /usr/local/bin/php
PHP configuration     :  /usr/local/etc/php/5.3/php.ini
PHP OS                :  Darwin
Drush version         :  6.1.0
Drush configuration   :

このコマンドがvagrantに正常に接続することを確認しました:

ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key

私が知る限り、デバッグ出力にはSSHコマンドが表示されません。

SIG-106:ilob justin$ drush --debug @l.o status
Bootstrap to phase 0. [0 sec, 3.78 MB]                               [bootstrap]
Drush bootstrap phase : _drush_bootstrap_drush() [0.01 sec, 3.98 MB] [bootstrap]
Loaded alias @l.o from file /Users/justin/.drush/l.aliases.drushrc.php [0.01 sec, 3.99 MB]                                                                        [notice]
Cache MISS cid: 6.1.0-commandfiles-0-807b6772846e18b2741e8d5b7119b4cc [0.01 sec, 4 MB]                                                                             [debug]
Cache SET cid: 6.1.0-commandfiles-0-807b6772846e18b2741e8d5b7119b4cc [0.01 sec, 4.02 MB]                                                                           [debug]
Bootstrap to phase 0. [0.05 sec, 9.56 MB]                                                                                                                      [bootstrap]
Found command: core-status (commandfile=core) [0.08 sec, 9.56 MB]                                                                                              [bootstrap]
Loading outputformat engine. [0.13 sec, 9.6 MB]                                                                                                                   [notice]
Calling hook drush_core_status [0.14 sec, 9.65 MB]                                                                                                                 [debug]
Returned from hook drush_core_status [0.14 sec, 9.66 MB]

馬鹿なことをしているはずなのに、見えない。


何がdrush --debug @l.o status表示されますか?正確なsshコマンドを出力に埋め込む必要があります。
mpdonadio

FWIW、私は常に.ssh / configを使用して、Drushオプションの代わりにSSH接続情報を設定しています。
mpdonadio

うーん、デバッグ出力にはいかなる種類のsshコマンドもありません。上記にデバッグを追加しました。
ジャスティン

他の非Vagrantではあるがリモートのエイリアスは機能しますか?:「SSH ...ボークバックエンド」あなたはそれもリモート接続(あなたは「起動プロセスを経て再ディスパッチを開始します」と始まる行が表示されるはずしようとしなかったことを示している投稿をデバッグ
mpdonadio

はい、私はたくさん持っています、そしてそれらはすべて持っています。
ジャスティン

回答:


6

次の設定でdrushエイリアスを使用できました:

次の2つを想定します。

  • vagrant boxには、ある種の静的IPがあります(例:192.168.56.101)。

  • vagrantのIPはシンボリック形式で利用できます(たとえば、/ etc / hostsにipとホスト名を含む単一行があります)。(例:test.site.local)。

ステップ1:vagrant ssh-configコマンドによって生成された設定を$ HOME / .ssh / configにコピーする必要があります

Host test.site.local
    IdentitiesOnly yes
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    PasswordAuthentication no
    IdentityFile [path to vagrant private insecure key]

ステップ2:そのような構成では、私のエイリアスは次の形式でした:

$aliases['example'] = array(
   'root' => '/var/www',
   'uri' => 'test.site.local',
   'remote-host' => 'test.site.local',
   'remote-user' => 'vagrant',
   'ssh-options' => "-i path_to_insecure_private_key"
);

これは本当に素晴らしい解決策です。「vagrant ssh-config」を使用したエイリアスファイルでssh-optionsを指定しなかったので、必要なものはすべてそこにありました。
Angry Dan

これはうまく機能しましたが、私の場合、ルートを次のように設定する必要がありました: 'root' => '/
vagrant

/dev/null既知のホストファイルとして使用すると、drushが実行されるたびに警告が表示されます。私はそれがポイントHOME/.ssh/known_hosts_vagrant別のファイルを使用します。その後、警告は一度だけ表示されます。
Tim

3

キャラクター~はバッシュで展開。Drushはこれと同じサービスを提供しないため~、ホームディレクトリへのパスに置き換える必要があります。

したがって、たとえば:

$home = drush_server_home();
$aliases['o'] = array(
  'parent' => 'l',
  'root' => '/vagrant/docroot',
  'remote-host' => '127.0.0.1',
  'remote-user' => 'vagrant',
  'ssh-options' => "-p 2222 -i $home/.vagrant.d/insecure_private_key",
  'uri' => '127.0.0.1:8080',
);

これはテストされていませんが、単純なタイプミスがなければ機能するはずです。

更新:

Drushのバグがここにあると思います。Drushは、127.0.0.1がローカルマシンに戻ると想定し、ssh-optionsの-pの影響を考慮しても、ssh w / outを使用しないことを決定します。これを修正するには、Drushへのパッチが必要です。 function drush_is_local_host()in environment.inc

ギスタブの問題:

Githubの問題の潜在的な修正に関するコメントを入力してください。Drushバックエンドの呼び出しではローカルとリモートを決定するときにポート番号が考慮されません


それはうまくいきませんでした。しかし、drush_server_home()については知りませんでした。ありがとう!トラブルシューティングを行っています。
ジャスティン


3

私は単に私の中でDrushのチェックを行うことで、これを周りましローカルのsettings.phpファイルを介して、php_sapi_name() == 'cli'このように、とベイグラントに私のデータベースとmemcacheの接続文字列を更新します:

if (php_sapi_name() == 'cli') {
  $databases['default']['default']['port'] = '3307';

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.