Próbuję napisać prosty alias drush, aby połączyć się z witryną Drupal działającą na lokalnej instancji Vagrant.
Mam w pliku o nazwie ~/.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 został znaleziony. drush sa
zwroty:
l
l.o
Kiedy drush @l.o status
jednak nie łączę się ze zdalnym hostem:
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 :
Potwierdziłem, że to polecenie pomyślnie łączy się z włóczęgą:
ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key
Debugowanie danych wyjściowych nie pokazuje polecenia SSH, o ile mogę powiedzieć:
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]
Wiem, że muszę robić coś głupiego, ale po prostu tego nie widzę.
drush
virtual-machine
ssh
Justin
źródło
źródło
drush --debug @l.o status
pokazuje Dokładne polecenie ssh powinno być zakopane w wyjściu.Odpowiedzi:
Mogłem używać aliasu drush w następującej konfiguracji:
Załóżmy dwie rzeczy:
vagrant box ma jakiś statyczny adres IP (może być prywatny, na przykład: 192.168.56.101)
Adres IP włóczęgi jest dostępny w formie symbolicznej (na przykład mamy pojedynczy wiersz w / etc / hosts z ip i nazwą hosta). (na przykład: test.site.local).
Krok 1: Musimy skopiować ustawienia wygenerowane przez błędną komendę ssh-config do $ HOME / .ssh / config
Krok 2: Przy takiej konfiguracji mój alias był w następującej formie:
źródło
/dev/null
jako pliku znanego hosta powoduje wyświetlenie ostrzeżenia przy każdym uruchomieniu drush. Wskazuję,HOME/.ssh/known_hosts_vagrant
aby użyć osobnego pliku. Następnie ostrzeżenie jest wyświetlane tylko raz.Postać
~
jest rozwijana przez Bash. Drush nie zapewnia tej samej usługi, dlatego należy zastąpić~
ją ścieżką do katalogu domowego.Na przykład:
To nie zostało przetestowane, ale powinno działać, z wyjątkiem prostych literówek.
AKTUALIZACJA:
Myślę, że widzę tutaj błąd Drusha. Drush zakłada, że 127.0.0.1 wraca do komputera lokalnego i zdecyduje się nie używać ssh w / out, nawet biorąc pod uwagę implikacje -p w opcjach ssh. Będzie to wymagało poprawki do Drusha do naprawy.
function drush_is_local_host()
w environment.inc .WYDANIE NA GITHUBIE:
Proszę wstawić wszelkie uwagi dotyczące potencjalnych poprawek w problemie Github, wywołanie backendu Drusha nie bierze pod uwagę numeru portu przy podejmowaniu decyzji o lokalnym lub zdalnym .
źródło
Mam wokół to po prostu robi czek na Drush w moim lokalnym pliku settings.php poprzez
php_sapi_name() == 'cli'
i aktualizowania mojej bazy danych i memcache ciągi połączeń do Vagrant coś takiego:źródło