Estou tentando escrever um alias simples de drush para conectar-se a um site Drupal em execução em uma instância local do Vagrant.
Eu tenho o seguinte em um arquivo chamado ~/.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',
);
O alias foi encontrado. drush sa
retorna:
l
l.o
No entanto, quando eu drush @l.o status
não conecto ao 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 :
Confirmei que este comando se conecta com êxito ao vagrant:
ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key
A saída de depuração não mostra um comando SSH até onde eu sei:
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]
Eu sei que devo estar fazendo algo estúpido, mas simplesmente não consigo ver.
drush
virtual-machine
ssh
Justin
fonte
fonte
drush --debug @l.o status
mostra? O comando ssh exato deve estar oculto na saída.Respostas:
Consegui usar o alias de drush com a seguinte configuração:
Vamos assumir duas coisas:
O vagrant box possui algum tipo de IP estático (pode ser privado, por exemplo: 192.168.56.101)
O IP do vagrant está disponível na forma simbólica (por exemplo, temos uma linha única em / etc / hosts com ip e nome do host). (por exemplo: test.site.local).
Etapa 1: Precisamos copiar as configurações geradas pelo comando vagrant ssh-config para $ HOME / .ssh / config
Etapa 2: com essa configuração, meu alias estava no seguinte formato:
fonte
/dev/null
como arquivo conhecido de hosts resulta em um aviso toda vez que o drush é executado. ApontoHOME/.ssh/known_hosts_vagrant
para usar um arquivo separado. Então o aviso é mostrado apenas uma vez.O personagem
~
é expandido por Bash. O Drush não fornece esse mesmo serviço, portanto, você deve substituir~
o caminho para o diretório inicial.Então, por exemplo:
Isso não foi testado, mas deve funcionar, descobrindo quaisquer erros de digitação simples.
ATUALIZAR:
Eu acho que vejo um bug Drush aqui. O Drush assumirá que o 127.0.0.1 retornará à máquina local e decidirá não usar o ssh w / out, mesmo considerando as implicações do -p no ssh-options. Isso vai exigir um patch para Drush para corrigir.
function drush_is_local_host()
em environment.inc .EDIÇÃO NO GITHUB:
Por favor, coloque quaisquer comentários sobre possíveis correções na questão do Github, a chamada de back-end do Drush não considera o número da porta ao decidir local x remoto .
fonte
Eu tenho em torno deste simplesmente fazendo um cheque de Drush no meu arquivo settings.php locais via
php_sapi_name() == 'cli'
e atualizar meu banco de dados e memcache seqüências de conexão para Vagrant, como este:fonte