Vagrant 멀티 머신 기능은 매우 멋지다. 그러나 나를 귀찮게하는 것은 바로 "부모"Vagrantfile과 "부모"Vagrantfile 사이에 구성 옵션을 공유하는 좋은 방법이 아닌 것 같다. 아이들 "Vagrantfiles. 부모와 자녀 사이에 구성 옵션을 효율적으로 유지 관리 할 수있는 방법이 있습니까? 예를 들어보다 명확하게 할 수 있습니다.다른 Vagrantfile에서 Vagrantfile 구성을로드 할 수 있습니까?
API, 웹 및 Worker의 3 가지 앱/서비스로 구성된 플랫폼이 있다고 가정 해 보겠습니다.
는의 다음의 디렉토리 구조를 가정하자 :
Vagrant.configure("2") do |config|
config.vm.box = "debian/jessie64"
end
아마도 웹과 노동자 Vagrantfiles이 유사 :
/some_platform
/api
# app code...
Vagrantfile
/web
# app code...
Vagrantfile
/worker
# app code...
Vagrantfile
Vagrantfile
이의이
/some_platform/api/Vagrantfile
의 모습을 가정 해 봅시다.
처럼
지금, 이러한 VM을 조정하고 /some_platform/Vagrantfile
나는 방랑에 의존하는 멀티 기계의 경이로움을 사용하여 보이는 :이 예는 인위적인 실감
Vagrant.configure("2") do |config|
config.vm.define "web" do |api|
api.vm.box = "debian/jessie64"
end
config.vm.define "web" do |web|
web.vm.box = "debian/jessie64"
end
config.vm.define "web" do |worker|
worker.vm.box = "debian/jessie64"
end
end
, 그러나 당신이 더 일단 방법을 쉽게 알 수 그리고 더 복잡한 설정 선언은 두 곳에서 설정을 복제하는 것이 짜증나고 위험합니다.
"왜 각 프로젝트마다 Vagrantfile이 있습니까?"라는 궁금증이 생길 수 있습니다. 그렇게하면 서버가 실행되는 서버가 어떻게 설정되어야하는지에 대한 진실의 단일 소스가 제공됩니다. 당신이 사용할 수있는 프로 그래머가 있다는 것을 나는 깨닫는다. (그리고 나는 그것들을 사용할 것이다.)하지만 당신은 여전히 그 밖의 다른 것들을 선언해야한다. 나는 DRY를 유지하여 Multi- 머신을 사용하거나 단일 응용 프로그램에서 작업하고 VM/서버 설정을 변경할 수 있습니다.
내가 좋아할만한 것은 다른 Vagrantfiles를 "상위"파일로 병합하는 방법입니다.
그럴 수 있습니까? 또는 나는 시험에 미쳤다? 이것을 달성하는 방법에 대한 영리한 아이디어? 이 문제를 해결하기 위해 yaml 파일과 PORO를 망연판에 썼지 만, 해킹 중 아무 것도 매우 만족스럽지 않습니다.