귀하의 질문을 다시 읽은 후, 귀하는 저와는 조금 다른 것을 시도하고있는 것 같습니다. 그러나 우리의 최종 목표는 같습니다.
기본 박스를 호스팅하기 위해 Vagrant Cloud 서비스를 사용하고 싶지 않지만 개발 환경을 개발자 팀에 배포하고 metadata.json
파일 기능을 사용 하여 개발 환경의 버전 관리 시스템을 유지하고 싶습니다 . 그런 다음 방랑자에 내장 된 시설을 사용하여 개발 팀에서 사용할 수있게됩니다.
이 글을 쓰는 시점 (2014 년 5 월 5 일) 당시에는이 영역에서 방랑 한 문서가 드문 편이지만 아마도 새로운 기능이기 때문에 VagrantCloud에 유료 계층이 있다는 사실도 확신합니다. .
metadata.json
파일 을 사용하여 상자를 버전 화하고 배포 하는 방법을 알아보기 위해 VagrantCloud에서 사용 가능한 일부 VM을 살펴 보았습니다. 그것들을 살펴보고 방랑자 코드를 읽은 후-내 목표를 달성하는 방법을 알아내는 것이 매우 쉬워졌습니다.
- 평소대로 상자를 포장하십시오. 필자의 경우 개발자가 Vm을 실행하는 데 사용하기 때문에 가상 상자 전용 패키징입니다. 또한 개발 환경에 대한 일부 프로비저닝 (적절한 폴더에 대한 공유 설정, 일부 기본 아파치 구성, 오류 로깅 등)을 수행하는베이스 박스로 Vagrantfile을 패키지합니다.
metadata.json
기본 상자를 설명 하는 파일을 작성하면 다음과 유사합니다.
{
"description": "long box description",
"short_description": "short box description",
"name": "company/developer-environment",
"versions": [{
"version": "1",
"status": "active",
"description_html": "<p>Dev Environment</p>",
"description_markdown": "Dev Environment",
"providers": [{
"name": "virtualbox",
"url": "http:\/\/vagrant.domain.local/dev/company-developer-environment-1.box"
}]
}]
}
metadata.json
파일을 만든 후에는 내부 네트워크에서 실행되는 로컬 서버 ( vagrant.domain.local/metadata.json
) 에 파일을 업로드했습니다 . 내가 그 일을 한 후에, 남은 것은 모두 그것을 방랑자로 테스트하는 것입니다.
# add the box to vagrant using the definition from metadata.json
# (the box is actually downloaded here, so it can take a minute...or 10)
$ vagrant box add http://vagrant.domain.local/dev/metadata.json
# init the box (this creates a .vagrant folder and a Vagrantfile in the cwd with the appropriate box name)
$ vagrant init company/developer-environment
# boot the box
$ vagrant up
원격 클라우드 호스팅, 공유 및 버전 관리 개인 박스 인 Voila는 Vagrant Cloud를 사용할 필요가 없습니다.
새 버전의 상자를 만들면 패키지를 만들어 metadata.json
파일을 편집 합니다. 내가 알 수 있듯이 시맨틱 버전 관리 (1.0.0, 1.0.1 등) 또는 버전 (1, 2, 3 등)에 대한 간단한 정수로 원하는 버전 관리 체계를 사용할 수 있습니다. 박스 사용자가 vagrant up
vagrant가 자동으로 metadata.json 파일에서 새 버전을 확인 vagrant box update
하면 박스를 업데이트 하라는 메시지가 표시 됩니다.
상자 이름과 상자 URL을 사용하여 기본 Vagrantfile을 정의하여 비트 vagrant box add <metadata.json url>
와 vagrant init
비트를 건너 뛸 수도 있습니다 .
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "company/developer-environment"
config.vm.box_url = "https://vagrant.domain.local/dev/metadata.json"
end
해당 내용으로 Vagrantfile을 배포 할 수 있으며 모든 사용자는 vagrant up
. 그러나 버전이 업데이트 될 때 어떻게 작동하는지 잘 모르겠습니다.