与 BOSH 有工作亲和力吗?

Is job affinity possible with BOSH?

假设我要部署 Mesos。 Mesos 依赖于 Zookeeper。如何使用 BOSH 在这两个作业之间建立关联。

理想情况下,我可以启动我的 Mesos 作业,并知道它应该与哪个 Zookeeper 实例通信以及如何通信。他们还应该 运行 在同一个虚拟机上。

是的,在您的部署清单中,您可以确定哪些作业与其他作业在 VM 上并置

jobs:
  - name: mesos_master
    templates:
      - name: mesos
        release: mesos-release
      - name: zookeeper
        release: zookeeper-release
    ...

这里有一些不幸的命名值得澄清。 release 基本上是您的源代码、出售的二进制文件以及进程启动脚本和配置文件的模板的集合。每个版本都有许多作业,其中一个作业主要由指向包(编译的源代码和出售的二进制文件)的指针和在运行时呈现的模板组成,以确定作业中封装的进程的启动脚本和配置文件。大多数作业封装单个进程(例如,etcd 作业可能只封装 etcd 服务器守护进程的包、启动脚本和配置文件)。

一个部署清单也有很多工作,每个工作都有很多模板。但是,部署作业中的模板引用了发布作业 =38=]。这些名称将来会变得明确,但要记住当前的命名法。以前每个部署作业只能定义一个发布作业,所以很简单:

jobs:
  - name: mesos
    release: mesos-release

因此没有歧义,但也无法在单个部署作业中具有多个不同发布作业的亲和力。

不确定您发现哪些文档没有用,也许是这些文档,但以防您错过它们:

这里还有一个不太大也不太小的example manifest。你会看到它有几个作业,其中一些作业只有一个 "template"(a.k.a. 发布作业),有些作业有 2 个或 3 个。