J'essaie d'écrire un alias drush simple pour me connecter à un site Drupal fonctionnant sur une instance Vagrant locale.
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, lorsque je drush @l.o status
ne me 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 vagrant@127.0.0.1 -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.
drush
virtual-machine
ssh
Justin
la source
la source
drush --debug @l.o status
montre-t-on? La commande ssh exacte doit être enterrée dans la sortie.Réponses:
J'ai pu utiliser l'alias drush avec la configuration suivante:
Supposons deux choses:
vagrant box a une sorte d'ip statique (peut être privé, 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
Étape 2: Avec une telle configuration, mon alias était sous la forme suivante:
la source
/dev/null
tant que fichier d'hôtes connu entraîne un avertissement à chaque exécution du drush. Je lui indiqueHOME/.ssh/known_hosts_vagrant
d'utiliser un fichier séparé. Ensuite, l'avertissement ne s'affiche qu'une seule fois.Le personnage
~
est développé par Bash. Drush ne fournit pas ce même service, vous devez donc le remplacer~
par le chemin d'accès à votre répertoire personnel.Ainsi, par exemple:
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 tenant compte des implications de -p dans ssh-options. Cela va nécessiter un correctif à Drush pour corriger.
function drush_is_local_host()
dans environment.inc .NUMÉRO SUR GITHUB:
Veuillez mettre tous les commentaires concernant les correctifs potentiels dans le problème Github, Drush backend invoke ne prend pas en compte le numéro de port lors de la décision locale ou distante .
la source
J'ai contourné cela en faisant simplement une vérification de Drush dans mon fichier settings.php local 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:la source