【发布时间】:2015-06-09 09:00:00
【问题描述】:
我已经找到this关于如何将参数传递给 Vagrantfile 环境的问题,但它似乎不适用于 windows。事实上,如果我尝试运行:
SERV=client vagrant up
有了这个 Vagrantfile:
# -*- mode: ruby -*-
# # vi: set ft=ruby :
# Specify minimum Vagrant version and Vagrant API version
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
# Require YAML module
require 'yaml'
# Read YAML file with box details
servers = YAML.load_file('RaftFS/servers.yaml')
# Create boxes
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Create servers
# Iterate through entries in YAML file
if ENV['SERV'] != "client"
servers.each do |key,value|
if key == ENV['SERV']
config.vm.define key do |srv|
srv.vm.box = value['box']
#srv.vm.network "private_network", ip: value['ip']
if value['ip'] != ''
srv.vm.provision "shell", inline: "echo NO IP ADDRESS"
srv.vm.network :public_network, bridge:'wlan0'
else
srv.vm.network :public_network, ip:value['ip'] ,bridge:'wlan0'
srv.vm.provision "shell", inline: "echo IP FOUND FOR"
end
srv.vm.hostname=key
srv.vm.synced_folder ".", "/vagrant" , disabled:true
srv.vm.synced_folder "ServersFS/"+key+"/", "/vagrant/ServersFS" , create: true
srv.vm.synced_folder "./RaftFS", "/vagrant/RaftFS"
srv.vm.provision :shell do |shell|
shell.path = "provision.sh"
shell.args = "'TRUE'"
end
srv.vm.provider :virtualbox do |vb|
vb.name = key
vb.memory = value['ram']
end
end
end
end
else
config.vm.define "client" do |cln|
cln.vm.box = "hashicorp/precise32"
cln.vm.network :public_network, bridge:'wlan0', ip:"192.168.1.140"
cln.vm.hostname="client"
cln.vm.provision :shell do |shell|
shell.path = "provision.sh"
shell.args = "'FALSE'"
end
end
end
end
Windows 提示无法将 SERV=client 识别为有效命令。我很抱歉这个问题,但我对 Vagrant 和 Ruby 都是全新的(我通常在 Linux 上编程)!
【问题讨论】:
-
试试
set SERV=client -
我完全是个白痴,非常感谢!仅供像我这样对windwos不自信的人参考:该过程必须在两个不同的命令中完成:1)
set SERV=client2)vagrant up