¿Cómo usar vagrant en un entorno proxy?

92

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?

ithelloworld
fuente
1
¿Has buscado esto en Google?
Respuesta fantasma
Lo siento, no lo hice vagrant plugin install vagrant-proxyconf. Ahora lo sé .
ithelloworld
Pero después de instalar y configurar mi URL de proxy en el archivo de configuración, el resultado fue el mismo
401

Respuestas:

104

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"
Alejandro Moreno
fuente
4
config.env_proxy.*está obsoleto a partir de la versión 2.0 y ha sido reemplazado por config.proxy.*.
Tomalak
config.proxy.https = "https://yourproxy:8080"es eso httpso httpen la segunda línea
eldos
2
podrían ser ambos. En mi empresa http y https pasa por el mismo proxy que está en http
Alejandro Moreno
30
Ok, cuando ejecuto 'vagrant plugin install vagrant-proxyconf', ¿golpea mi proxy?
Mark Broadhurst
9
Solo una cosa para mencionar, si está detrás de un proxy, no puede instalar complementos.
user3426711
87

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
rjdkolb
fuente
1
Además, si no quiere que permanezca en su entorno, puede hacer VAGRANT_HTTP_PROXY = " usuario: contraseña @ host: puerto " vagabundo (sin exportar o configurar) para esa variable de entorno en un solo comando.
maccam912
4
Gran solución, ya que no requiere colocar la configuración del proxy en Vagrantfile donde claramente no pertenecen
emrass
7
Windows Powersehell v6.0: $ env: http_proxy = " usuario: contraseña @ host: puerto " $ env: https_proxy = " usuario: contraseña @ host: puerto " instalación del complemento vagrant vagrant-proxyconf
Xolani
1
Para aquellos que usan Windows Git Bash, use las instrucciones de Mac / Linux (en Bash). Por ejemplo: export http_proxy = " usuario: contraseña @ host: puerto "
Xolani
1
Olvidó (?) export VAGRANT_HTTPS_PROXY=${https_proxy}En las instrucciones de Mac / Linux.
Tom Hundt
53

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

ping entre
fuente
10
En Windows hice lo que sugieres pero usé "SET" en lugar de "exportar". Funcionó como se esperaba sin realizar ningún cambio en Vagrantfile.
Daniel Watrous
28

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!

peligroso
fuente
1
Me gusta esta respuesta porque reutiliza las variables de env HTTP_PROXY existentes que ya he declarado en mi sistema operativo host. Muerte para cortar y pegar !!
ripvlan
Parece un buen camino a seguir. ¿Qué hay de deshabilitarlo al salir del proxy? Descubrí que el complemento vagabundo perforaba el Linux invitado en varios lugares para que funcionen varias herramientas / aplicaciones diferentes. ¿Existe una forma sencilla de desactivar? De modo que también se cambiará al menos de la bandera de la línea de comando y vagrant reloadse 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.
2016
No estoy seguro de entender, pero este fragmento prueba la existencia de http_proxy env var para configurar el complemento de proxy. Si no usa * _proxy env, debería estar 'no activado' (?)
quazardous
11

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.

aperitivos
fuente
9

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

l.cotonea
fuente
Solo un parámetro adicional (rubygem de https a http) para evitar errores al verificar los certificados SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38
esta es una mejor solución que las anteriores, porque esta no necesita nada más. Otras soluciones (instalar un complemento) deben configurar primero el acceso gratuito a Internet para poder hacerlo.
Raul Luna
5

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

Runa FS
fuente
Me interesaría saber por qué se votó en contra. Explica cómo resolver el problema y también cómo resolver otros problemas potenciales que pueda encontrar
Rune FS
¿No es esta la misma respuesta que ya se ha proporcionado varias veces? Además, no dice qué hacer para obtener complementos vagabundos si está detrás del proxy corporativo, solo dice que sería un problema y luego vincularlo a otro lugar.
Eis
Parece que ahora debería serlo vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Fuente
Martin
Es una gran idea usar plugin-sourcepara 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
Adam Burley
2
Esto funcionó para mí: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesla clave es --plugin-clean-sourcesqué hace que no intente acceder a rubygems
Adam Burley
2

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.

James
fuente
1

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)).

eis
fuente
1

Algunos caracteres especiales en la contraseña crean problemas en el proxy. Escapa de ellos o evita tener caracteres especiales en la contraseña.

Ernitingoel
fuente
1

En PowerShell, puede configurar las variables de entorno http_proxy y https_proxy así:

$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"
kal3v
fuente
0

En MS Windows esto nos funciona:

set http_proxy=< proxy_url >
set https_proxy=< proxy_url >

Y el equivalente de * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
csoria
fuente