A rede da minha empresa está usando proxy. Então, quando eu uso vagrant up
, ele me mostrou um erro de permissão 401.
Como posso fazer algumas configurações para usar o vagrant?
vagrant plugin install vagrant-proxyconf
. Agora eu sei .
A rede da minha empresa está usando proxy. Então, quando eu uso vagrant up
, ele me mostrou um erro de permissão 401.
Como posso fazer algumas configurações para usar o vagrant?
vagrant plugin install vagrant-proxyconf
. Agora eu sei .
Respostas:
Instale o proxyconf:
vagrant plugin install vagrant-proxyconf
Configure seu 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.*
está obsoleto a partir da versão 2.0 e foi substituído por config.proxy.*
.
config.proxy.https = "https://yourproxy:8080"
é isso https
ou http
na segunda linha
Se o seu proxy requer autenticação, é melhor definir a variável de ambiente ao invés de armazenar sua senha no Vagrantfile. Além disso, seu Vagrantfile pode ser usado facilmente por outras pessoas que não estejam atrás de um proxy.
Para Mac / Linux (em Bash)
export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf
então
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
Para Windows, use definir em vez de exportar.
set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf
então
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}
nas instruções do Mac / Linux.
Instalar o proxyconf resolverá isso, mas atrás de um proxy você não pode instalar um plugin simplesmente usando o comando vagrant plugin install
, o Bundler irá gerar um erro.
defina seu proxy em seu ambiente se você estiver usando um sistema semelhante ao unix
export http_proxy=http://user:password@host:port
ou obtenha uma resposta mais detalhada aqui: Como usar o bundler atrás de um proxy?
depois de configurar o proxyconf
Detecte automaticamente suas configurações de proxy e injete-as em todas as suas VMs vagrant
instale o plugin proxy
vagrant plugin install vagrant-proxyconf
adicione esta configuração ao seu usuário privado / VagrantFile (ela será executada para todos os seus projetos):
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
agora sua VM!
vagrant reload
será corrigida, e pode ser melhor para detectar configurações de proxy de entrada / saída automaticamente ao se conectar a novas redes e alertar o usuário ou fazer com que funcione perfeitamente. tmatilai.github.io/vagrant-proxyconf mencionou a desativação, mas não tenho certeza se aborda esses pontos.
Em um host Windows
abrir um prompt CMD;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
Substitua o endereço e a porta nos snippets acima pelo que for apropriado para sua situação. O acima permanecerá definido até que você feche o prompt do CMD. Se funcionar para você, considere adicioná-los permanentemente às variáveis de ambiente para que você não precise defini-los toda vez que abrir um novo prompt CMD.
No Windows , você deve definir uma variável para especificar as configurações de proxy, faça download do plug-in vagrant-proxyconf: (substitua {PROXY_SCHEME} (http: // ou https: //), {PROXY_IP} e {PROXY_PORT} pelos valores corretos)
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
Depois disso, você pode adicionar o plug-in para codificar suas configurações de proxy no arquivo vagrant
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
e então você pode fornecer configurações config.proxy.xxx em seu Vagrantfile para ser independente das variáveis de configuração de ambiente
Você desejará instalar o plugin proxyconf, pois isso torna a configuração do proxy para as máquinas convidadas bastante simples no VagrantFile
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
No entanto, há algumas coisas que ainda podem dar errado. Em primeiro lugar, você provavelmente não pode instalar plug-ins vagrant quando está atrás do proxy. Se for esse o caso, você deve baixar a fonte, por exemplo, de rubygems.org e instalar a partir da fonte
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
Se você resolver esse problema, você pode ter a sorte de estar atrás de um proxy NTLM, o que significa que se você estiver usando * nix em suas máquinas convidadas, você ainda tem um caminho a percorrer, porque a autenticação NTLM não é suportada nativamente. Existem muitas maneiras de resolver isso. Usei o CNTLM para resolver essa parte do quebra-cabeça. Ele atua como cola entre os protocolos de autorização padrão e NTLM
Para uma explicação completa, dê uma olhada nesta entrada do blog sobre como configurar o vagrant por trás de um proxy corporativo
plugin-source
instalar de um GEM local, mas ainda não consegui fazer isso funcionar no Windows. Não tenho certeza se minha sintaxe está errada, tipo file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
? Eu também tentei a abordagem que @Martin mencionou acima, isso também não funcionou, pois ainda está tentando entrar em contato com rubygems nesse caso
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
a chave é --plugin-clean-sources
que faz com que ele não tente acessar rubygems
A pergunta não menciona o provedor de VM, mas no meu caso, utilizo o Virtual Box no mesmo ambiente. Há uma opção na GUI do Virtual Box que precisei habilitar para que funcione. Está localizado nas preferências do app Virtual Box: Arquivo >> Preferências ... >> Proxy . Depois de configurar isso, pude trabalhar sem problemas. Espero que essa dica também possa ajudar vocês.
Se você realmente deseja que suas configurações de proxy e instalações de plug-in estejam em seu Vagrantfile, por exemplo, se você está fazendo um Vagrantfile apenas para seu ambiente corporativo e não pode ter usuários editando variáveis de ambiente, esta foi a resposta para mim:
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
(Se não, apenas defina-as como variáveis de ambiente como as outras respostas dizem e consulte-as em env nas diretivas config.proxy.http (s).)
Alguns caracteres especiais na senha criam problemas no proxy. Faça um escape ou evite caracteres especiais na senha.