web-dev-qa-db-fra.com

Comment écrivez-vous un alias drush pour une boîte Vagrant locale?

J'essaie d'écrire un alias de drush simple pour me connecter à un site Drupal fonctionnant sur une instance locale de Vagrant.

J'ai ce qui suit dans un fichier appelé ~/.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',
);

L'alias est trouvé. drush sa Retour:

l
l.o

Cependant, quand je drush @l.o status il ne se connecte pas à l'hôte distant:

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   :

J'ai confirmé que cette commande se connecte avec succès à vagabond:

ssh [email protected] -p 2222 -i ~/.vagrant.d/insecure_private_key

La sortie de débogage n'affiche pas de commande SSH pour autant que je sache:

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]

Je sais que je dois faire quelque chose de stupide mais je ne le vois pas.

9
Justin

J'ai pu utiliser l'alias drush avec la configuration suivante:

Supposons deux choses:

  • vagrant box a une sorte d'adresse IP statique (peut être privée, par exemple: 192.168.56.101)

  • L'IP de vagabond est disponible sous forme symbolique (par exemple, nous avons une seule ligne dans/etc/hosts avec ip et hostname). (par exemple: test.site.local).

Étape 1: nous devons copier les paramètres générés par la commande vagrant ssh-config dans $ HOME/.ssh/config

Host test.site.local
    IdentitiesOnly yes
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    PasswordAuthentication no
    IdentityFile [path to vagrant private insecure key]

Étape 2: Avec une telle configuration, mon alias était sous la forme suivante:

$aliases['example'] = array(
   'root' => '/var/www',
   'uri' => 'test.site.local',
   'remote-Host' => 'test.site.local',
   'remote-user' => 'vagrant',
   'ssh-options' => "-i path_to_insecure_private_key"
);
6
harijari

Le caractère ~ Est développé par Bash. Drush ne fournit pas ce même service, vous devez donc remplacer ~ Par le chemin d'accès à votre répertoire personnel.

Ainsi, par exemple:

$home = drush_server_home();
$aliases['o'] = array(
  'parent' => 'l',
  'root' => '/vagrant/docroot',
  'remote-Host' => '127.0.0.1',
  'remote-user' => 'vagrant',
  'ssh-options' => "-p 2222 -i $home/.vagrant.d/insecure_private_key",
  'uri' => '127.0.0.1:8080',
);

Ce n'est pas testé, mais cela devrait fonctionner, à l'exception de toute faute de frappe simple.

MISE À JOUR:

Je pense que je vois un bug Drush ici. Drush va supposer que 127.0.0.1 retourne sur la machine locale, et décidera de ne pas utiliser ssh w/out même en considérant les implications de -p dans ssh-options. Cela va nécessiter un correctif à Drush pour corriger. function drush_is_local_Host() dans environnement.inc .

ÉMISSION SUR GITHUB:

Veuillez mettre tout commentaire concernant les correctifs potentiels dans le problème Github, l'invocation du backend Drush ne prend pas en compte le numéro de port lors de la décision locale ou distante .

3
greg_1_anderson

J'ai contourné cela en faisant simplement une vérification de Drush dans mon fichier local settings.php via php_sapi_name() == 'cli' et en mettant à jour ma base de données et les chaînes de connexion memcache vers Vagrant, comme ceci:

if (php_sapi_name() == 'cli') {
  $databases['default']['default']['port'] = '3307';

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
3
Justin