Wie verwende ich Vagrant in einer Proxy-Umgebung?

92

Das Netzwerk meines Unternehmens verwendet Proxy. Wenn ich also verwende vagrant up, wurde mir ein 401-Berechtigungsfehler angezeigt.

Wie kann ich eine Einstellung vornehmen, um Vagabund zu verwenden?

ithelloworld
quelle
1
Hast du dafür gegoogelt?
Ghost Answer
Entschuldigung, ich habe es nicht getan vagrant plugin install vagrant-proxyconf. Jetzt weiß ich es .
ithelloworld
Aber nachdem ich meine Proxy-URL für die Konfigurationsdatei installiert und eingestellt hatte, war das Ergebnis dasselbe.401
ithelloworld

Antworten:

103

Proxyconf installieren:

vagrant plugin install vagrant-proxyconf

Konfigurieren Sie Ihr Vagrantfile:

config.proxy.http     = "http://yourproxy:8080"
config.proxy.https    = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
Alejandro Moreno
quelle
4
config.env_proxy.*ist ab Version 2.0 veraltet und wurde durch ersetzt config.proxy.*.
Tomalak
config.proxy.https = "https://yourproxy:8080"ist das httpsoder httpin der zweiten Zeile
Eldos
2
es könnte beides sein. In meiner Firma gehen http und https durch denselben Proxy, der sich in http
Alejandro Moreno
30
Ok, wenn ich 'vagrant plugin install vagrant-proxyconf' starte, trifft es meinen Proxy?
Mark Broadhurst
9
Nur eine Sache zu erwähnen: Wenn Sie sich hinter einem Proxy befinden, können Sie keine Plugins installieren.
user3426711
87

Wenn Ihr Proxy eine Authentifizierung erfordert, ist es besser, die Umgebungsvariable festzulegen, als Ihr Kennwort in der Vagrant-Datei zu speichern. Auch Ihre Vagrant-Datei kann problemlos von anderen Personen verwendet werden, die sich nicht hinter einem Proxy befinden.

Für 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

dann

export VAGRANT_HTTP_PROXY=${http_proxy}
export VAGRANT_HTTPS_PROXY=${https_proxy}
export VAGRANT_NO_PROXY="127.0.0.1"
vagrant up

Verwenden Sie für Windows set anstelle von export.

set http_proxy=http://user:password@host:port
set https_proxy=https://user:password@host:port
vagrant plugin install vagrant-proxyconf

dann

set VAGRANT_HTTP_PROXY=%http_proxy%
set VAGRANT_HTTPS_PROXY=%https_proxy%
set VAGRANT_NO_PROXY="127.0.0.1"
vagrant up
rjdkolb
quelle
1
Wenn Sie nicht möchten, dass es in Ihrer Umgebung bleibt, können Sie VAGRANT_HTTP_PROXY = " Benutzer: Kennwort @ Host: Port " für diese Umgebungsvariable mit nur einem Befehl ausführen (ohne Export oder Festlegung).
maccam912
4
Tolle Lösung, da die Proxy-Einstellungen nicht in der Vagrant-Datei abgelegt werden müssen, wo sie eindeutig nicht hingehören
am
7
Windows Powersehell v6.0: $ env: http_proxy = " Benutzer: Passwort @ Host: Port " $ env: https_proxy = " Benutzer: Passwort @ Host: Port " Vagrant Plugin Installieren Sie Vagrant-Proxyconf
Xolani
1
Verwenden Sie für Benutzer von Windows Git Bash die Anweisungen für Mac / Linux (in Bash) .eg: export http_proxy = " Benutzer: Kennwort @ Host: Port "
Xolani
1
Sie haben (?) export VAGRANT_HTTPS_PROXY=${https_proxy}In den Mac / Linux-Anweisungen vergessen .
Tom Hundt
53

Durch die Installation von proxyconf wird dieses Problem behoben. Hinter einem Proxy können Sie jedoch kein Plugin installieren, indem Sie einfach den Befehl verwenden vagrant plugin install. Bundler gibt einen Fehler aus.

Stellen Sie Ihren Proxy in Ihrer Umgebung ein, wenn Sie ein Unix-ähnliches System verwenden

export http_proxy=http://user:password@host:port

Oder erhalten Sie hier eine ausführlichere Antwort: Wie verwende ich den Bundler hinter einem Proxy?

danach richten Sie proxyconf ein

