TechReset

近期研究用BOSH部署cloud foundry,苦于BOSH的参考文献非常有限,为了实现知其然且知其所以然的目的,深入研究了BOSH的代码,希望能对更好的利用BOSH部署更多的系统,提供帮助。

BOSH 介绍

BOSH是VMware公司公司为了持续部署和运维Cloud foundry而开发的一款基于cloud的持续部署工具集,有许多令人振奋的功能。由于PaaS大多是建立在IaaS的基础之上,通过抽象和封装,对外界用户暴露基本的运行环境和服务,同时对用户屏蔽复杂的环境配置和中间件管理、虚拟机运维等IaaS需要面对的问题,进一步使用户的专注于业务。因此cloud foundry通常建立在IaaS环境之上,然而为了实现与IaaS的解耦,cloud foundry 并不直接与IaaS平台交互,而是通过扩展运行的集群环境中的service和DEA组件,实现动态扩展和管理。然而由于cloud foundry的组件众多,当出现需要底层扩容、版本更新、开发/产品环境管理等问题时,部署和运维开发难度较大,因此BOSH工具应运而生,具有以下特性。

个人认为是相比于puppet和chef等工具最大的特性。对于在云平台上部署产品,BOSH支持同IaaS API进行交互,从而管理虚拟机状态,在需要时能够启动/删除虚拟机,而对于用户将不再需要从IaaS平台准备虚拟机的繁琐步骤。并且由于BOSH是和IaaS平台交互,因此当IaaS平台/VM出现不稳定的状况时,在部署时能够快速反应。

对于需要编译才能运行的产品/包,BOSH通过和IaaS层交互实现对源代码的编译/管理。由于BOSH的虚拟机都是从同一个标准虚拟机镜像进行部署,支持编译可以保证代码和包可以正确地运行在目标环境中。

对于大多数的管理工具,都可以方便地保存历史部署和当前部署之间的版本,以及所依赖的包的管理,可以通过git等版本控制工具进行管理

BOSH的packages可以支持存放在文件系统,S3,swift等多种方式

能够比较部署版本之间的差别,进行持续增量部署

在开发环境和生产环境直接的切换可以简单地通过bosh target进行切换

下图更好地描述了BOSH与先有的一些配置管理工具和任务编排工具的比较

bosh features

BOSH Codes Overview

BOSH的代码保存在github上, 可以clone到本地进行学习。主要代码可以分成几个部分

BOSH 部署过程中的一些概念术语和部署步骤

详见本人另外一篇博客《BOSH Terms and Working Steps》