La rete della mia azienda utilizza il proxy. Quindi quando lo uso vagrant up
, mi ha mostrato un errore di autorizzazione 401.
Come posso impostare alcune impostazioni per usare vagrant?
vagrant plugin install vagrant-proxyconf
. Ora lo so .
La rete della mia azienda utilizza il proxy. Quindi quando lo uso vagrant up
, mi ha mostrato un errore di autorizzazione 401.
Come posso impostare alcune impostazioni per usare vagrant?
vagrant plugin install vagrant-proxyconf
. Ora lo so .
Risposte:
Installa proxyconf:
vagrant plugin install vagrant-proxyconf
Configura il tuo 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.*
è deprecato a partire dalla versione 2.0 ed è stato sostituito da config.proxy.*
.
config.proxy.https = "https://yourproxy:8080"
è quello https
o http
nella seconda riga
Se il tuo proxy richiede l'autenticazione, è meglio impostare la variabile d'ambiente piuttosto che memorizzare la tua password nel Vagrantfile. Inoltre il tuo Vagrantfile può essere utilizzato facilmente da altri che non sono dietro un proxy.
Per 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
poi
export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
Per Windows usa set invece di export.
set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf
poi
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}
Nelle istruzioni per Mac / Linux.
L'installazione di proxyconf risolverà questo problema, ma dietro un proxy non è possibile installare un plug-in semplicemente utilizzando il comando vagrant plugin install
, Bundler solleverà un errore.
imposta il tuo proxy nel tuo ambiente se stai usando un sistema simile a unix
export http_proxy=http://user:password@host:port
o ottieni una risposta più dettagliata qui: Come utilizzare il bundler dietro un proxy?
dopo questo imposta proxyconf
Rileva automaticamente le impostazioni del proxy e inseriscile in tutta la tua VM vagabonda
installa il plugin proxy
vagrant plugin install vagrant-proxyconf
aggiungi questo conf al tuo VagrantFile privato / utente (verrà eseguito per tutti i tuoi progetti):
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
ora attiva la tua VM!
vagrant reload
risolverà, e potrebbe essere il migliore per rilevare automaticamente le impostazioni proxy in / out alla connessione a nuove reti e avvisare l'utente o farlo funzionare senza problemi. tmatilai.github.io/vagrant-proxyconf ha menzionato la disabilitazione, ma non è sicuro che risolva questi punti.
Su un host Windows
aprire un prompt CMD;
set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443
Sostituisci l'indirizzo e la porta negli snippet precedenti con qualsiasi cosa sia appropriata per la tua situazione. Quanto sopra rimarrà impostato fino alla chiusura del prompt CMD. Se funziona per te, considera di aggiungerli in modo permanente alle tue variabili di ambiente in modo da non doverli impostare ogni volta che apri un nuovo prompt CMD.
Su Windows , è necessario impostare una variabile per specificare le impostazioni del proxy, scaricare il plug-in vagrant-proxyconf: (sostituire {PROXY_SCHEME} (http: // o https: //), {PROXY_IP} e {PROXY_PORT} con i valori corretti)
set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
Successivamente, puoi aggiungere il plug-in per codificare le impostazioni del proxy nel file vagrant
vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org
e quindi puoi fornire le impostazioni config.proxy.xxx nel tuo Vagrantfile per essere indipendenti dalle variabili delle impostazioni di ambiente
Ti consigliamo di installare il plugin proxyconf poiché questo rende la configurazione del proxy per le macchine ospiti piuttosto semplice nel VagrantFile
config.proxy.http = "http://proxy:8888"
config.proxy.https = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"
Tuttavia, ci sono alcune cose che potrebbero ancora andare storte. In primo luogo, probabilmente non puoi installare plug-in vagabondi quando sei dietro il proxy. In questo caso dovresti scaricare il sorgente, ad esempio da rubygems.org, e installarlo dal sorgente
$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem
Se risolvi il problema potresti avere la fortuna di trovarti dietro un proxy NTLM, il che significa che se stai usando * nix sulle tue macchine ospiti hai ancora molta strada da fare, perché l'autenticazione NTLM non è supportata nativamente Ci sono molti modi di risolverlo. Ho usato CNTLM per risolvere la parte del puzzle. Funge da collante tra i protocolli di autorizzazione standard e NTLM
Per una panoramica completa, dai un'occhiata a questo post di blog sull'impostazione di vagabondi dietro un proxy aziendale
plugin-source
per l'installazione da un GEM locale, ma non sono ancora riuscito a farlo funzionare su Windows. Non sono sicuro che la mia sintassi sia sbagliata, come file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem
? Ho anche provato l'approccio che @Martin ha menzionato sopra, anche questo non ha funzionato perché in quel caso sta ancora cercando di contattare rubygems
vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sources
la chiave è --plugin-clean-sources
che fa sì che non provi ad accedere a rubygems
La domanda non menziona il provider di VM, ma nel mio caso utilizzo Virtual Box nello stesso ambiente. C'è un'opzione nella GUI di Virtual Box che dovevo abilitare per farlo funzionare. Si trova nelle preferenze dell'app Virtual Box: File >> Preferenze ... >> Proxy . Una volta configurato questo, sono stato in grado di lavorare senza problemi. Spero che questo suggerimento possa aiutare anche voi ragazzi.
Se effettivamente desideri che le tue configurazioni proxy e le installazioni dei plugin siano nel tuo Vagrantfile, ad esempio se stai creando un Vagrantfile solo per il tuo ambiente aziendale e non puoi avere utenti che modificano le variabili di ambiente, questa è stata la risposta per 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
(Se non lo fai, impostale come variabili di ambiente come dicono le altre risposte e fai riferimento a esse da env nelle direttive config.proxy.http (s).)
Alcuni caratteri speciali nella password creano problemi nel proxy. Esegui l'escape o evita di inserire caratteri speciali nella password.