¿Cómo usar vagabundo en un entorno proxy?
vagrant http-proxy (11)
La red de mi compañía está usando proxy. Entonces cuando uso vagrant up
, me mostró un error de permiso 401.
¿Cómo puedo hacer algunos ajustes para usar vagabundo?
Algunos caracteres especiales en la contraseña crean un problema en el proxy. O escapa de ellos o evita tener caracteres especiales en la contraseña.
Deberá instalar el plugin 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, es probable que no pueda instalar complementos vagabundos cuando se encuentre detrás del proxy. Si ese es el caso, debe descargar la fuente, por ejemplo, desde 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, puede tener la fortuna de estar detrás de un proxy NTLM, lo que significa que si está utilizando * nix en sus máquinas invitadas, todavía tiene 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 la configuración de vagabundo detrás de un proxy corporativo
Detecta automáticamente la configuración de tu proxy e inyéctala en toda tu máquina virtual vagabunda
instalar el complemento de proxy
vagrant plugin install vagrant-proxyconf
agregue este conf a usted privado / usuario VagrantFile (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!
En MS Windows, esto funciona para nosotros:
set http_proxy=< proxy_url >
set https_proxy=< proxy_url >
Y el equivalente para * nix:
export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
Instalar proxyconf resolverá esto, pero detrás de un proxy no se puede instalar un plugin simplemente usando el comando vagrant plugin install
, Bundler generará un error.
configura tu proxy en tu entorno si estás usando un sistema de tipo Unix
export http_proxy=http://user:password@host:port
u obtenga una respuesta más detallada aquí: ¿Cómo usar bundler detrás de un proxy?
después de configurar este proxyconf
Instalar 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"
La pregunta no menciona al proveedor de VM, pero en mi caso, utilizo 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 chicos.
Si realmente desea que sus configuraciones de proxy y las instalaciones de complementos estén en su Vagrantfile, por ejemplo, si está creando un Vagrantfile solo para su entorno corporativo y no puede haber 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://.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úrelos como variables de entorno, como las otras respuestas, y consúltelas desde las directivas env en config.proxy.http (s).)
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 otros 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
entonces
export VAGRANT_HTTP_PROXY="http://user:password@host:port"
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=%http_proxy%
vagrant plugin install vagrant-proxyconf
entonces
set VAGRANT_HTTP_PROXY="%http_proxy%"
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
En un host de Windows
abrir un prompt 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 los que sean apropiados para su situación. Lo anterior permanecerá establecido hasta que cierre el indicador de CMD. Si le funciona, considere agregarlas permanentemente a las variables de su entorno para que no tenga que configurarlas cada vez que abra una nueva solicitud de CMD.
En Windows , debe establecer una variable para especificar la configuración proxy, descargue el complemento vagin-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 su configuración de proxy en el archivo vagabundo
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
y luego puede proporcionar la configuración de config.proxy.xxx en su Vagrantfile para ser independiente de las variables de configuración del entorno