Heat简介


Heat是OpenStack的负责编排计划的主要项目。它可以基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。目前Heat自身的模板格式(HOT)正在不停的改进,同时也支持AWS CloudFormation 模板(CFN),HOT的目标是在不远的将来可以完全的替代CFN。
Heat提供了一个OpenStack的原生REST API和CloudFormation兼容的查询API。




Heat的工作原理

Heat主要是基于模板文件对应用进行管理,在模板文件中可以定义应用需要的资源,资源可以包括多种类型(CFN以及HOT支持的资源类型可能会存在一定的差别)例如IP,网络,镜像,用户,实例等。定义资源的同时也可以指定资源之间的依赖关系,例如使用云硬盘创建创建一个实例时,可以指定在创建实例时必须要创建云硬盘。

编辑完模板文件后,可以使用该模板文件创建Stack,创建的过程中Heat引擎会根据模板文件中定义的资源,调用对应的资源插件创建资源。创建完Stack之后,Heat可以管理Stack中所有资源的生命周期,例如可以删除资源,也可以通过更新模板的方式来更新Stack中资源的定义。

Heat的简单原理如下:


openstack 社区版为什么不更新了 openstack版本介绍_依赖关系

Heat引擎的执行逻辑大概如下:


openstack 社区版为什么不更新了 openstack版本介绍_依赖关系_02

Heat目前能做什么

Heat相对于OpenStack的其他项目(例如 Nova)而言还很年轻,受到重视应该是从H版本开始,所以它可能还存在很多的不足。下面简单的列一下在I版本中支持的特性

  • 对HOT,CFN模板格式的支持

HOT中的资源类型在Icehouse版本中有了较大的扩充,完整列表请参考 http://docs.openstack.org/developer/heat/template_guide/openstack.html

  • 通过Ceilometer实现自动收缩
  • 模板资源的更新
  • Heat引擎的Scaling
  • 支持Cloud-init资源的定义
  • 对Puttet,Chef等配置工具的支持