Yerel bir Vagrant kutusu için nasıl bir takma ad yazabilirsiniz?


9

Yerel bir Vagrant örneği üzerinde çalışan bir Drupal sitesine bağlanmak için basit bir drush takma adı yazmaya çalışıyorum.

Adlı bir dosyada aşağıdakiler var ~/.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',
);

Takma ad bulunur. drush saİadeler:

l
l.o

Ancak, drush @l.o statusuzak ana bilgisayara bağlanmadığımda:

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   :

Bu komutun başarıyla vagrant'a bağlandığını onayladım:

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

Hata ayıklama çıktısı, söyleyebildiğim kadarıyla bir SSH komutu göstermiyor:

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]

Aptalca bir şey yapmam gerektiğini biliyorum ama göremiyorum.


Ne drush --debug @l.o statusgösteriyor? Kesin ssh komutu çıktıya gömülmelidir.
mpdonadio

FWIW, drh seçenekleri yerine SSH bağlantı bilgilerini ayarlamak için her zaman .ssh / config kullanıyorum.
mpdonadio

Hmm, hata ayıklama çıktısında herhangi bir ssh komutu yoktur. Hata ayıklama yukarıda eklendi.
Justin

Vagrant olmayan ancak uzak diğer takma adlar çalışıyor mu? Gönderdiğiniz hata ayıklama, uzak bağlantıyı bile denemediğini gösteriyor ('Çağırma işlemi ile yeniden gönderme işlemini başlat' ve 'Arka uç çağırma: ssh ...' ile başlayan satırları görmelisiniz
mpdonadio

Evet, çok var ve hepsi var.
Justin

Yanıtlar:


6

Aşağıdaki yapılandırmayla drush takma adını kullanabildim:

İki şeyi varsayalım:

  • vagrant kutusu bir çeşit statik ip içerir (özel olabilir, örneğin: 192.168.56.101)

  • Vagrant'ın IP'si sembolik formda mevcuttur (örneğin, / etc / hosts içinde ip ve hostname ile tek satırımız vardır). (örneğin: test.site.local).

Adım 1: Vagrant ssh-config komutu tarafından oluşturulan ayarları $ HOME / .ssh / config dizinine kopyalamamız gerekiyor

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

Adım 2: Böyle bir yapılandırma ile takma adım aşağıdaki formdaydı:

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

Bu gerçekten güzel bir çözüm. Takma ad dosyamda "vagrant ssh-config" kullanmışken herhangi bir ssh seçeneği belirtmedim, ihtiyacım olan her şey vardı.
Angry Dan

Benim durumumda böyle kök ayarlamak zorunda kaldım rağmen bu güzel çalıştı: 'root' => '/ vagrant /
docroot

Kullanımı /dev/nullher zaman drush çalıştırılan bir uyarı bilinen barındıran dosya sonuçları olarak. HOME/.ssh/known_hosts_vagrantAyrı bir dosya kullanmayı işaret ediyorum . Ardından uyarı yalnızca bir kez gösterilir.
Tim

3

Karakter ~Bash tarafından genişletilir. Drush aynı hizmeti sağlamaz, bu nedenle ~ana dizininizin yolu ile değiştirmelisiniz .

Yani mesela:

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

Bu test edilmemiş, ancak herhangi bir basit yazım hatasıyla barikat çalışması gerekir.

GÜNCELLEME:

Sanırım burada bir Drush böceği görüyorum. Drush, 127.0.0.1'in yerel makineye geri döndüğünü varsayacaktır ve ssh seçeneklerindeki -p'nin etkilerini göz önünde bulundursa bile ssh w / out kullanmamaya karar verecektir. Bunu düzeltmek için Drush'a bir yama gerekecek. function drush_is_local_host()içinde environment.inc .

GITHUB'DA SORUN:

Lütfen Github sorununda olası düzeltmelerle ilgili herhangi bir yorum koyun, Drush backend invoke, yerel ve uzaktan karar verirken bağlantı noktası numarasını dikkate almaz .


Bu işe yaramadı. Ama drush_server_home () hakkında bilmiyordum. Teşekkürler! Sorun giderme.
Justin


3

Ben sadece benim de Drush bir çek yaparak bu sorunu var yerel settings.php dosyasının yoluyla php_sapi_name() == 'cli've benim veritabanı ve böyle Vagrant için Memcache'ı bağlantı dizeleri, güncelleme:

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

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.