Pingween
quelle
10
Unter Windows habe ich getan, was Sie vorgeschlagen haben, aber "SET" anstelle von "Export" verwendet. Funktionierte wie erwartet, ohne Änderungen an der Vagrant-Datei vorzunehmen.
Daniel Watrous
28

Erkennen Sie Ihre Proxy-Einstellungen automatisch und fügen Sie sie in Ihre gesamte Vagrant-VM ein

Installieren Sie das Proxy-Plugin

vagrant plugin install vagrant-proxyconf

Fügen Sie dieses Conf zu Ihrem privaten / Benutzer VagrantFile hinzu (es wird für alle Ihre Projekte ausgeführt):

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

Jetzt auf Ihrer VM!

quazardous
quelle
1
Diese Antwort gefällt mir, weil sie die vorhandenen HTTP_PROXY-Umgebungsvariablen wiederverwendet, die ich bereits auf meinem Host-Betriebssystem deklariert habe. Tod zum Ausschneiden !!
Ripvlan
Sieht nach einem guten Weg aus. Was ist mit dem Deaktivieren, wenn Sie den Proxy verlassen? Es wurde festgestellt, dass das Vagrant-Plugin das Gast-Linux an mehreren Stellen schlug, damit verschiedene Tools / Apps funktionieren. Gibt es eine einfache Möglichkeit zum Deaktivieren? Dies wird auch mindestens vom Befehlszeilenflag umgedreht und ein einzelnes vagrant reloadwird behoben. Es kann am besten sein, Proxy-Einstellungen beim Herstellen einer Verbindung zu neuen Netzwerken automatisch zu erkennen und entweder den Benutzer zu benachrichtigen oder es nahtlos zum Laufen zu bringen. tmatilai.github.io/vagrant-proxyconf erwähnte die Deaktivierung, ist sich jedoch nicht sicher, ob diese Punkte behoben werden .
Arntg
Ich bin mir nicht sicher, ob ich das verstehe, aber dieses Snippet testet die Existenz der http_proxy env var, um das Proxy-Plugin einzurichten. Wenn Sie * _proxy env nicht verwenden, sollte es 'nicht aktiviert' (?)
Sein
11

Auf einem Windows-Host

Öffnen Sie eine CMD-Eingabeaufforderung.

set HTTP_PROXY=http://proxy.yourcorp.com:80
set HTTPS_PROXY=https://proxy.yourcorp.com:443

Ersetzen Sie die Adresse und den Port in den obigen Ausschnitten durch die für Ihre Situation geeignete Adresse. Die obigen Einstellungen bleiben so lange bestehen, bis Sie die CMD-Eingabeaufforderung schließen. Wenn es für Sie funktioniert, sollten Sie sie dauerhaft zu Ihren Umgebungsvariablen hinzufügen, damit Sie sie nicht jedes Mal festlegen müssen, wenn Sie eine neue CMD-Eingabeaufforderung öffnen.

Snacks
quelle
9

