如何在多个环境中使用Vagrant proxyconf

如何在多个环境中使用Vagrant proxyconf,proxy,vagrant,vagrant-windows,Proxy,Vagrant,Vagrant Windows,在工作中,我在一个代理服务器后面,通过vagrant proxyconf插件将vagrant配置为使用它。它工作得很好,没有任何问题或抱怨 Vagrant.configure(2) do |config| if Vagrant.has_plugin?("vagrant-proxyconf") config.proxy.http = "http://proxy.server.com:8080" config.proxy.https = "http://prox

在工作中,我在一个代理服务器后面,通过vagrant proxyconf插件将vagrant配置为使用它。它工作得很好,没有任何问题或抱怨

Vagrant.configure(2) do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.http      = "http://proxy.server.com:8080"
    config.proxy.https     = "http://proxy.server.com:8080"
    config.proxy.no_proxy  = "localhost, 127.0.0.1"
  else
    raise Vagrant::Errors::VagrantError.new, "Plugin missing: vagrant-proxyconf"
  end

我遇到的问题是当我把电脑带回家做一些工作时。有没有办法轻松关闭代理设置?

您可以通过添加

config.proxy.enabled = false 
但您需要编辑该文件以进行更改(true/false标志)。如果已经使用了外部配置文件,但仍需要进行文件编辑,则也可以使用外部配置文件

我将根据以下内容进行尝试:

vagrant true/false up
# -*- mode: ruby -*-
# vi: set ft=ruby :

proxy_val = ARGV[0]

Vagrant.configure(2) do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.enabled   = proxy_val
    if (proxy_val) 
      config.proxy.http      = "http://proxy.server.com:8080"
      config.proxy.https     = "http://proxy.server.com:8080"
      config.proxy.no_proxy  = "localhost, 127.0.0.1"
    else
      config.proxy.http      = ""
      config.proxy.https     = ""
      config.proxy.no_proxy  = ""
  else
    raise Vagrant::Errors::VagrantError.new, "Plugin missing: vagrant-proxyconf"
  end
在你的档案里

# -*- mode: ruby -*-
# vi: set ft=ruby :

proxy_val = ARGV[0]

Vagrant.configure(2) do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.enabled   = proxy_val
    config.proxy.http      = "http://proxy.server.com:8080"
    config.proxy.https     = "http://proxy.server.com:8080"
    config.proxy.no_proxy  = "localhost, 127.0.0.1"
  else
    raise Vagrant::Errors::VagrantError.new, "Plugin missing: vagrant-proxyconf"
  end
如果你有一些ruby技能,你甚至可以想出更好的东西,但这给了你一个想法

注意:即使禁用了代理,代理值仍然按照

此禁用将保留服务器上应用程序的代理配置 客人。如果需要,在禁用之前必须清除配置

因此,使用上述建议的另一种可能性是

vagrant true/false up
# -*- mode: ruby -*-
# vi: set ft=ruby :

proxy_val = ARGV[0]

Vagrant.configure(2) do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.enabled   = proxy_val
    if (proxy_val) 
      config.proxy.http      = "http://proxy.server.com:8080"
      config.proxy.https     = "http://proxy.server.com:8080"
      config.proxy.no_proxy  = "localhost, 127.0.0.1"
    else
      config.proxy.http      = ""
      config.proxy.https     = ""
      config.proxy.no_proxy  = ""
  else
    raise Vagrant::Errors::VagrantError.new, "Plugin missing: vagrant-proxyconf"
  end

谢谢你的回答,我稍后再试试。如果你有时间,我还有一个问题要问你。如果我在vagrant文件中将网络配置为公共网络,那么这不应该是我的主机连接的背驮吗?(config.vm.network“public_network”)我尝试了这个,但它不起作用,所以我想我可能误解了什么。我只是尝试了你的建议,发现它已经成功了一半。proxy.enable启用/禁用插件,但不会覆盖它设置的代理值。相反,我要做的是像您建议的那样将一个参数传递到shell脚本provisioner中,然后根据false是否为true,设置代理(config.proxy.http=“”)或取消设置代理(config.proxy.http=“”)。如果您编辑您的答案,您会将其标记为已接受。谢谢Dan,我进行了相应的编辑-回到附加问题,我不太清楚您的意思-您应该能够从同一网络上的任何计算机访问您的VM,如果这是您的意思,那么在这个主题上已经有问题了