Як ви пишете псевдонім барабану для місцевого ящика 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.