前一篇文章提到幾種基本的 Vagrantfile
這篇來看看進階的
假設我們想要建立兩個 vm ,分別用做 webserver 和 db server,
請看說明的 comment
# Example 6
domain = 'example.com'
# 宣告一個 nodes 陣列,包含兩個物件
nodes = [
{ :hostname => 'ex6web', :ip => '192.168.0.42', :box => 'precise32' },
{ :hostname => 'ex6db', :ip => '192.168.0.43', :box => 'precise32', :ram => 512 }
]
Vagrant::Config.run do |config|
# 利用 node 陣列建立兩個 VM
# each method 就像是 loop,對 nodes 中的兩個物件做 iteration
nodes.each do |node|
# config.vm.define 是當你要在 vagrantfile 中定義超過
# 兩個 vm 時必須使用的寫法,
# 在這個例子中,定義了兩個vm, ex6web 和 ex6db
config.vm.define node[:hostname] do |node_config|
node_config.vm.box = node[:box]
node_config.vm.host_name = node[:hostname] + '.' + domain
node_config.vm.network :hostonly, node[:ip]
# 假設有定義 ram 的值, memory = ram 的值
# 若無,則設為 256
memory = node[:ram] ? node[:ram] : 256;
node_config.vm.customize [
'modifyvm', :id,
'--name', node[:hostname],
'--memory', memory.to_s
]
end
end
end