2017-02-04 6 views
1

방랑과 함께 지어진 환경이 있습니다. 기본적으로 데이터베이스 VM 및 웹 서버 VM (둘 다 Ubuntu 서버 14.04). 웹 서버가 프로비저닝이 끝나면 데이터베이스 VM에서 일부 마이그레이션 (데이터베이스 변경)을 실행하고 싶습니다. 문제는 내 django App이 IP가 아닌 데이터베이스 서버의 이름으로 구성된다는 것입니다. 어쨌든 웹 서버 VM이 명시 적으로 IP를 설정할 필요없이 데이터베이스 VM을 볼 수있게 할 수 있습니까?방랑자 : 하나의 VM이 이름별로 다른 VM을 찾는 방법

Vagrantfile

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.define "db" do |db| 
    db.vm.box = "ubuntu/trusty64" 
    db.vm.hostname = 'db' 
    # Notice the IP is fixed. I rather not want to do it this way 
    db.vm.network "public_network", ip: "192.168.1.147", bridge: "wlan0" 

    db.vm.provider "virtualbox" do |vb| 
     vb.memory = "512" 
     vb.cpus = 1 
    end 

    config.vm.provision "ansible" do |ansible| 
     ansible.playbook = "playbook_db.yml" 
    end 
    end 

    config.vm.define "web" do |web| 
    web.vm.box = "ubuntu/trusty64" 
    web.vm.hostname = 'web' 
    web.vm.network "forwarded_port", guest: 8000, host: 8000 

    web.vm.provider "virtualbox" do |vb| 
     vb.memory = "512" 
     vb.cpus = 1 
    end 

    config.vm.provision "ansible" do |ansible| 
     ansible.playbook = "playbook_web.yml" 
    end 
    end 

end 

playbook_web.yml

--- 
- hosts: web 
    sudo: yes 
    tasks: 
    ... 
    - name: Adding DNS resolution for 'database' ... 
    shell: sed -i '1 i\192.168.1.147 database' /etc/hosts 
    ... 

답변

0

당신은 방랑의 프리미엄 등록 플러그인을 사용할 수 있습니다 여기에

내가 지금까지 찾은 유일한 솔루션입니다 : https://github.com/vagrant-landrush/landrush.

는 플러그인을 설치 한 후 사용하여 인스턴스에 대한 당신의 Vagrantfile에서 활성화 :이 인스턴스가 DNS를 통해 서로를 찾을 수

config.landrush.enabled = true 

따라서 정적 IP는 필요하지 않습니다. 호스트 시스템에서 인스턴스를 찾을 수 있으므로 호스트 시스템에서도 Anatile를 실행할 수 있습니다.

프리미엄 등록 플러그인의 기본 호스트 이름은 초래 vagrant.test의 도메인이 필요합니다

db.vm.hostname = 'db.vagrant.test' 

을하지만 당신은 Vagrantfile에서 config.landrush.tld = 'domain' 옵션을 변경할 수 있습니다.