我公司的网络正在使用代理。因此,当我使用时vagrant up
,它显示了401权限错误。
我该如何做一些设置才能使用流浪汉?
vagrant plugin install vagrant-proxyconf
。现在我知道了。
我公司的网络正在使用代理。因此,当我使用时vagrant up
,它显示了401权限错误。
我该如何做一些设置才能使用流浪汉?
vagrant plugin install vagrant-proxyconf
。现在我知道了。
Answers:
安装proxyconf:
vagrant plugin install vagrant-proxyconf
配置您的Vagrantfile:
config.proxy.http = "http://yourproxy:8080"
config.proxy.https = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
config.env_proxy.*
自2.0版起已弃用,并已由取代config.proxy.*
。
config.proxy.https = "https://yourproxy:8080"
是第二行https
还是http
在第二行
如果您的代理服务器需要身份验证,最好设置环境变量,而不是将密码存储在Vagrantfile中。此外,您的Vagrantfile可以被不位于代理后面的其他人轻松使用。
对于Mac / Linux(在Bash中)
export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf
然后
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
对于Windows,请使用set而不是export。
set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf
然后
set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
export VAGRANT_HTTPS_PROXY=${https_proxy}
在Mac / Linux说明中忘记了(?)。
安装proxyconf将解决此问题,但是在代理后面,您不能仅使用命令安装插件vagrant plugin install
,Bundler会引发错误。
如果您使用的是类似Unix的系统,请在您的环境中设置代理
export http_proxy=http://user:password@host:port
或在此处获得更详细的答案:如何在代理后面使用捆绑程序?
设置完proxyconf之后
自动检测您的代理设置并将其注入所有无用的VM中
安装代理插件
vagrant plugin install vagrant-proxyconf
将此conf添加到您的私有/用户VagrantFile(将对您的所有项目执行):
vi $HOME/.vagrant.d/Vagrantfile
Vagrant.configure("2") do |config|
puts "proxyconf..."
if Vagrant.has_plugin?("vagrant-proxyconf")
puts "find proxyconf plugin !"
if ENV["http_proxy"]
puts "http_proxy: " + ENV["http_proxy"]
config.proxy.http = ENV["http_proxy"]
end
if ENV["https_proxy"]
puts "https_proxy: " + ENV["https_proxy"]
config.proxy.https = ENV["https_proxy"]
end
if ENV["no_proxy"]
config.proxy.no_proxy = ENV["no_proxy"]
end
end
end
现在启动您的VM!
vagrant reload
,并且可以解决单个问题,并且最好是在连接到新网络时自动检测代理设置的输入/输出,并警告用户或使其无缝运行。 tmatilai.github.io/vagrant-proxyconf提到了禁用,但不确定是否解决了这些问题。
在Windows上,您必须设置一个变量以指定代理设置,然后下载vagrant-proxyconf插件:(用正确的值替换{PROXY_SCHEME}(http://或https://),{PROXY_IP}和{PROXY_PORT})
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
之后,您可以添加插件以在流浪者文件中对代理设置进行硬编码
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
然后您可以在Vagrantfile中提供config.proxy.xxx设置以独立于环境设置变量
您将需要安装插件proxyconf,因为这可以在VagrantFile中直接配置来宾计算机的代理
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
但是,仍有很多事情可能会出错。首先,您可能无法在代理后面安装无业游民的插件。如果是这种情况,您应该从rubygems.org下载源代码并从源代码安装
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
如果您解决了该问题,那么您可能有幸成为NTLM代理的支持者,这意味着,如果您在来宾计算机上使用* nix,那么您还有很多路要走,因为NTLM身份验证本身不受支持。解决这个问题。我已经使用CNTLM解决了这一难题。它充当标准授权协议和NTLM之间的粘合剂
vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
。资料来源
plugin-source
从本地GEM安装的好主意,但我还没有设法在Windows上使其正常工作。我不确定我的语法是否错误,例如file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
?我还尝试了@Martin上面提到的方法,但这种方法也没有用,因为它仍在尝试与rubygems联系
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
关键是--plugin-clean-sources
导致它不尝试访问rubygems
如果您确实希望将代理配置和插件安装放在Vagrantfile中,例如,如果要为公司环境制作Vagrantfile,而又不能让用户编辑环境变量,那么这就是我的答案:
ENV['http_proxy'] = 'http://proxyhost:proxyport'
ENV['https_proxy'] = 'http://proxyhost:proxyport'
# Plugin installation procedure from http://stackoverflow.com/a/28801317
required_plugins = %w(vagrant-proxyconf)
plugins_to_install = required_plugins.select { |plugin| not Vagrant.has_plugin? plugin }
if not plugins_to_install.empty?
puts "Installing plugins: #{plugins_to_install.join(' ')}"
if system "vagrant plugin install #{plugins_to_install.join(' ')}"
exec "vagrant #{ARGV.join(' ')}"
else
abort "Installation of one or more plugins has failed. Aborting."
end
end
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.proxy.http = "#{ENV['http_proxy']}"
config.proxy.https = "#{ENV['https_proxy']}"
config.proxy.no_proxy = "localhost,127.0.0.1"
# and so on
(如果不这样做,则像其他答案一样将它们设置为环境变量,并在config.proxy.http(s)指令中从env引用它们。)