2016-06-27 8 views
2

가상 머신에 Vagrant를 사용 중이며 프로덕션 환경을 시도하고 테스트하기 위해 자체베이스 박스를 만들고 싶습니다.``metadata.json` 파일을 사용하여 VMware Fusion으로 만든 Vagrant 상자의 버전을 어떻게 설정합니까?

VMware Fusion Pro 8.1.1을 사용하여 일반 데비안 기본 상자를 만들고 상자를 add까지 만들었지 만 상자 metadata.json을 사용하여 버전 번호를 설정하고 싶습니다. 나는 유일한 필수 키가 "provider"입니다 vagrant doc에 읽고, 그 잘 작동하지만 vagrant box list 내가 v0

work-debian7-11-64    (vmware_fusion, 0) 

을 얻을 때 나는 업데이트 metadata.json 파일을 다시 시도 제거 할 때 나는 그것을 볼 수 있습니다.

$ vagrant box remove work-debian7-11-64 
Removing box 'work-debian7-11-64' (v0) with provider 'vmware_fusion'... 

나는 설명서를 따라 같은 "version":"0.1.0" 것을 사용하는 경우 : 나는 add 상자에 갈 때

{ 
    "name": "hashicorp/precise64", 
    "description": "This box contains Ubuntu 12.04 LTS 64-bit.", 
    "versions": [ 
    { 
     "version": "0.1.0", 
     "providers": [ 
     { 
      "name": "virtualbox", 
      "url": "http://somewhere.com/precise64_010_virtualbox.box", 
      "checksum_type": "sha1", 
      "checksum": "foo" 
     } 
     ] 
    } 
    ] 
} 

내가 오류와 끝까지합니다.

{ 
    "name": "workalicious/debian7-11-64", 
    "description": "Debian 7.11.0 64-bit web server.", 
    "versions": [{ 
    "version": "0.1.0", 
    "providers": [{ 
     "name": "vmware_fusion" 
     }] 
    }] 
} 

그것은 내가 잘못하고있어 뭔가가 있는지 궁금 해요 :이 출력의 일부입니다

$ vagrant box add work-debian7-11-64 debian-7.11-64.vmware.box 
==> box: Box file was not detected as metadata. Adding it directly... 
==> box: Adding box 'work-debian7-11-64' (v0) for provider: 
    box: Unpacking necessary files from: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/debian-7.11-64.vmware.box 
/opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/box_collection.rb:155:in `block (3 levels) in add': undefined method `to_sym' for nil:NilClass (NoMethodError) 

이 내 metadata.json 파일입니다 (이것은 from 더 세부 계속) metadata.json의 형식? provider 키만 사용하면 box add 키는 오류없이 작동합니다. 나는 Altas와 Packer가 있다는 것을 알고 있지만, 나는 이것을 지역적으로 시도하고 싶었다.

답변

3

매우 천천히 Vagrant doc을 읽은 후에 나는 더 나은 이해를하고 있다고 생각합니다.

제공자가 적어도 .box 인 metadata.json 파일을 포함해야합니다. 필수 항목입니다.

아카이브 내에서 Vagrant는 단일 파일 인 metadata.json을 기대합니다. 위의 상자 카탈로그 메타 데이터 구성 요소와 완전히 관련이없는 JSON 파일입니다. 하나의 메타 데이터 JSON 문서는 동일한 상자의 여러 버전을 기술 할 수 있지만 상자 파일 내에는 상자 파일 하나당 하나의 metadata.json 만 존재합니다.

metadata.json에는 상자가있는 공급자와 함께 "공급자"키가 있어야합니다. 방랑 사는 상자의 공급자를 확인하기 위해이 방법을 사용합니다. 당신의 상자가 버추얼 위해 인 경우 예를 들어, metadata.json는 다음과 같이 보일 것이다 :

// metadata.json inside of WorkaliciousDebian7-64-nogui.vmwarevm 
{ 
    "provider": "vmware_fusion" 
} 

더 metadata.json 파일이없는 경우 또는 파일이 최소한으로 유효한 JSON을 포함하지 않는 공급자를 확인할 수 없으므로 "공급자"키를 누른 경우 상담원이 상자를 추가 할 때 오류가 발생합니다.

다른 키/값이 문제없이 메타 데이터에 추가 될 수 있습니다. 메타 데이터 파일의 값은 Vagrant에 불투명하게 전달되며 플러그인은이를 사용할 수 있습니다. 이 시점에서 Vagrant 코어는이 파일에서 다른 키를 사용하지 않습니다.1 부 (BOX 파일)는 .vmwarevm 디렉토리 내부 metadata.json 파일의

. Part 2 (BOX METADATA)는 이름, 버전, URL, 체크섬 및 기타 키와 함께 metadata.json 파일을 가지고 있습니다 ... 문서에서 :

메타 데이터는 상자의 선택적 구성 요소입니다 권장 사항). 단일 파일에서 버전 관리, 업데이트, 여러 제공 업체 등을 사용할 수 있습니다. 이제 vagrant box add시 참조 할 수있는 상자 metadata.json가 있다는

// get the checksum 
$ md5 debian-7.11-64.vmware.box 
MD5 (debian-7.11-64.vmware.box) = f1a2b7982031a1e53c1e39011f8d5f37 

// metadata.json file used with the vagrant box add 
{ 
    "name": "workalicious/debian71164", 
    "description": "Debian 7.11.0 64-bit web server.", 
    "versions": [ 
    { 
     "version": "0.1.0", 
     "providers": [ 
     { 
      "name": "vmware_fusion", 
      "url": "file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/debian-7.11-64.vmware.box", 
      "checksum_type": "md5", 
      "checksum": "f1a2b7982031a1e53c1e39011f8d5f37" 
     } 
     ] 
    } 
    ] 
} 

.

$ vagrant box add metadata.json --provider vmware_fusion 
==> box: Loading metadata for box 'metadata.json' 
    box: URL: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/metadata.json 
==> box: Adding box 'workalicious/debian71164' (v0.1.0) for provider: vmware_fusion 
    box: Unpacking necessary files from: file:///Users/dave/Code/code_resources/vagrant_examples/vagrant-bird-box-vmware-debian-nodesktop/debian-7.11-64.vmware.box 
    box: Calculating and comparing box checksum... 
==> box: Successfully added box 'workalicious/debian71164' (v0.1.0) for 'vmware_fusion'! 

아마도 다른 사람이 같은 종류의 작업 과정을 수행하는 데 도움이됩니다.

+0

참고로, 'vagrant box add'에 전달할 json 파일에는 원하는 이름을 사용할 수 있습니다. – tectux