आप स्थानीय वैग्रांट बॉक्स के लिए एक शराबी उपनाम कैसे लिखते हैं?


9

मैं एक स्थानीय ड्रग उदाहरण पर चलने वाली एक Drupal साइट से जुड़ने के लिए एक सरल ड्रिंक उपनाम लिखने की कोशिश कर रहा हूं।

मेरे पास फाइल में निम्नलिखित हैं ~/.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',
);

उर्फ मिला है। drush saरिटर्न:

l
l.o

हालाँकि, जब मैं drush @l.o statusइसे दूरस्थ होस्ट से कनेक्ट नहीं करता हूं :

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   :

मैंने पुष्टि की है कि यह कमांड सफलतापूर्वक योनि से जुड़ता है:

ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key

डिबगिंग आउटपुट एसएसएच कमांड को नहीं दिखाता है जहां तक ​​मैं बता सकता हूं:

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]

मुझे पता है कि मैं कुछ बेवकूफी कर रहा हूं, लेकिन मैं इसे देख नहीं सकता।


क्या drush --debug @l.o statusदिखाता है? सटीक ssh कमांड को आउटपुट में दफन किया जाना चाहिए।
mpdonadio

FWIW, मैं हमेशा SSH कनेक्शन जानकारी को ड्रश विकल्पों के बजाय सेट करने के लिए .sh / config का उपयोग करता हूं।
mpdonadio

हम्म, डिबग आउटपुट में किसी भी प्रकार का कोई ssh कमांड नहीं है। ऊपर डिबग जोड़ा गया।
जस्टिन

क्या अन्य गैर-वैग्रेंट, लेकिन दूरस्थ, उपनाम काम करते हैं? डिबग आप शो पोस्ट किया है कि यह और भी दूरदराज के कनेक्शन (क्या आप 'आह्वान बैकएंड: ssh ...' लाइनों शुरुआत देखना चाहिए 'शुरू redispatch के माध्यम से आह्वान प्रक्रिया' और प्रयास नहीं किया
mpdonadio

हां, मेरे पास कई हैं और वे सभी करते हैं।
जस्टिन

जवाबों:


6

मैं निम्नलिखित विन्यास के साथ ड्रश अलियास का उपयोग करने में सक्षम था:

आइए मान लेते हैं दो बातें:

  • आवारा बॉक्स में कुछ प्रकार के स्थिर आईपी होते हैं (निजी हो सकते हैं, उदाहरण के लिए: 192.168.56.101)

  • योनि का आईपी प्रतीकात्मक रूप में उपलब्ध है (उदाहरण के लिए, हमारे पास / etc / ip और hostname के साथ होस्ट में एक पंक्ति है)। (उदाहरण के लिए: test.site.local)।

चरण 1: हमें सेटिंग्स कॉपी करने की आवश्यकता है, जो कि वश-एसएच-कॉन्फिगर कमांड द्वारा $ होम / एसएचएस / कॉन्फिगर में जेनरेट की जाती है

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

चरण 2: ऐसे विन्यास के साथ, मेरा उपनाम निम्नलिखित रूप में था:

$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"
);

यह एक बहुत अच्छा समाधान है। मैंने अपनी उपनाम फ़ाइल में "ssh-config-config" का उपयोग करने वाले किसी भी ssh- विकल्प को निर्दिष्ट नहीं किया, जिसकी मुझे जरूरत थी।
एंग्री डैन

यह अच्छी तरह से काम किया, हालांकि मेरे मामले में मुझे रूट सेट करना पड़ा जैसे: 'रूट' => '/ योनि / डॉक्रोट'
ognockocaten

/dev/nullज्ञात होस्ट्स फ़ाइल के रूप में उपयोग करने से हर बार ड्रंक चलने की चेतावनी मिलती है। मैं इसे HOME/.ssh/known_hosts_vagrantएक अलग फ़ाइल का उपयोग करने के लिए इंगित करता हूं । फिर चेतावनी केवल एक बार दिखाई जाती है।
टिम

3

चरित्र ~का विस्तार बाश द्वारा किया जाता है। Drush यह समान सेवा प्रदान नहीं करता है, इसलिए आपको ~अपने होम डाइरेक्टरी के पथ से प्रतिस्थापित करना चाहिए ।

इसलिए, उदाहरण के लिए:

$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',
);

यह अप्रयुक्त है, लेकिन यह काम करना चाहिए, किसी भी सरल टाइपो को रोकना।

अपडेट करें:

मुझे लगता है कि मुझे यहां एक ड्रश बग दिखाई दे रहा है। ड्रश यह मानकर चल रहा है कि 127.0.0.1 लोकल मशीन में वापस जा रहा है, और ssh- ऑप्शन में -p के निहितार्थ को देखते हुए ssh w / out का उपयोग नहीं करने का निर्णय करेगा। इसे ठीक करने के लिए Drush को एक पैच की आवश्यकता होती है। function drush_is_local_host()in environment.inc

GITHUB पर जारी:

कृपया गितूब मुद्दे में संभावित सुधारों के बारे में कोई भी टिप्पणी करें, ड्रश बैकएंड आह्वान स्थानीय बनाम रिमोट को तय करते समय पोर्ट संख्या पर विचार नहीं करता है


यह काम नहीं किया। लेकिन मैं drush_server_home () के बारे में नहीं जानता था। धन्यवाद! मैं समस्या निवारण कर रहा हूं।
जस्टिन


3

मैं अपने स्थानीय सेटिंग्स में Drush के लिए एक चेक कर के माध्यम से इस के आसपास हो गया। इस तरह से php_sapi_name() == 'cli'अपने डेटाबेस और मेकचे कनेक्शन तार को अद्यतन करने के माध्यम से फ़ाइल , इस तरह से:

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

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.