Як ви пишете псевдонім барабану для місцевого ящика Vagrant?


9

Я намагаюся написати простий псевдонім друку для підключення до сайту 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   :

Я підтвердив, що ця команда успішно підключається до бродячого:

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 для налаштування інформації про з'єднання SSH замість параметрів друку.
mpdonadio

Гм, у виводі налагодження немає жодної команди ssh. Налагодження додано вище.
Джастін

Чи працюють інші псевдоніми, які не мають блага, але віддалені? Опублікована налагодження показує, що він навіть не намагався віддалено підключитися (ви повинні побачити рядки, що починаються з "
Повторної пересилки

Так, у мене багато, і всі вони.
Джастін

Відповіді:


6

Мені вдалося використати псевдонім drush із наступною конфігурацією:

Припустимо дві речі:

  • коробка vagrant має якусь статичну ip (може бути приватною, наприклад: 192.168.56.101)

  • IP бродячого доступний у символічній формі (наприклад, у нас є один рядок у / etc / hosts з ip та ім'ям хоста). (наприклад: test.site.local).

Крок 1. Нам потрібно скопіювати параметри, згенеровані бродяжною командою 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"
);

Це дійсно приємне рішення. Я не вказував жодних ssh-опцій у своєму псевдонімі, використовуючи "vagrant ssh-config", все, що мені було потрібно, було там.
Злий Дан

Це добре працювало, хоча в моєму випадку мені довелося встановити корінь так: 'root' => '/ vagrant / docroot'
ognockocaten

Використання /dev/nullвідомого файлу хостів призводить до попередження кожного разу, коли виконується натискання. Вказую HOME/.ssh/known_hosts_vagrantна використання окремого файлу. Тоді попередження відображається лише один раз.
Тім

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',
);

Це неперевірено, але це має спрацювати, забороняючи будь-які прості друкарські помилки.

ОНОВЛЕННЯ:

Я думаю, що тут бачу помилку Друша. Друш припускає, що 127.0.0.1 повертається до локальної машини, і вирішить не використовувати ssh w / out, навіть враховуючи наслідки -p у ssh-опціях. Це потребує виправлення Друша для виправлення. function drush_is_local_host()у середовищі.inc .

ПИТАННЯ НА GITHUB:

Будь ласка, введіть будь-які коментарі щодо потенційних виправлень у випуску Github, виклик Drush бекенда не враховує номер порту при вирішенні локального проти віддаленого .


Це не спрацювало. Але я не знав про drush_server_home (). Дякую! Я вирішую проблеми.
Джастін


3

Я вирішив це, просто перевіривши наявність Drush у моєму локальному файлі settings.php за допомогою php_sapi_name() == 'cli'та оновивши мої рядки підключення до бази даних та memcache до Vagrant:

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

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.