Saya mencoba menulis alias drushal sederhana untuk terhubung ke situs Drupal yang berjalan pada instance Vagrant lokal.
Saya memiliki yang berikut dalam file bernama ~/.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',
);
Alias ditemukan. drush sa
pengembalian:
l
l.o
Namun, ketika saya drush @l.o status
tidak terhubung ke host jarak jauh:
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 :
Saya telah mengkonfirmasi bahwa perintah ini berhasil terhubung ke gelandangan:
ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key
Debugging output tidak menunjukkan perintah SSH sejauh yang saya tahu:
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]
Saya tahu saya harus melakukan sesuatu yang bodoh tetapi saya tidak bisa melihatnya.
drush
virtual-machine
ssh
Justin
sumber
sumber
drush --debug @l.o status
ditunjukkan? Perintah ssh yang tepat harus dikubur dalam output.Jawaban:
Saya dapat menggunakan alias drush dengan konfigurasi berikut:
Mari kita asumsikan dua hal:
vagrant box memiliki semacam ip statis (bisa pribadi, misalnya: 192.168.56.101)
IP gelandangan tersedia dalam bentuk simbolis (misalnya, kami memiliki satu baris di / etc / hosts dengan ip dan hostname). (misalnya: test.site.local).
Langkah 1: Kita perlu menyalin pengaturan, dihasilkan oleh perintah vagrant ssh-config ke $ HOME / .ssh / config
Langkah 2: Dengan konfigurasi seperti itu, alias saya dalam bentuk berikut:
sumber
/dev/null
sebagai file host yang dikenal menghasilkan peringatan setiap kali drush dijalankan. Saya arahkanHOME/.ssh/known_hosts_vagrant
ke menggunakan file terpisah. Maka peringatan hanya ditampilkan sekali.Karakter
~
diperluas oleh Bash. Drush tidak menyediakan layanan yang sama ini, jadi Anda harus mengganti~
dengan path ke direktori home Anda.Jadi, misalnya:
Itu belum teruji, tetapi itu harus berhasil, kecuali salah ketik apa pun.
MEMPERBARUI:
Saya rasa saya melihat bug Drush di sini. Drush akan berasumsi bahwa 127.0.0.1 akan kembali ke mesin lokal, dan akan memutuskan untuk tidak menggunakan ssh w / out walaupun mempertimbangkan implikasi dari -p dalam ssh-options. Ini akan membutuhkan patch untuk Drush untuk memperbaikinya.
function drush_is_local_host()
dalam environment.inc .MASALAH PADA GITHUB:
Silakan berikan komentar tentang perbaikan potensial dalam masalah Github, Drush backend invoke tidak mempertimbangkan nomor port ketika memutuskan lokal vs jarak jauh .
sumber
Saya menyiasati ini dengan hanya melakukan pemeriksaan untuk Drush dalam file settings.php lokal saya melalui
php_sapi_name() == 'cli'
dan memperbarui database saya dan string koneksi memcache ke Vagrant, seperti ini:sumber