Zugriff auf die eigene Vagrant VM im lokalen Netzwerk

Avatar of Felix Nagel Felix Nagel - 31. Mai 2014 - Webentwicklung

Oft steht der geneigte Entwickler vor dem Problem das er die zu entwickelnde Applikation oder Webseite in der lokalen virtuellen Machine über ein mobiles Gerät (zum Bsp. auf dem Smartphone oder Tablet) testen muss.

 

Normalerweise ist die VM aber nur lokal über die IP oder einen lokale eingerichteten Hostnamen (Stichwort Hosts-Datei) erreichbar. Um trotzdem testen und mögliche Probleme fixen zu können wird dann immer wieder auf einen Test-Server deployed und direkt per FTP an den Dateien Änderungen vorgenommen. Spätestens bei mehreren Entwicklern kann das auf Dauer nicht gut gehen und ist zumindest ein unnötiger Mehraufwand.

 

Das kann man auch eleganter lösen. Im Folgenden erkläre ich euch wie ihr eure lokale mit Vagrant gebaute VirtualBox VM mit einfachen Mitteln im LAN erreichbar macht.

 

 

Ausgangssituation

Als Start gehe ich von einer funktionierenden VM auf Basis von Oracle VirtualBox und Vagrant aus. In meinem Fall wurde die Basis mit PuPHPet erstellt und nutzt Puppet als Provider. Das Prinzip sollte aber mit jeder auf Vagrant basierenden VM funktionieren.

 

Auf dem Host Computer ist meine VM ist mit Hilfe der Vagrant Konfiguration

 

config.vm.network "private_network", ip: "192.168.56.101"

 

über die IP 192.168.56.101 zu erreichen. Durch Anpassung der lokalen Hosts-Datei ist die VM auch über die Domain awesome.dev aufzurufen.

 

 

VM im LAN erreichbar machen

Um die VM im LAN erreichbar zu machen greifen wir auf die fowarded ports Funktionalität von Vagrant zurück:

 

Vagrant Konfiguration

 

 config.vm.network "forwarded_port", guest: 80, host: 8484

 

 

oder in der PuPHPet config.yml

 

network:
    private_network: 192.168.56.101
    forwarded_port:
        Kk1JTNV2RLxP:
            host: '8484'
            guest: '80'

 

 

Damit die Adresse richtig aufgelöst wird nutzen wir einen Dienst namens xip.io, der uns eine Art wildcard DNS anbietet. Um diesen einfach nutzen zu können solltet ihr einen weiteren Server-Alias für xip.io einrichten. Für die PuPHPet Konfigurationsdatei sieht das zum Beispiel so aus:

 

 

 vhosts:
    O1XkS8iM9WVt:
        servername: awesome.dev
        serveraliases:
            - awesome.dev
            - awesome.*.xip.io

 

 

Nach einem vagrant provision könnt ihr die VM von eurem Smartphone unter der URL http://awesome.YOUR_PUBLIC_IP.xip.io:8484 aufrufen, wobei YOUR_PUBLIC_IP durch die öffentliche IP eures Host Computer ersetz werden sollte.

 

Hinweis: Möglich das ihr in eurem Router DNS-Rebinding aktivieren müsst. Im Fall meiner FritzBox musste ich unter Heimnetz -> Netzwerkeinstellungen unter DNS-Rebind-Schutz die Domain xip.io eintragen.


Update: Ggf. kann es nötig sein einen vernünftigen DNS in den Router einzutragen (Anleitung für FritzBox). So scheint zum Beispiel der von Kabel Deutschland betriebene DNS eher so eine Art Zufallsgenerator zu sein.

  

Die Kommentarfunktion ist für diesen Artikel deaktiviert.

1 Kommentare

Marcel

03. Juni 2014

Einfacher gehts nicht. Sehr gut beschrieben und wirklich hilfreich! Besten Dank