分布在多台机器上的基础设施的最佳 Vagrant 设置

Best Vagrant setup for an infrastructure distributed over multiple machines

我想使用 Vagrant 和 Ansible 在本地镜像生产环境和基础设施。我已经设置了一个 Vagrant 文件以及我正在处理的每个 Project/Website (App1, App2, ...)。为了更容易维护和清晰,我想使用 one 服务器收集 statsd、日志和其他指标 + 提取备份。

+-----------+    +-----------+
|    App1   |    |  Metrics  |
|           +-+--+  Backups  |
+-----------+ |  +-----------+
              |               
+-----------+ |               
|    App2   | |               
|           +-+               
+-----------+   

由于 Metrics/Backup 服务器实际上并不是网站项目的一部分,我认为最好的方法是引入一个专用的 "backup project" 并带有自己的 Vagrant 文件。 现在关于此设置的一些 questions/concerns。

  1. 假设我正在开发 App1。要开始测试,我在 App1 和 Metric 服务器上都有 Vagrant up。有没有更好的方法来一次启动它们?
  2. 一般来说,将 vagrant 用于与基础设施相关的服务器(如备份)是否是一个好主意,这些服务器对于网站的运行不是必不可少的?
  3. 我可以通过私人网络 link 多个 "instances" Vagrant 吗?

我假设您将有一个 Vagrantfile 来管理所有 3 个环境(您可以阅读更多内容 http://docs.vagrantup.com/v2/multi-machine/

  1. 如果您在一个 Vagrantfile 中管理所有 3 个环境,vagrant up 将默认启动所有 3 个环境。您可以定义一个 autostart 属性 来定义默认情况下应该启动哪个,因此默认情况下您只能启动 2:

    config.vm.define "App1"
    config.vm.define "Backup"
    config.vm.define "App2", autostart: false
    

如果您管理不同的项目,您将需要运行vagrant up在每个项目上启动相应的虚拟机。

  1. 这取决于您的要求。如果你想尽可能地复制你的产品,你应该管理这个环境

  2. 是的,您可以通过 IP 或主机名进行通信(参见 Can Multiple Vagrant VMs communicate by VM hostname?