多环境下如何使用Vagrant-proxyconf

How to use Vagrant-proxyconf in multiple environments

在工作中,我在代理服务器后面,并已将 vagrant 配置为通过 vagrant-proxyconf 插件使用它。效果很好,没有任何问题或投诉。

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 

添加到您的 Vagrantfile,但您需要编辑文件以进行更改(true/false 标志)。你也可以使用外部配置文件,如果你已经有了,但它仍然需要一个文件编辑

基于我会尝试的是

vagrant true/false up

并在您的 Vagrantfile 中

# -*- 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 技能,你甚至可以想出更好的东西,但这会给你一个想法

注意 即使代理被禁用,代理值仍然按照 doc

中提到的设置

This disabling keeps proxy configurations for applications on the guest. The configurations must be cleared before disabling if needed.

所以使用上述建议的另一种可能性是做类似

的事情
# -*- 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