Come usare vagrant in un ambiente proxy?


92

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?


1
hai cercato su Google per questo?
Risposta Ghost

Scusa, non l'ho fatto vagrant plugin install vagrant-proxyconf. Ora lo so .
ithelloworld

Ma dopo aver installato e impostato l'URL del mio proxy sul file di configurazione, il risultato è stato lo stesso.401
ithelloworld

Risposte:


103

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"

4
config.env_proxy.*è deprecato a partire dalla versione 2.0 ed è stato sostituito da config.proxy.*.
Tomalak

config.proxy.https = "https://yourproxy:8080"è quello httpso httpnella seconda riga
eldos

2
potrebbe essere entrambe le cose. Nella mia azienda http e https passano attraverso lo stesso proxy che si trova in http
Alejandro Moreno

30
Ok quando eseguo 'vagrant plugin install vagrant-proxyconf' colpisce il mio proxy?
Mark Broadhurst

9
Solo una cosa da menzionare, se sei dietro un proxy, non puoi installare plugin.
user3426711

87

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

1
Inoltre, se non vuoi che rimanga nel tuo ambiente, puoi eseguire VAGRANT_HTTP_PROXY = " user: password @ host: port " vagabondando (senza l'esportazione o l'impostazione) per quella variabile d'ambiente su un solo comando.
maccam912

4
Ottima soluzione in quanto non richiede di inserire le impostazioni proxy nel Vagrantfile dove chiaramente non appartengono
emrass

7
Windows Powersehell v6.0: $ env: http_proxy = " user: password @ host: port " $ env: https_proxy = " user: password @ host: port " vagrant plugin install vagrant-proxyconf
Xolani

1
Per coloro che utilizzano Windows Git Bash, utilizzare le istruzioni per Mac / Linux (in Bash) .eg: export http_proxy = " user: password @ host: port "
Xolani

1
Ti sei dimenticato di (?) export VAGRANT_HTTPS_PROXY=${https_proxy}Nelle istruzioni per Mac / Linux.
Tom Hundt

53

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


10
Su Windows ho fatto quello che suggerisci ma ho usato "SET" invece di "export". Ha funzionato come previsto senza apportare modifiche al file Vagrant.
Daniel Watrous

28

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!


1
Mi piace questa risposta perché riutilizza le variabili env HTTP_PROXY esistenti che ho già dichiarato sul mio sistema operativo host. Morte al taglia-incolla !!
ripvlan

Sembra un buon modo per andare avanti. Che ne dici di disabilitarlo quando esci dal proxy? Ho scoperto che il plug-in vagrant ha perforato il linux ospite in più punti per far funzionare vari strumenti / app diversi. C'è un modo semplice per disabilitare? Tale che sarà anche almeno capovolto dal flag della riga di comando e un singolo vagrant reloadrisolverà, 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.
arntg

Non sono sicuro di capire, ma questo frammento verifica l'esistenza di http_proxy env var per configurare il plugin proxy. Se non usi * _proxy env dovrebbe essere 'non attivato' (?)
quazardous

11

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.


9

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


Solo un parametro aggiuntivo (rubygem da https a http) per evitare errori durante la verifica dei certificati SSL: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38

questa è una soluzione migliore delle precedenti, perché questa non necessita di nient'altro. Altre soluzioni (installa un plug-in) devono prima impostare l'accesso gratuito a Internet per farlo.
Raul Luna

5

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


Sarei interessato a sapere perché questo è stato votato verso il basso. Spiega come risolvere il problema e anche come risolvere potenziali altri problemi che potresti incontrare
Rune FS

non è più o meno la stessa risposta già fornita più volte? inoltre, non dice cosa fare per ottenere plug-in vagabondi se stai dietro a un proxy aziendale, afferma solo che sarebbe un problema e quindi collegarsi altrove.
eis

Sembra che ora dovrebbe essere vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Fonte
Martin

Ottima idea da utilizzare plugin-sourceper 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
Adam Burley,

2
Questo ha funzionato per me: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesla chiave è --plugin-clean-sourcesche fa sì che non provi ad accedere a rubygems
Adam Burley,

2

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.


1

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


1

Alcuni caratteri speciali nella password creano problemi nel proxy. Esegui l'escape o evita di inserire caratteri speciali nella password.


1

In PowerShell, puoi impostare le variabili di ambiente http_proxy e https_proxy in questo modo:

$env:http_proxy="http://proxy:3128"
$env:https_proxy="http://proxy:3128"

0

In MS Windows questo funziona per noi:

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

E l'equivalente di * nix:

export http_proxy=< proxy_url >
export https_proxy=< proxy_url >
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.