高级工作流程是:
- 在您的工作站上,您有一个 BOSH 版本的存储库
- 你在某个地方有一个 BOSH 导演
- 你在你的版本上工作,构建它,并将它上传给导演
- 您创建/修改引用已上传版本的部署清单
- 您使用清单运行
bosh deploy
,以便 Director 可以在“云”中创建“虚拟机”,并将您的版本中的软件位放在清单中描述的拓扑中的这些虚拟机上(并运行软件)
您需要告诉 Director 的三件事是干细胞、发布和部署清单。到目前为止,您已经知道什么是发布,它基本上是所有可以运行的软件。
stemcell 是所有部署的 VM 通用的基本操作系统映像(您可以在部署中拥有不同的 stemcell,但最常见的是让它们都相同);这是一个特殊的图像,其中预置了一些东西以方便使用 BOSH。首先,它有一个 BOSH 代理,这是 Director 与 VM 通信的方式,告诉它“下载这个包”、“下载这个作业”、“启动这个进程”等。
部署清单是一个 YAML 文件,您可以在其中指定几项内容:
- 您的
name
部署。
releases
作为此部署的一部分,您将部署的 以及特定版本的列表。
networks
要与已部署的 VM 关联的对象的描述。例如,如果您使用 AWS 等 IaaS,您可能会部署到 VPC,您可以在此处指定一些子网 ID。
- 的描述
jobs
,基本上是要部署的几个同构集群的列表,以及每个集群需要多少虚拟机/节点实例。假设您的版本由frontend
服务、backend
服务和database
服务组成。然后您可能想要部署一个frontend
只运行该frontend
作业的集群,并且有 5 个实例。您可能需要 10 个backend
集群实例,并且可能只需要 1 个database
. 清单中的每个job
都可以引用jobs
来自多个版本的多个(是的,这两个东西被命名为同一个东西是一个不幸的历史事故)。
- 配置
properties
,例如您的工作可能需要配置一堆参数和凭据,并且任何需要全局共享的属性都可以放在该properties
部分中。
BOSH-Lite 是一个 Vagrant VM,它本质上运行着你关心的两件事:
- BOSH 董事
- Garden,一个 Linux 容器管理器(如果您听说过 Docker,Garden 是类似的,但存在的时间更长,更适合生产用例)。Garden 在这里就像“云”一样,当 Director 需要创建一个 VM 时,它会委托给它的“Cloud Provider Interface”,而后者只是要求 Garden 创建一个容器。
BOSH-Lite 的优势在于,在笔记本电脑上的虚拟机中启动容器比在 AWS、vSphere、OpenStack 或其他真实数据中心中启动真正的虚拟机更便宜、更快。
首次工作流程(在启动和定位 BOSH-Lite 之后):
$ git clone YOUR_RELEASE_REPO
$ cd YOUR_RELEASE_REPO
$ bosh create release && bosh upload release
$ # create manifest, call it manifest.yml
$ bosh -d manifest.yml deploy
迭代:
$ # modify the code in your repo
$ bosh create release --force && bosh upload release
$ # modify your manifest if necessary
$ bosh -d manifest.yml deploy
如果您不熟悉 BOSH 清单,从头开始创建清单可能会很困难。您可能需要考虑做的一件事是按照您找到的为 Cloud Foundry 创建 BOSH-Lite 清单的说明进行操作。然后修改它以适合您的项目。
以下是有关部署清单架构的完整文档:https ://bosh.io/docs/deployment-manifest.html 。
如果您生成清单并遇到问题,您可以求助于GitHub 问题或邮件列表,这可能更适合在使清单正常工作方面获得来回帮助。