Ich versuche, einen einfachen Drush-Alias zu schreiben, um eine Verbindung zu einer Drupal-Site herzustellen, die auf einer lokalen Vagrant-Instanz ausgeführt wird.
Ich habe Folgendes in einer Datei namens ~/.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',
);
Der Alias wird gefunden. drush sa
kehrt zurück:
l
l.o
Allerdings, wenn ich drush @l.o status
es keine Verbindung zu der Remote - Host:
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 :
Ich habe bestätigt, dass dieser Befehl erfolgreich eine Verbindung zu Vagrant herstellt:
ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key
Das Debuggen der Ausgabe zeigt keinen SSH-Befehl an, soweit ich das beurteilen kann:
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]
Ich weiß, dass ich etwas Dummes tun muss, aber ich kann es einfach nicht sehen.
drush
virtual-machine
ssh
Justin
quelle
quelle
drush --debug @l.o status
zeigt? Der genaue Befehl ssh sollte in der Ausgabe vergraben sein.Antworten:
Ich konnte Drush-Alias mit folgender Konfiguration verwenden:
Nehmen wir zwei Dinge an:
Vagrant Box hat eine Art statische IP (kann privat sein, zum Beispiel: 192.168.56.101)
Die IP von vagrant ist in symbolischer Form verfügbar (zum Beispiel haben wir eine einzelne Zeile in / etc / hosts mit IP und Hostname). (zum Beispiel: test.site.local).
Schritt 1: Wir müssen Einstellungen, die mit dem Befehl vagrant ssh-config generiert wurden, in $ HOME / .ssh / config kopieren
Schritt 2: Bei einer solchen Konfiguration hatte mein Alias folgende Form:
quelle
/dev/null
als bekannte Hosts-Datei führt bei jeder Ausführung von drush zu einer Warnung. Ich weise darauf hinHOME/.ssh/known_hosts_vagrant
, eine separate Datei zu verwenden. Dann wird die Warnung nur einmal angezeigt.Der Charakter
~
wird von Bash erweitert. Drush bietet nicht denselben Dienst an, daher sollten Sie ihn durch~
den Pfad zu Ihrem Home-Verzeichnis ersetzen .Also zum Beispiel:
Das ist ungetestet, aber es sollte funktionieren, ohne einfache Tippfehler.
AKTUALISIEREN:
Ich glaube, ich sehe hier einen Drush-Bug. Drush geht davon aus, dass 127.0.0.1 auf den lokalen Computer zurückkehrt, und beschließt, ssh w / out nicht zu verwenden, selbst wenn die Auswirkungen von -p in ssh-Optionen berücksichtigt werden. Dies erfordert einen Patch für Drush, um das Problem zu beheben.
function drush_is_local_host()
in environment.inc .AUSGABE ZU GITHUB:
Bitte geben Sie Kommentare zu möglichen Korrekturen in das Github-Problem ein. Beim Drush-Backend-Aufruf wird die Portnummer bei der Entscheidung zwischen lokal und remote nicht berücksichtigt .
quelle
Ich habe um diese einfach einen Scheck für Drush in meinem tun lokalen settings.php Datei über
php_sapi_name() == 'cli'
und meine Datenbank aktualisiert und memcache Verbindungszeichenfolgen zu Vagrant, wie folgt aus :quelle