具有多个可寻址 domain.locals 的 Vagrant 单盒

具有多个可寻址 domain.locals 的 Vagrant 单盒

我目前利用 Vagrant 和 Chef 为不同的应用程序配置单独的 Linux VM。

这些应用程序可从主机进行域寻址,无需在主机上设置任何其他内容。这是使用 Linux 客户机上的 avahi 实现的。然后主机通过客户机的主机名进行访问,例如:

myguest1.local -> VM#1
myguest2.local -> VM#2

我现在有另一个要安装的应用程序,为了复制生产服务器,应该在一个虚拟机内有 2 个可寻址的 Apache 虚拟主机,例如:

myguest3.local    
               -> VM#3
myguest4.local    

我是否也可以使用 Vagrant/Chef 完全实现这一点,而无需对主机进行任何修改?

答案1

您可以使用 Avahi.EntryGroup.AddRecord 通过 Avahi API 宣布别名:Python 示例

使用脚本的详细解决方案是在 SO 上提供

答案2

有一个 Vagrant 插件可以实现这个功能: vagrant-hostupdater 教程

从 github 页面摘录:

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.

还有vagrant-hostmanager,它支持 Windows 机器。我还没有用过它,所以欢迎任何反馈。

从其 github 页面摘录:

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.

因此,这两个插件似乎都自动将条目添加到/etc/hosts

答案3

它当然可以工作,但您需要在主机的 /etc/hosts 文件中手动设置虚拟主机的条目。这应该是主机上唯一需要的步骤。

相关内容