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.