Làm thế nào để bạn viết một bí danh drush cho một hộp Vagrant địa phương?


9

Tôi đang cố gắng viết một bí danh drush đơn giản để kết nối với một trang web Drupal chạy trên một ví dụ Vagrant cục bộ.

Tôi có những điều sau đây trong một tập tin gọi là ~/.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',
);

Bí danh được tìm thấy. drush satrả về:

l
l.o

Tuy nhiên, khi tôi drush @l.o statuskhông kết nối với máy chủ từ xa:

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   :

Tôi đã xác nhận rằng lệnh này kết nối thành công với vagrant:

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

Đầu ra gỡ lỗi không hiển thị lệnh SSH cho đến nay tôi có thể nói:

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]

Tôi biết tôi phải làm điều gì đó ngu ngốc nhưng tôi không thể nhìn thấy nó.


Không drush --debug @l.o statusthể hiện điều gì? Lệnh ssh chính xác nên được chôn trong đầu ra.
mpdon Arena

FWIW, tôi luôn sử dụng .ssh / config để thiết lập thông tin kết nối SSH thay vì các tùy chọn drush.
mpdon Arena

Hmm, không có lệnh ssh nào trong đầu ra gỡ lỗi. Gỡ lỗi được thêm ở trên.
Justin

Các bí danh không phải là Vagrant, nhưng từ xa, làm việc? Gỡ lỗi mà bạn đã đăng cho thấy nó thậm chí không thử kết nối từ xa (bạn sẽ thấy các dòng bắt đầu 'Bắt ​​đầu bán lại thông qua quá trình gọi' và '
Gọi cuối cùng

Vâng, tôi có nhiều và tất cả họ đều làm.
Justin

Câu trả lời:


6

Tôi đã có thể sử dụng bí danh drush với cấu hình sau:

Hãy giả sử hai điều:

  • hộp vagrant có một số loại ip tĩnh (có thể là riêng tư, ví dụ: 192.168.56.101)

  • IP của vagrant có sẵn ở dạng biểu tượng (ví dụ: chúng tôi có một dòng duy nhất trong / etc / hosts với ip và tên máy chủ). (ví dụ: test.site.local).

Bước 1: Chúng ta cần sao chép các cài đặt, được tạo bởi lệnh ssh-config vagrant vào $ HOME / .ssh / config

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

Bước 2: Với cấu hình như vậy, bí danh của tôi ở dạng sau:

$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"
);

Đây là một giải pháp thực sự tốt đẹp. Tôi đã không chỉ định bất kỳ tùy chọn ssh nào trong tệp bí danh của mình đã sử dụng "vagrant ssh-config", mọi thứ tôi cần đều ở đó.
Angry Dan

Điều này hoạt động tốt, mặc dù trong trường hợp của tôi, tôi đã phải thiết lập root như vậy: 'root' => '/ vagrant / docroot'
ognockocaten

Sử dụng /dev/nullnhư tập tin máy chủ đã biết dẫn đến cảnh báo mỗi khi chạy drush. Tôi chỉ nó HOME/.ssh/known_hosts_vagrantđể sử dụng một tập tin riêng biệt. Sau đó, cảnh báo chỉ được hiển thị một lần.
Tim

3

Nhân vật ~được mở rộng bởi Bash. Drush không cung cấp dịch vụ tương tự, vì vậy bạn nên thay thế ~bằng đường dẫn đến thư mục chính của bạn.

Ví dụ:

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

Điều đó chưa được kiểm tra, nhưng nó sẽ hoạt động, loại bỏ bất kỳ kiểu chữ đơn giản nào.

CẬP NHẬT:

Tôi nghĩ rằng tôi thấy một lỗi Drush ở đây. Drush sẽ giả định rằng 127.0.0.1 sẽ quay trở lại máy cục bộ và sẽ quyết định không sử dụng ssh w / out ngay cả khi xem xét ý nghĩa của -p trong các tùy chọn ssh. Điều này sẽ yêu cầu một bản vá để Drush sửa chữa. function drush_is_local_host()trong môi trường.inc .

VẤN ĐỀ TRÊN GITHUB:

Vui lòng đặt bất kỳ nhận xét nào về các bản sửa lỗi tiềm năng trong vấn đề Github, lệnh gọi phụ trợ Drush không xem xét số cổng khi quyết định cục bộ và từ xa .


Điều đó đã không làm việc. Nhưng tôi không biết về drush_server_home (). Cảm ơn! Tôi đang khắc phục sự cố.
Justin


3

Tôi đã khắc phục điều này bằng cách kiểm tra Drush trong tệp settings.php cục bộ của mình thông qua php_sapi_name() == 'cli'và cập nhật chuỗi kết nối cơ sở dữ liệu và memcache của mình thành Vagrant, như thế này:

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

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.