My company's network is using proxy. So when I use vagrant up
, it showed me a 401 permission error.
How can I do some setting to use vagrant?
My company's network is using proxy. So when I use vagrant up
, it showed me a 401 permission error.
How can I do some setting to use vagrant?
Install proxyconf:
vagrant plugin install vagrant-proxyconf
Configure your 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.*
is deprecated as of version 2.0 and has been replaced by config.proxy.*
. –
Tevis config.proxy.https = "https://yourproxy:8080"
is that https
or http
in the second line –
Cotoneaster NameError: undefined local variable or method 'config' for main:Object
–
Quadruped Vagrant.configure("2") do |config|
before these three lines and end
after them, to get it to work –
Quadruped If your proxy requires authentication it is better to set the environment variable rather than storing your password in the Vagrantfile. Also your Vagrantfile can be used by others easily who are not behind a proxy.
For Mac/Linux (in Bash)
export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf
then
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
For Windows use set instead of export.
set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf
then
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}
in the Mac/Linux instructions. –
Phototube Installing proxyconf will solve this, but behind a proxy you can't install a plugin simply using the command vagrant plugin install
, Bundler will raise an error.
set your proxy in your environment if you're using a unix like system
export http_proxy=http://user:password@host:port
or get a more detailed answer here: How to use bundler behind a proxy?
after this set up proxyconf
Auto detect your proxy settings and inject them in all your vagrant VM
install the proxy plugin
vagrant plugin install vagrant-proxyconf
add this conf to you private/user VagrantFile (it will be executed for all your projects) :
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
now up your VM !
vagrant reload
will fix, and could be best to detect proxy settings in/out automatically on connecting to new networks, and either alert the user, or make it seamlessly work. tmatilai.github.io/vagrant-proxyconf mentioned disabling, but not sure it addresses these points. –
Waist On a Windows host
open a CMD prompt;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
Substitute the address and port in the above snippets to whatever is appropriate for your situation. The above will remain set until you close the CMD prompt. If it works for you, consider adding them permanently to your environment variables so that you won't have to set them every time you open a new CMD prompt.
On windows, you must set a variable to specify proxy settings, download the vagrant-proxyconf plugin: (replace {PROXY_SCHEME}(http:// or https://), {PROXY_IP} and {PROXY_PORT} by the right values)
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
After that, you can add the plugin to hardcode your proxy settings in the vagrant file
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
and then you can provide config.proxy.xxx settings in your Vagrantfile to be independent against environment settings variables
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
src –
Meimeibers You will want to install the plugin proxyconf since this makes configuring the proxy for the guest machines pretty straight forward in the VagrantFile
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
However, there's quite a few things that could still go wrong. Firstly, you probably can't install vagrant plugins when behind the proxy. If that's the case you should download the source e.g. from rubygems.org and install from source
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
If you solve that problem you might have the fortune of being behind an NTLM proxy, which means that if you are using *nix on your guest machines then you still have some way to go, because NTLM authentication is not supported natively There are many ways of solving that. I've used CNTLM to solve tht part of the puzzle. It acts as glue between standard authorization protocols and NTLM
For a complete walk through, have a look at this blog entry about setting vagrant up behind a corporate proxy
vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
. Source –
Krawczyk plugin-source
to install from a local GEM, but I haven't managed to get this working yet on Windows. I am not sure if my syntax is wrong, like file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
? I have also tried the approach which @Krawczyk mentioned above, this also didn't work as it's still trying to contact rubygems in that case –
Quadruped vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
The key is --plugin-clean-sources
which causes it to not try to access rubygems –
Quadruped The question does not mention the VM Provider but in my case, I use Virtual Box under the same environment. There is an option in the Virtual Box GUI that I needed to enable in order to make it work. Is located in the Virtual Box app preferences: File >> Preferences... >> Proxy. Once I configured this, I was able to work without problems. Hope this tip can also help you guys.
If you actually do want your proxy configurations and plugin installations to be in your Vagrantfile, for example if you're making a Vagrantfile just for your corporate environment and can't have users editing environment variables, this was the answer for me:
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
(If you don't, just set them as environment variables like the other answers say and refer to them from env in config.proxy.http(s) directives.)
Some Special characters in the password create problem in proxy. Either escape them or avoid having special characters in password.
In PowerShell, you could set the http_proxy and https_proxy environment variables like so:
$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"
In MS Windows this works for us:
set http_proxy=< proxy_url >
set https_proxy=< proxy_url >
And the equivalent for *nix:
export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
© 2022 - 2024 — McMap. All rights reserved.
vagrant plugin install vagrant-proxyconf
. – Soandso