21
config.vm.define :web do |web_config|
    web_config.vm.box = "saucy"
    web_config.vm.host_name = "web"
    web_config.vm.network "private_network", ip:"192.168.100.10"
end

config.vm.define :db do |db_config|
    db_config.vm.box = "saucy"
    db_config.vm.host_name = "db"
    db_config.vm.network "private_network", ip:"192.168.100.20"
end

config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]
end

「db」と「web」という 2 つの VM を構成しました。VM ごとに異なるメモリ サイズを設定できますか?

4

4 に答える 4

31

2016-08-31: @DarkForce リクエストごとに Vagrantfile 全体を含めるように回答を更新しました。

これを行うには、各ブロックvm.provider内で定義を移動します。vm.defineたとえば、次の構成では、メモリーを「web」の場合は 2048MB、「db」の場合は 1024MB に設定します。

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

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.define :web do |web_config|
      web_config.vm.host_name = "web"
      web_config.vm.network "private_network", ip:"192.168.100.10"
      web_config.vm.provider :virtualbox do |vb|
          vb.customize ["modifyvm", :id, "--memory", "2048"]
          vb.customize ["modifyvm", :id, "--cpus", "2"]
      end
  end

  config.vm.define :db do |db_config|
      db_config.vm.host_name = "db"
      db_config.vm.network "private_network", ip:"192.168.100.20"
      db_config.vm.provider :virtualbox do |vb|
          vb.customize ["modifyvm", :id, "--memory", "1024"]
          vb.customize ["modifyvm", :id, "--cpus", "2"]
      end
  end
end

注: この例 (Vagrant ドキュメントの多くの例と同様) は、VirtualBox でのみ機能します。Vagrantfile を VMware または別のプロバイダーでも動作させたい場合は、カスタマイズ パラメーターを個別にリストします。例えば:

x.vm.provider "vmware_fusion" do |v|
  v.vmx["memsize"] = "3000"
end
x.vm.provider :virtualbox do |v|
  v.customize ["modifyvm", :id, "--memory", "3000"]
end
于 2014-06-06T14:26:38.760 に答える
8

最善の方法は、 http: //sysadm.pp.ua/linux/sistemy-virtualizacii/vagrantfile.html のようなハッシュの Ruby 配列を使用することです。次のように配列を定義できます。

    servers=[
      {
        :hostname => "web",
        :ip => "192.168.100.10",
        :box => "saucy",
        :ram => 1024,
        :cpu => 2
      },
      {
        :hostname => "db",
        :ip => "192.168.100.11",
        :box => "saucy",
        :ram => 2048,
        :cpu => 4
      }
    ]

次に、サーバー配列内の各項目を繰り返し、構成を定義します。

Vagrant.configure(2) do |config|
    servers.each do |machine|
        config.vm.define machine[:hostname] do |node|
            node.vm.box = machine[:box]
            node.vm.hostname = machine[:hostname]
            node.vm.network "private_network", ip: machine[:ip]
            node.vm.provider "virtualbox" do |vb|
                vb.customize ["modifyvm", :id, "--memory", machine[:ram]]
于 2015-11-18T20:16:31.890 に答える
7

Vagrant には、次の形式のメモリおよび CPU 設定の便利なショートカットもあります。

config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 2
end

したがって、あなたの場合、Web ボックスよりも 2 倍の CPU とメモリを DB ボックスに与えるには、次のようになります。

config.vm.define :web do |web_config|
    web_config.vm.box = "saucy"
    web_config.vm.host_name = "web"
    web_config.vm.network "private_network", ip:"192.168.100.10"
    web_config.vm.provider :virtualbox do |vb|
        vb.memory = 1024
        vb.cpus = 2
    end
end

config.vm.define :db do |db_config|
    db_config.vm.box = "saucy"
    db_config.vm.host_name = "db"
    db_config.vm.network "private_network", ip:"192.168.100.20"
    db_config.vm.provider :virtualbox do |vb|
        vb.memory = 2048
        vb.cpus = 4
    end
end
于 2015-06-28T11:06:36.563 に答える