iT邦幫忙

DAY 5
0

用Packer, Vagrant和Salt秒殺你的環境建置系列 第 5

Day 5 - Vagrantfile(2)

前一篇文章提到幾種基本的 Vagrantfile

這篇來看看進階的

假設我們想要建立兩個 vm ,分別用做 webserver 和 db server,

請看說明的 comment

source code

# 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

上一篇
Day 4 - vagrantfile (1)
下一篇
Day 6 - Vagrantfile(3) and Provision
系列文
用Packer, Vagrant和Salt秒殺你的環境建置16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言