Vagrant unter Windows hinter Proxy-Server einrichten

Vagrant unter Windows hinter Proxy-Server einrichten

Vagrant ist ein praktisches Werkzeug, um Linux-VMs auf jeder gängigen Plattform schnell und einfach erzeugen zu können. Wird das Tool hinter einem Proxyserver betrieben werden, sind einige Änderungen notwendig.

Nach der Installation gibt es zwei Möglichkeiten, den Proxy-Server zu setzen:

  • Umgebungsvariablen HTTP_PROXY/HTTPS_PROXY und ggf. NO_PROXY
  • Globales Vagrantfile im Benutzerprofil via Proxy-Plugin

Dieser Artikel beschäftigt sich mit der zweiten Variante, da dies die flexibelste und zur Fehlersuche einfachste Variante ist. Im Pfad %USERPROFILE%\.vagrant.d befindet sich eine Datei namens Vagrantfile. Sie wird global in jedem Vagrantfile eingebunden und eignet sich daher perfekt für solche globalen Konfigurationen.

Proxy-Plugin installieren und einrichten

Zunächst installieren wir ein Plugin, welches die Proxy-Konfiguration übernimmt. Da hierfür aber bereits eine Internetverbindung notwendig ist, muss der Proxy zunächst über die Umgebungsvariablen in der Shell gesetzt werden:

set HTTP_PROXY=http://user:password@proxyserver
set HTTPS_PROXY=%HTTP_PROXY%

Das Plugin wird mit folgendem Befehl in einer Admin-Shell installiert:

vagrant plugin install vagrant-proxyconf

Nun in %USERPROFILE%\.vagrant.d\Vagrantfile folgendes Snippet einfügen:

ENV['http_proxy'] = 'http://user:password@proxyserver'
ENV['https_proxy'] = ENV['http_proxy']

Vagrant.configure("2") do |config|
  if Vagrant.has_plugin?("vagrant-proxyconf")
    puts "Proxyconf Plugin geladen, setze Umgebungsvariablen"
    config.proxy.http     = ENV['http_proxy']
    config.proxy.https    = ENV['http_proxy']
    config.proxy.no_proxy = "localhost,127.0.0.1,internal"
  else 
	  puts "Fehler. Proxy-Conf plugin fehlt"
  end
end

Falls die Datei noch nicht existiert, muss sie händisch angelegt werden. Dadurch wird das Proxy-Plugin automatisch in jedem Vagrantfile konfiguriert. Ihr müsst nur das Plugin einbinden:

required_plugins = %w(vagrant-proxyconf)

Zu beachten ist, dass Sonderzeichen mit Percent-Encoding maskiert werden müssen. Aus einer Pipe „|“ wird somit beispielsweise „%7“.

MITM-Zertifikat vom Proxyserver einpflegen

Bricht ein MITM-Proxy den verschlüsselten HTTPS-Traffic auf, muss dessen Root-Zertifikat hinterlegt werden. Zunächst benötigen wir das Zertifikat. Dies kann beispielsweise bei einem Webserver über die Zertifikatskette im Browser ermittelt und in ein textbasiertes Format exportiert werden.

Den Inhalt des Zertifikats hängen wir an die Datei C:\HashiCorp\Vagrant\embedded\cacert.pem an. Unter Linux findet ihr sie in /opt/vagrant/embedded/cacert.pem.

Wichtig: Nach jedem Update muss das Zertifikat dort erneut angehängt werden, da Vagrant diese Datei mit den Standard-Zertifikaten überschreibt.

Leave a Reply