前一篇文章提到幾種基本的 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