지역 Vagrant 상자에 대한 drush 별칭을 어떻게 작성합니까?


9

로컬 Vagrant 인스턴스에서 실행되는 Drupal 사이트에 연결하기 위해 간단한 drush 별칭을 작성하려고합니다.

파일이라는 파일에 다음이 있습니다 ~/.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

내가 알 수있는 한 디버깅 출력에는 SSH 명령이 표시되지 않습니다.

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, 나는 항상 drush 옵션 대신 SSH 연결 정보를 설정하기 위해 .ssh / config를 사용합니다.
— mpdonadio

흠, 디버그 출력에는 어떤 종류의 ssh 명령도 없습니다. 위에서 추가 된 디버그.
— Justin

비 Vagrant이지만 원격의 별명이 작동합니까? '... SSH 된 invoke 백엔드'를 디버그 당신은 심지어 원격 연결 (당신이 '재발 dispatch를 통해 호출 프로세스를 시작합니다'라인이 시작 참조해야 시도하지 않았다 쇼를 게시
— mpdonadio을

그렇습니다, 나는 많은 것을 가지고 있고 그들은 모두합니다.
— Justin

답변:


6

다음 구성으로 drush alias를 사용할 수있었습니다.

두 가지를 가정 해 봅시다.

  • vagrant box에는 일종의 정적 ip가 있습니다 (예 : 192.168.56.101).

  • 방랑자의 IP는 기호 형식으로 제공됩니다 (예 : ip 및 호스트 이름을 가진 / etc / hosts에 단일 행이 있음). (예 : test.site.local).

1 단계 : vagrant ssh-config 명령으로 생성 된 설정을 $ HOME / .ssh / config에 복사해야합니다.

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

이것은 정말 좋은 해결책입니다. "vagrant ssh-config"를 사용한 별칭 파일에 ssh-options를 지정하지 않았습니다. 필요한 모든 것이 있습니다.
— Angry Dan

내 경우에는 내가 지금처럼 설정 루트를 가지고 있지만이, 잘했다 '루트'=> '/ 방랑 / docroot에'
— ognockocaten

/dev/null알려진 호스트 파일로 사용하면 drush가 실행될 때마다 경고가 발생합니다. HOME/.ssh/known_hosts_vagrant별도의 파일을 사용 하도록 지시합니다. 그런 다음 경고가 한 번만 표시됩니다.
— Tim

3

캐릭터 ~는 Bash에 의해 확장됩니다. 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',
);

그것은 테스트되지 않았지만 간단한 오타를 제외하고 작동해야합니다.

최신 정보:

여기에 Drush 버그가 있다고 생각합니다. Drush는 127.0.0.1이 로컬 시스템으로 돌아가고 있다고 가정하고 ssh-options에서 -p의 의미를 고려하더라도 ssh w / out을 사용하지 않기로 결정합니다. 이 문제를 해결하려면 Drush에 패치가 필요합니다. function drush_is_local_host()에 environment.inc .

GITHUB 문제 :

Github 문제에서 잠재적 수정 사항에 대한 의견을 적어주십시오. Drush 백엔드 호출은 로컬 대 원격을 결정할 때 포트 번호를 고려하지 않습니다 .


작동하지 않았습니다. 그러나 drush_server_home ()에 대해서는 몰랐습니다. 감사! 문제를 해결하고 있습니다.
— Justin


3

난 그저 내에서 Drush에 대한 검사를 수행하여이 주위에있어 지역 settings.php 파일 을 통해 php_sapi_name() == 'cli'내 데이터베이스와 같은 방랑에 memcache에 연결 문자열을 업데이트 :

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

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.