2012-08-10 3 views
1

현재 EC2 인스턴스를 일련의 인형극 스크립트로 변환 한 다음 Vagrant를 사용하여 로컬 개발을위한 장비를 가상화합니다.방황과 꼭두각시 사이에 호스트 파일을 공유하는 방법

나는 방랑벽에서 네트워크를 관리하고이를 생산에 매핑하는 데 어려움을 겪었습니다. 이 경우 web.pp 및 db.pp에서 다음

# Main Web Server 
config.vm.define :app do |app_config| 
    app_config.vm.host_name = "web1" 
    app_config.vm.network :hostonly, "10.0.0.2" 
    app_config.vm.box = "precise64" 

    ...etc 
     puppet.manifest_file = "persist/web.pp" 
end 

# First DB server 
config.vm.define :db1 do |db1_config| 
    db1_config.vm.host_name = "db1" 
    db1_config.vm.network :hostonly, "10.0.0.3" 
    db1_config.vm.box = "precise64" 
    ...etc 
     puppet.manifest_file = "persist/db.pp" 
end 

etc. 

합리적이다 단순히 그냥 설정 파이썬, uwsgi, nginx를가, MySQL은 등 그래서

:

먼저이 같은 뭔가를 문제 : 우리는 우리의 사이트의 DNS 및 EC2 인스턴스 DNS 레코드의 조합을 사용하여 생산에서

10.0.0.3 db1.X.com 
10.0.0.4 db2.X.com 
etc. 

: 나는 예를 puppet/modules/hosts/files/hosts에 대한 내부 필요는 뭔가를 지정해야 (나는 호스트에 넣을 수 없다). 일반적으로 우리의 haproxy 호스트는 공개 DNS 레코드를 가지고 있으며 호스트 파일을 사용할 수 없게 만드는 config에 EC2 이름을 보유합니다.

그래서 나는 꼭두각시와 방랑 모두 가져오고 같은 글로벌 매핑을 사용할 수있는 파일 만드는 방법 : 나는 또한 예를 haproxy.cfg위한 꼭두각시 템플릿 내에서 액세스 할 수 있지만

hosts = { 
     web => 10.0.0.2, 
     db1 => 10.0.0.3, 
     db2 => 10.0.0.4, 
} 

이 방랑 내에서 액세스를 파일 그래서 난 그것에 vm.network 설정할 수 있습니다.

제한 :

  • 은 IP 만, 꼭두각시 마스터 (이 하나 불행하게도 유연하지를) 사용할 수 없습니다 IP 또는 DNS
  • 하나에 상징적 인 이름이어야합니다 할 수 없습니다.
  • DNS 서버를 가상화하는 것은 너무 복잡해 보이므로 이드는 그렇지 않습니다.

또한 당신이 예 (좋을 것이다) 나 루비 문서를 통해 내 길을 찾을 수 있도록 충분히 그것을 설명하십시오 제공하는 경우 정말 새, 루비입니다.

답변

0

2 옵션 :

1) 당신은 방랑 당신이 그 콘텐츠를 사용 Vagrantfile를 생성 무엇이든) 및 DB,이 디렉토리의 배치 파일 (에서 표시 해시를 읽을 수 있습니다. 방글라데시의 설정은 그냥 루비 코드를 실행합니다. (그렇지 않을 경우)

2) 가변 스크립트 파일 및/또는 퍼핏 설정/정적 파일을 생성하는 셸 스크립트가 있습니다.

구현 세부 사항은 간단합니다.

관련 문제