Я пытаюсь написать простой псевдоним drush для подключения к сайту Drupal, работающему на локальном экземпляре Vagrant.
У меня есть следующее в файле с именем ~/.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
virtual-machine
ssh
Джастин
источник
источник
drush --debug @l.o status
показывает? Точная команда ssh должна быть скрыта в выводе.Ответы:
Я смог использовать псевдоним drush со следующей конфигурацией:
Давайте предположим две вещи:
vagrant box имеет какой-то статический ip (может быть приватным, например: 192.168.56.101)
IP vagrant доступен в символической форме (например, у нас есть одна строка в / etc / hosts с ip и hostname). (например: test.site.local).
Шаг 1: Нам нужно скопировать настройки, сгенерированные командой vagrant ssh-config, в $ HOME / .ssh / config
Шаг 2: При такой конфигурации мой псевдоним был в следующей форме:
источник
/dev/null
в качестве известного файла hosts приводит к предупреждению при каждом запуске drush. Я указываюHOME/.ssh/known_hosts_vagrant
на использование отдельного файла. Тогда предупреждение показывается только один раз.Персонаж
~
расширен Bash. Drush не предоставляет эту же услугу, поэтому вы должны заменить~
путь к вашему домашнему каталогу.Так, например:
Это не проверено, но оно должно работать, за исключением любых опечаток.
ОБНОВИТЬ:
Я думаю, что вижу ошибку Drush здесь. Drush будет предполагать, что 127.0.0.1 возвращается на локальный компьютер, и решит не использовать ssh w / out, даже принимая во внимание значение -p в ssh-options. Это будет требовать исправления для Drush, чтобы исправить.
function drush_is_local_host()
в окружающей среде .ВЫПУСК НА GITHUB:
Пожалуйста, оставляйте любые комментарии, касающиеся возможных исправлений в проблеме Github, бэкэнд-вызов Drush не учитывает номер порта при выборе локального или удаленного .
источник
Я получил вокруг этого просто делать чек на Drush в моем локальном файле settings.php с помощью
php_sapi_name() == 'cli'
и обновляя свою базу данных и кэш соединение строки в Vagrant, как это:источник