2013-06-29 2 views
10

Vagrantfile을 조정하여 프로젝트 루트에 폴더가 없으면 자동으로 폴더를 만듭니다. 폴더를 만드는 것은 문제가되지 않지만 을 찾는 데 문제가 있습니다.을 사용하면 해당 폴더를 만들 수 있습니다.Vagrantfile 폴더 찾기

이 정보는 Vagrant::Environment 개체에 cwd으로 사용할 수 있지만이 정보는 내 Vagrantfile 내부에서 현재 인스턴스를 가져 오는 방법을 알 수 없습니다. 방랑자에 대한 문서는 약간 희박한 것으로 보입니다.

편집 :

내 질문이 인형을 사용하는 방법에 대한 없습니다. 나는 어떤 코드 안에 Vagrantfile 안에 쓰고있다. Vagrant::Environment의 현재 인스턴스를 얻는 방법을 알고 싶습니다. 기본적으로

+0

당신은 당신이 뭘 하려는지의 더 나은 예를 들어 줄 수 있습니까? –

+0

내가 호출하고 싶은 메소드를 언급했는데, 클래스의 현재 인스턴스를 얻는 방법을 모른다. –

답변

18

Vagrantfile 디렉토리가 Vagrantfile이 시도 찾으려면 :

vagrant_root = File.dirname(__FILE__) 
0

는, 루트 디렉토리는 '나는이 Vagrant::Environment 객체가 무엇인지 확실하지 않다 vagrant 사용자

exec { 'create folder': 
    cwd  => '/home/vagrant', 
    user => 'vagrant', 
    command => 'mkdir new_folder', 
    unless => "/usr/bin/test -d /home/vagrant/new_folder", 
    } 
+0

제 질문은 꼭두각시에 관한 것이 아닙니다. –

+0

'/ home/vagrant'가 VM에 있고, 일반적으로 Vagrantfile을 찾을 수있는 곳이 아닙니다. 나는 OP가 Vagrantfile이 호스트 머신의 ***에있는 디렉토리에 대해 묻고 있다고 생각한다. VM의 위치는 디렉토리 공유/동기화의 미덕으로 만 존재하기 때문이다. – iconoclast

0

를 사용하여 new_folder을 만들 수있는 예를 들어 여기에

/home/vagrant입니다 ... 문서화되지 않은 것 같다 ...

Vagrantfile과 동일한 디렉토리에 새 폴더를 만들려면 셸 공급자를 사용하십시오.

,
config.vm.provision :shell, :inline => "mkdir -p /vagrant/test_folder;" 

당신이 당신의 호스트 시스템에 Vagrantfile이 들어있는 폴더를 원하는 경우 다음 Vagrantfile이 퍼팅 시도 : 그래서 당신은 다음과 일을 시도 할 수 있습니다 ... 디렉토리를 인쇄해야

puts Dir.pwd 

그 변수.

+2

Dir.pwd는 루트 디렉토리에있는 경우 유행어 루트를 제공하지만 하위 디렉토리에있는 경우 해당 루트를 제공합니다. – patcon