
Ich verwende derzeit Vagrant und Chef, um einzelne Linux-VMs für verschiedene Apps bereitzustellen.
Diese Apps sind vom Host aus domänenadressierbar, ohne dass auf dem Host etwas anderes eingerichtet werden muss. Dies wird durch die Verwendung von Avahi auf dem Linux-Gast erreicht. Der Host greift dann über den Hostnamen des Gasts zu, beispielsweise:
myguest1.local -> VM#1
myguest2.local -> VM#2
Ich muss jetzt eine weitere App installieren. Um den Produktionsserver zu replizieren, sollte sie über zwei virtuelle Apache-Hosts verfügen, die innerhalb einer VM adressierbar sind, wie zum Beispiel:
myguest3.local
-> VM#3
myguest4.local
Kann ich dies auch vollständig mit Vagrant/Chef erreichen, ohne dass Änderungen an der Hostmaschine erforderlich sind?
Antwort1
Den Alias könnt ihr über die Avahi API mit Avahi.EntryGroup.AddRecord bekannt geben:Python-Beispiel.
Eine detaillierte Lösung für die Verwendung des Skripts istbereitgestellt auf SO
Antwort2
Dafür gibt es ein Vagrant-Plugin: Vagrant-Hosts-Updater
Auszug aus der GitHub-Seite:
This plugin adds an entry to your /etc/hosts file on the host system.
On up, resume and reload commands, it tries to add the information, if its not already existant in your hosts file. If it needs to be added, you will be asked for an administrator password, since it uses sudo to edit the file.
On halt and destroy, those entries will be removed again.
Es gibt auchVagrant-Hostmanager, das Windows-Rechner unterstützt. Ich habe es nicht verwendet, daher ist jedes Feedback willkommen.
Auszug aus der GitHub-Seite:
vagrant-hostmanager is a Vagrant 1.1+ plugin that manages the /etc/hosts file on guest machines (and optionally the host). Its goal is to enable resolution of multi-machine environments deployed with a cloud provider where IP addresses are not known in advance.
Es scheint also, dass beide Plugins den Prozess des Hinzufügens von Einträgen zu automatisieren/etc/hosts
Antwort3
Das funktioniert sicherlich, aber Sie müssen die Einträge für die virtuellen Hosts in der Datei /etc/hosts Ihrer Hosts manuell festlegen. Dies sollte der einzige Schritt sein, der auf dem Hostcomputer erforderlich ist.