Vagrant 使用循环优化流浪文件代码
我有一个流浪者文件,它让我能够在VirtualBox中运行Win7和Win8操作系统Vagrant 使用循环优化流浪文件代码,vagrant,vagrantfile,Vagrant,Vagrantfile,我有一个流浪者文件,它让我能够在VirtualBox中运行Win7和Win8操作系统 Vagrant.configure("2") do |config| # Win7 VM config.vm.define "win7" do |win7| win7.vm.box_url = "file:///C:/V_W_S/windows_7_virtualbox.box" win7.vm.box = "windows_7_virtualbox" win7.vm.comm
Vagrant.configure("2") do |config|
# Win7 VM
config.vm.define "win7" do |win7|
win7.vm.box_url = "file:///C:/V_W_S/windows_7_virtualbox.box"
win7.vm.box = "windows_7_virtualbox"
win7.vm.communicator = "winrm"
win7.vm.boot_timeout = 600
win7.vm.graceful_halt_timeout = 600
win7.vm.network "public_network", auto_config: true
win7.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--usb", "on"]
vb.customize ["modifyvm", :id, "--usbehci", "on"]
vb.customize ["modifyvm", :id, "--accelerate3d", "on"]
vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 'SmartCard', '--vendorid', '0x096E', '--productid', '0x0007']
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--vram", "256"]
vb.cpus = 2
vb.gui = true
vb.name = "Win_7_x64_Mult"
end
end
# Windows 8 VM
config.vm.define "win8" do |win8|
win8.vm.box_url = "file:///C:/V_W_S/Windows8_x64.box"
win8.vm.box = "Windows8_x64"
win8.vm.communicator = "winrm"
win8.vm.boot_timeout = 600
win8.vm.graceful_halt_timeout = 600
win8.vm.network "public_network", auto_config: true
win8.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--usb", "on"]
vb.customize ["modifyvm", :id, "--usbehci", "on"]
vb.customize ["modifyvm", :id, "--accelerate3d", "on"]
vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 'SmartCard', '--vendorid', '0x096E', '--productid', '0x0007']
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--vram", "256"]
vb.cpus = 2
vb.gui = true
vb.name = "Win_8_x64_Mult"
end
end
end
但我希望使用循环来最小化代码量。例如,在我的vagrant文件
config
中,值是相同的。区别是win.vm.define值、win.vm.box和win7.vm.box\u url值。我怎样才能压缩流浪汉的数量?我会这样做
Vagrant.configure("2") do |config|
config.vm.communicator = "winrm"
config.vm.boot_timeout = 600
config.vm.graceful_halt_timeout = 600
config.vm.network "public_network", auto_config: true
# Win7 VM
config.vm.define "win7" do |win7|
win7.vm.box_url = "file:///C:/V_W_S/windows_7_virtualbox.box"
win7.vm.box = "windows_7_virtualbox"
configure_provider(win7, "Win_7_x64_Mult")
end
# Windows 8 VM
config.vm.define "win8" do |win8|
win8.vm.box_url = "file:///C:/V_W_S/Windows8_x64.box"
win8.vm.box = "Windows8_x64"
configure_provider(win8, "Win_8_x64_Mult")
end
end
def configure_provider (node, node_name)
node.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--usb", "on"]
vb.customize ["modifyvm", :id, "--usbehci", "on"]
vb.customize ["modifyvm", :id, "--accelerate3d", "on"]
vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 'SmartCard', '--vendorid', '0x096E', '--productid', '0x0007']
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--vram", "256"]
vb.cpus = 2
vb.gui = true
vb.name = node_name
end
end
- 处于
级别的所有内容都适用于您的所有机器(读取)config.
- 只需定义一个ruby函数来应用您的提供者设置