2

vagrantで構築した環境があります。基本的にはデータベース VM と Web サーバー VM (どちらも Ubuntu サーバー 14.04) です。Web サーバーのプロビジョニングが終了したら、データベース VM でいくつかの移行 (データベースの変更) を実行したいと考えています。問題は、私の django アプリが IP ではなくデータベース サーバーの名前で構成されていることです。とにかく、IPを明示的に設定しなくても、Webサーバー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
  ...
4

0 に答える 0