La red de mi empresa está usando un proxy. Entonces, cuando lo uso vagrant up
, me mostró un error de permiso 401.
¿Cómo puedo hacer alguna configuración para usar vagrant?
La red de mi empresa está usando un proxy. Entonces, cuando lo uso vagrant up
, me mostró un error de permiso 401.
¿Cómo puedo hacer alguna configuración para usar vagrant?
vagrant plugin install vagrant-proxyconf
. Ahora lo sé .
Respuestas:
Instale proxyconf:
vagrant plugin install vagrant-proxyconf
Configure su 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 de la versión 2.0 y ha sido reemplazado por config.proxy.*
.
config.proxy.https = "https://yourproxy:8080"
es eso https
o http
en la segunda línea
Si su proxy requiere autenticación, es mejor configurar la variable de entorno en lugar de almacenar su contraseña en Vagrantfile. Además, su Vagrantfile puede ser utilizado fácilmente por otras personas que no estén detrás de un proxy.
Para Mac / Linux (en Bash)
export http_proxy="http://user:password@host:port"
export https_proxy="http://user:password@host:port"
vagrant plugin install vagrant-proxyconf
luego
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 set en lugar de exportar.
set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf
luego
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}
En las instrucciones de Mac / Linux.
La instalación de proxyconf resolverá esto, pero detrás de un proxy no puede instalar un complemento simplemente usando el comando vagrant plugin install
, Bundler generará un error.
configure su proxy en su entorno si está utilizando un sistema similar a Unix
export http_proxy=http://user:password@host:port
u obtenga una respuesta más detallada aquí: ¿Cómo usar el paquete detrás de un proxy?
después de esta configuración proxyconf
Detecte automáticamente la configuración de su proxy e inyéctelos en toda su VM vagabunda
instalar el complemento de proxy
vagrant plugin install vagrant-proxyconf
agregue esta configuración a su VagrantFile privado / usuario (se ejecutará para todos sus proyectos):
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
ahora sube tu VM!
vagrant reload
se solucionará una sola , y podría ser mejor para detectar la configuración del proxy de entrada / salida automáticamente al conectarse a nuevas redes, y alertar al usuario o hacer que funcione sin problemas. tmatilai.github.io/vagrant-proxyconf mencionó la desactivación, pero no estoy seguro de que aborde estos puntos.
En un host de Windows
abra un indicador de CMD;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
Sustituya la dirección y el puerto en los fragmentos anteriores por lo que sea apropiado para su situación. Lo anterior permanecerá configurado hasta que cierre el indicador de CMD. Si funciona para usted, considere agregarlos permanentemente a sus variables de entorno para que no tenga que configurarlos cada vez que abra un nuevo indicador de CMD.
En Windows , debe establecer una variable para especificar la configuración del proxy, descargar el complemento vagrant-proxyconf: (reemplace {PROXY_SCHEME} (http: // o https: //), {PROXY_IP} y {PROXY_PORT} por los valores correctos)
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
Después de eso, puede agregar el complemento para codificar la configuración de su proxy en el archivo vagabundo
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
y luego puede proporcionar la configuración config.proxy.xxx en su Vagrantfile para que sea independiente de las variables de configuración del entorno
Querrá instalar el complemento proxyconf, ya que esto hace que la configuración del proxy para las máquinas invitadas sea bastante sencilla en VagrantFile
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
Sin embargo, hay bastantes cosas que aún podrían salir mal. En primer lugar, probablemente no pueda instalar complementos vagabundos cuando esté detrás del proxy. Si ese es el caso, debe descargar la fuente, por ejemplo, de rubygems.org e instalar desde la fuente
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
Si resuelve ese problema, es posible que tenga la suerte de estar detrás de un proxy NTLM, lo que significa que si está utilizando * nix en sus máquinas invitadas, todavía le queda mucho camino por recorrer, porque la autenticación NTLM no es compatible de forma nativa Hay muchas formas de resolver eso. He usado CNTLM para resolver esa parte del rompecabezas. Actúa como pegamento entre los protocolos de autorización estándar y NTLM
Para un recorrido completo, eche un vistazo a esta entrada de blog sobre cómo configurar a vagabundo detrás de un proxy corporativo
plugin-source
para instalar desde un GEM local, pero aún no he logrado que esto funcione en Windows. No estoy seguro de si mi sintaxis es incorrecta, como file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
? También probé el enfoque que @Martin mencionó anteriormente, esto tampoco funcionó ya que todavía está tratando de contactar a rubygems en ese caso
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
la clave es --plugin-clean-sources
qué hace que no intente acceder a rubygems
La pregunta no menciona el proveedor de VM, pero en mi caso, uso Virtual Box en el mismo entorno. Hay una opción en la GUI de Virtual Box que necesitaba habilitar para que funcione. Se encuentra en las preferencias de la aplicación Virtual Box: Archivo >> Preferencias ... >> Proxy . Una vez que configuré esto, pude trabajar sin problemas. Espero que este consejo también pueda ayudarlos.
Si realmente desea que sus configuraciones de proxy e instalaciones de complementos estén en su Vagrantfile, por ejemplo, si está creando un Vagrantfile solo para su entorno corporativo y no puede tener usuarios editando variables de entorno, esta fue la respuesta para mí:
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
(Si no lo hace, simplemente configúrelas como variables de entorno como dicen las otras respuestas y refiérase a ellas desde env en las directivas config.proxy.http (s)).
Algunos caracteres especiales en la contraseña crean problemas en el proxy. Escapa de ellos o evita tener caracteres especiales en la contraseña.