Estoy tratando de escribir un simple alias drush para conectarme a un sitio de Drupal que se ejecuta en una instancia local de Vagrant.
Tengo lo siguiente en un archivo llamado ~/.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',
);
Se encuentra el alias. drush sa
devoluciones:
l
l.o
Sin embargo, cuando drush @l.o status
no se conecta al host remoto:
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 :
He confirmado que este comando se conecta con éxito a vagabundo:
ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key
La salida de depuración no muestra un comando SSH hasta donde puedo decir:
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]
Sé que debo estar haciendo algo estúpido, pero no puedo verlo.
drush
virtual-machine
ssh
Justin
fuente
fuente
drush --debug @l.o status
muestra? El comando ssh exacto debe estar enterrado en la salida.Respuestas:
Pude usar drush alias con la siguiente configuración:
Asumamos dos cosas:
La caja vagabunda tiene algún tipo de IP estática (puede ser privada, por ejemplo: 192.168.56.101)
IP de vagabundo está disponible en forma simbólica (por ejemplo, tenemos una sola línea en / etc / hosts con ip y nombre de host). (por ejemplo: test.site.local).
Paso 1: Necesitamos copiar la configuración, generada por el comando vagabundo ssh-config en $ HOME / .ssh / config
Paso 2: Con tal configuración, mi alias estaba en la siguiente forma:
fuente
/dev/null
como el archivo de hosts conocido da como resultado una advertencia cada vez que se ejecuta drush. Le señalo queHOME/.ssh/known_hosts_vagrant
use un archivo separado. Entonces la advertencia solo se muestra una vez.El personaje
~
es expandido por Bash. Drush no proporciona este mismo servicio, por lo que debe reemplazarlo~
con la ruta a su directorio de inicio.Así por ejemplo:
Eso no se ha probado, pero debería funcionar, dejando al descubierto cualquier error tipográfico simple.
ACTUALIZAR:
Creo que veo un error Drush aquí. Drush asumirá que 127.0.0.1 volverá a la máquina local, y decidirá no usar ssh w / out incluso teniendo en cuenta las implicaciones de -p en ssh-options. Esto requerirá un parche para que Drush lo arregle.
function drush_is_local_host()
en ambiente.inc .NÚMERO EN GITHUB:
Ponga cualquier comentario sobre posibles soluciones en el problema de Github, la invocación de backend de Drush no considera el número de puerto al decidir local versus remoto .
fuente
Resolví esto simplemente haciendo una comprobación de Drush en mi archivo settings.php local a través de
php_sapi_name() == 'cli'
y actualizando mi base de datos y cadenas de conexión de memcache a Vagrant, de esta manera:fuente