【问题标题】:How to use Vagrant-proxyconf in multiple environments如何在多个环境中使用 Vagrant-proxyconf
【发布时间】:2015-11-19 06:07:06
【问题描述】:

在工作中,我在代理服务器后面,并已将 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

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

【问题讨论】:

    标签: proxy vagrant vagrant-windows


    【解决方案1】:

    您可以通过添加关闭代理

    config.proxy.enabled = false 
    

    到您的 Vagrantfile,但您需要编辑文件以进行更改(真/假标志)。如果您已经拥有外部配置文件,您也可以使用它,但它仍然需要文件编辑

    我会根据this answer 尝试类似

    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
    

    如果你有一些红宝石技能,你甚至可以想出更好的东西,但这会给你一个想法

    注意事实证明,即使代理被禁用,代理值仍然按照doc中提到的那样设置

    此禁用会保留应用程序的代理配置 来宾。如果需要,必须在禁用之前清除配置。

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

    # -*- 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 脚本配置器,然后根据是否为真,设置代理 (config.proxy.http="proxy.server.com:8080") 或取消设置它们 (config .proxy.http = "")。如果您编辑您的答案,您将把它标记为已接受。
    • 谢谢丹,我进行了相应的编辑 - 回到附加问题,我不太清楚你的意思 - 你应该能够从同一网络上的任何机器访问你的虚拟机,有如果这就是你的意思,那么已经对这个主题提出了问题
    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多