Unter Windows müssen Sie eine Variable festlegen, um Proxy-Einstellungen festzulegen. Laden Sie das Vagrant-Proxy-Conf-Plugin herunter: (Ersetzen Sie {PROXY_SCHEME} (http: // oder https: //), {PROXY_IP} und {PROXY_PORT} durch die richtigen Werte.)

set http_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}
set https_proxy={PROXY_SCHEME}{PROXY_IP}:{PROXY_PORT}

Danach können Sie das Plugin hinzufügen, um Ihre Proxy-Einstellungen in der Vagrant-Datei fest zu codieren

vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org

Anschließend können Sie in Ihrer Vagrant-Datei die Einstellungen config.proxy.xxx angeben, um unabhängig von den Variablen der Umgebungseinstellungen zu sein

l.cotonea
quelle
Nur ein zusätzlicher Parameter (Rubygem von https zu http), um Fehler beim Überprüfen von SSL-Zertifikaten zu vermeiden: vagrant plugin install vagrant-proxyconf --plugin-source http://rubygems.org src
boly38
Dies ist eine bessere Lösung als die vorherigen, da diese nichts anderes benötigt. Andere Lösungen (Plugin installieren) müssen dazu zuerst den freien Internetzugang einstellen.
Raul Luna
5

Sie sollten das Plugin proxyconf installieren, da dies die Konfiguration des Proxys für die Gastcomputer in der VagrantFile ziemlich einfach macht

config.proxy.http     = "http://proxy:8888"
config.proxy.https    = "http://proxy:8883"
config.proxy.no_proxy = "localhost,127.0.0.1"

Es gibt jedoch einige Dinge, die immer noch schief gehen könnten. Erstens können Sie hinter dem Proxy wahrscheinlich keine Vagrant-Plugins installieren. In diesem Fall sollten Sie die Quelle herunterladen, z. B. von rubygems.org, und von der Quelle installieren

$ vagrant plugin install vagrant-proxyconf --plugin-source file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem

Wenn Sie dieses Problem lösen, haben Sie möglicherweise das Glück, hinter einem NTLM-Proxy zu stehen. Wenn Sie also * nix auf Ihren Gastcomputern verwenden, haben Sie noch einen weiten Weg vor sich, da die NTLM-Authentifizierung von Haus aus nicht unterstützt wird. Es gibt viele Möglichkeiten das zu lösen. Ich habe CNTLM verwendet, um diesen Teil des Puzzles zu lösen. Es fungiert als Klebstoff zwischen Standardautorisierungsprotokollen und NTLM

Schauen Sie sich diesen Blogeintrag an, um einen vollständigen Überblick über das Einrichten von Vagabunden hinter einem Unternehmens-Proxy zu erhalten

Rune FS
quelle
Mich würde interessieren, warum dies abgelehnt wurde. Es wird erklärt, wie Sie das Problem lösen und wie Sie potenzielle andere Probleme lösen können
Rune FS
Ist das nicht so ziemlich die gleiche Antwort, die bereits mehrfach gegeben wurde? Darüber hinaus wird nicht angegeben, was zu tun ist, um vagabundierende Plugins zu erhalten, wenn Sie einen Unternehmens-Proxy verwenden. Es wird lediglich angegeben, dass es sich um ein Problem handelt, und es wird dann eine Verknüpfung an einer anderen Stelle vorgenommen.
Eis
Sieht so aus, als ob es jetzt sein sollte vagrant plugin install file://fully/qualified/path/vagrant-proxyconf-1.x.0.gem. Quelle
Martin
Tolle Idee für die plugin-sourceInstallation von einem lokalen GEM aus, aber ich habe es noch nicht geschafft, dies unter Windows zum Laufen zu bringen. Ich bin nicht sicher, ob meine Syntax falsch ist, wie file://C:/path1/path2/vagrant-proxyconf-1.5.2.gem? Ich habe auch den Ansatz ausprobiert, den @Martin oben erwähnt hat. Dies hat auch nicht funktioniert, da in diesem Fall immer noch versucht wird, Rubygems zu kontaktieren
Adam Burley,
2
Das hat bei mir funktioniert: vagrant plugin install C:/folder1/folder2/vagrant-proxyconf-1.5.2.gem --plugin-clean-sourcesDer Schlüssel ist --plugin-clean-sources, dass es nicht versucht, auf Rubygems zuzugreifen
Adam Burley
2

In der Frage wird der VM-Anbieter nicht erwähnt, aber in meinem Fall verwende ich Virtual Box in derselben Umgebung. In der Virtual Box-GUI gibt es eine Option, die ich aktivieren musste, damit sie funktioniert. Befindet sich in den Einstellungen der Virtual Box-App: Datei >> Einstellungen ... >> Proxy . Nachdem ich dies konfiguriert hatte, konnte ich ohne Probleme arbeiten. Hoffe dieser Tipp kann euch auch helfen.

James
quelle
1

Wenn Sie tatsächlich möchten, dass sich Ihre Proxy-Konfigurationen und Plugin-Installationen in Ihrer Vagrant-Datei befinden, z. B. wenn Sie eine Vagrant-Datei nur für Ihre Unternehmensumgebung erstellen und Benutzer keine Umgebungsvariablen bearbeiten können, war dies die Antwort für mich:

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

(Wenn Sie dies nicht tun, legen Sie sie einfach als Umgebungsvariablen fest, wie in den anderen Antworten angegeben, und verweisen Sie auf sie in env in den Anweisungen config.proxy.http (s).)

eis
quelle
1

Einige Sonderzeichen im Kennwort verursachen Probleme im Proxy. Entkomme ihnen entweder oder vermeide Sonderzeichen im Passwort.

ernitingoel
quelle
1

In PowerShell können Sie die Umgebungsvariablen http_proxy und https_proxy wie folgt festlegen :

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

In MS Windows funktioniert dies für uns:

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

Und das Äquivalent für * nix:

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