您如何为本地“无业游民”盒子写一个匆忙别名?


9

我正在尝试编写一个简单的drush别名,以连接到在本地Vagrant实例上运行的Drupal站点。

我在名为的文件中包含以下内容~/.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   :

我已确认此命令已成功连接到无业游民:

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命令。上面添加了调试。
贾斯汀

其他非流浪但远程的别名是否有效?您发布的调试结果表明它甚至没有尝试进行远程连接(您应该看到以“通过调用过程开始重新分配”和“后端调用:ssh ...”
开头

是的,我有很多,而且他们都有。
贾斯汀

Answers:


6

我能够通过以下配置使用drush别名:

让我们假设两件事:

  • 流浪者盒子有某种静态IP(可以是私有的,例如:192.168.56.101)

  • 流浪者的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,我所需的一切都在那里。
愤怒的丹

这很好地工作,但在我的情况,我不得不设置根就像这样:“根” =>“/流浪者/文档根”
ognockocaten

/dev/null每次运行Drush时,将其用作已知主机文件都会产生警告。我将其指向HOME/.ssh/known_hosts_vagrant使用单独的文件。然后,警告仅显示一次。
蒂姆(Tim)

3

该角色~由Bash扩展。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()environment.inc中

GITHUB上的问题:

请在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',
  );
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.