1
我有一個用vagrant構建的環境。基本上是一個數據庫虛擬機和一個網絡服務器虛擬機(兩個Ubuntu服務器14.04)。當Web服務器在配置結束時,我想在數據庫虛擬機上運行一些遷移(數據庫更改)。問題是,我的django App配置了數據庫服務器的名稱而不是IP。無論如何,我可以使Web服務器虛擬機看到數據庫虛擬機,而不必明確設置它的IP?Vagrant:如何讓一個虛擬機按名稱找到另一個虛擬機
這裏是我到目前爲止發現的唯一解決辦法:
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
...