【问题标题】:Vagrant: passing parameters in windowsVagrant:在窗口中传递参数
【发布时间】: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

标签: ruby vagrant


【解决方案1】:

所以我也偶然发现了这个问题。要将参数从命令提示符传递到 Vagrantfile,它应该作为环境变量传递,您可以在一行中完成:

set "SERV=client" && vagrant up

在 Vagrantfile 中,您可以通过 ENV['SERV'] 访问参数

请注意,在 vagrant 完成后,环境变量仍将存在于环境中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多