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
2つのVM、「db」と「web」を設定しています。 VMごとに異なるメモリサイズを設定できますか?
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
最善の方法は、Rubyこのようなハッシュの配列- http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrantfile.html を使用することです。次のように配列を定義できます:
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
}
]
次に、server配列の各項目を反復して、構成を定義します。
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]]
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
上記のソリューションを使用してみましたが、私の環境ではすべてのメモリ設定が同じであることがわかりました。コードスニペットに小さなタイプミスがあるようです。config.vm.provider ...
を使用せずに、<yourConfigVariable>.vm.provider...
を使用してマシン依存の値を設定してください。
正しいコードは次のようになります。
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.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--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.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
end